标题('Location:/index.php');不工作

时间:2017-06-30 09:03:28

标签: php html redirect http-headers

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

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

的login.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 个答案:

答案 0 :(得分:3)

除了“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解释了它。

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