【问题标题】:Header ('Location: /index.php'); not working [duplicate]标头('位置:/index.php');不工作[重复]
【发布时间】:2017-12-04 04:31:37
【问题描述】:

当我在本地服务器上工作时,它不会引发任何问题,但在线它不会在登录后重定向用户,

我是一个初学者,并搜索了它无法正常工作的任何可能原因,并且可能有人已经以正确的方式回答了这个问题......

登录.php

<?php
  require_once 'header.php';


  $error = $user = $pass = "";

  if (isset($_POST['user']))
 {
   $user = sanitizeString($_POST['user']);
   $pass = sanitizeString($_POST['pass']);

     if ($user == "" || $pass == "")
     $error = "<span class='melding'>Iets vergeten?</span><br>";
     else
   {
    $result = queryMySQL("SELECT user,pass FROM members
    WHERE user='$user' AND pass='$pass'");

  if ($result->num_rows == 0)
  {
    $error = "<span class='melding'>Gebruikersnaam/Wachtwoord
              is niet correct.</span><br><br>";
  }
     else
     {
       $_SESSION['user'] = $user;
       $_SESSION['pass'] = $pass;

        header ('Location: /index.php');

      }
   }
  }

至于header.php

<?php
session_start();

  echo "<!DOCTYPE html><html><head>";


 require_once 'functions.php';


 if (isset($_SESSION['user']))
{
 $user     = $_SESSION['user'];

$loggedin = TRUE;
$userstr  = " ($user)";
 }
else $loggedin = FALSE;

 echo "<title>$appname</title><link rel='stylesheet' " .
   "href='css/styles.css' type='text/css'>"  .
   "<link rel='shortcut icon' type='image/png' href='img/favicon.png' 
sizes='110x100'>"  .

   "<link href='photouploadjquery/fileinput.css' media='all' 
rel='stylesheet' type='text/css' />"      .
   "<script 
src='http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'>
</script>"     .
   "<script src='photouploadjquery/fileinput.js' type='text/javascript'>
</script>"    .
   "<script 
src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js' 
type='text/javascript'></script>"    .

     "<script src='javascript.js'></script>" .

     "</head><body>"      ;




if ($loggedin)
{
echo  showUserSmall($user);
 }

  else
{
    echo

    file_get_contents ("includes/header.php" );


}

提前感谢您的任何建议和帮助,

【问题讨论】:

  • 它不是重定向意味着..您在页面上看到的任何错误..如果页面上没有可见内容,请检查查看源
  • 第 1 步:启用正确的 PHP 错误报告,以便 PHP 可以告诉您问题所在。
  • 当您使用 PHP 进行重定向时,无法执行任何先前的输出(回显、打印)。
  • queryMySQL() 在下面做什么?将这些字符串连接在一起的方式几乎肯定容易受到 SQL 注入攻击,除非该函数能够以某种方式确定哪些位是参数并生成正确参数化的查询以发送到数据库。就目前而言,您的代码看起来非常容易受到黑客攻击。
  • 当您遇到PHP问题时,请先查看您的php error log

标签: php html redirect http-headers


【解决方案1】:

除了“vergeten in te vullen”消息之外,您已经开始在 header.php 中输出大量 html。

您不应该这样做,因为它会强制您的服务器将标头(contenttype=html 等)发送到浏览器。

标头已发送错误很明显

所以把include行移到login.php的最后一行

Session_start() 可能要到 login.php 或者更好地区分用于 php 的 header.php 文件和用于启动 html 页面的 header.php。

-- 您可能会隐藏实际的错误消息,但在这里:How to fix "Headers already sent" error in PHP 进行了解释。

发送“内容类型标头”后,将无法再发送其他标头。将浏览器重定向到任何页面是一个标题,所以你去吧..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多