警告:无法修改标头信息 - 错误已发送的标头
我已经在这个错误中挣扎了一段时间。
首先,我只是认为这是空白,但经过进一步的研究,我认为这可能是一个类似于下面的问题:
在此标头语句之前查找可以向用户发送输出的任何语句。如果找到一个或多个,请更改代码以将 header 语句移到它们之前。复杂的条件语句可能会使问题复杂化,但它们也可能有助于解决问题。考虑在 PHP 脚本顶部使用一个条件表达式,该表达式尽早确定标头值并将其设置在那里。
我猜包含标头与head()一起导致问题,但我不确定如何重新排列代码以摆脱此错误。
如何删除错误?
<?php
$username = $password = $token = $fName = "";
include_once 'header.php';
if (isset($_POST['username']) && isset($_POST['password']))
$username = sanitizeString($_POST['username']);
$password = sanitizeString($_POST['password']); //Set temporary username and password variables
$token = md5("$password"); //Encrypt temporary password
if ($username != 'admin')
{
header("Location:summary.php");
}
elseif($username == 'admin')
{
header("Location:admin.php");
}
elseif($username == '')
{
header("Location:index.php");
}
else
die ("<body><div class='container'><p class='error'>Invalid username or password.</p></div></body>");
if ($username == "" || $token == "")
{
echo "<body><div class='container'><p class='error'>Please enter your username and password</p></div></body>";
}
else
{
$query = "SELECT * FROM members WHERE username='$username'AND password = '$token'"; //Look in table for username entered
$result = mysql_query($query);
if (!$result)
die ("Database access failed: " . mysql_error());
elseif (mysql_num_rows($result) > 0)
{
$row = mysql_fetch_row($result);
$_SESSION['username'] = $username; //Set session variables
$_SESSION['password'] = $token;
$fName = $row[0];
}
}
?>