Возможный дубликат: Заголовки, уже отправленные PHP
Я боролся с этой ошибкой для пока сейчас.
Для начала я просто подумал, что это пробел, но после дальнейших исследований я думаю, что это может быть проблема, подобная этой:
Ищите любые операторы, которые могут отправить вывод пользователю перед этим оператором заголовка. Если вы найдете один или несколько, измените свой код, чтобы переместить оператор заголовка перед ними. Сложные условные операторы могут усложнить проблему, но они также могут помочь решить проблему. Рассмотрим условное выражение в верхней части PHP-скрипта, которое определяет значение заголовка как можно раньше и устанавливает его там.
Я предполагаю, что заголовок include вместе с header() вызывает проблему, но я не уверен, как изменить код, чтобы избавиться от этой ошибки.
Как убрать ошибку?
<?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];
}
}
?>