警告:无法修改标头信息 - 已发送的标头

时间:2010-07-29 10:04:22

标签: php

我的代码 -

<?php

$username = $_POST['username'];
$password = $_POST['password'];

require 'database.php';

$q = "SELECT id FROM users WHERE user_name = '$username' AND password = '$password'";

$result = $mysqli->query($q) or die(mysqli_error());

if (mysqli_num_rows($result) == 1) {
setcookie('authorized', 1, 0);
header("Location: index.php");
} else {
header("Location: login.php");  
}

?>

警告:无法修改标头信息 - 已在C:\ xampp \ htdocs \ pics \ confirm_login_credentials.php中发送的标头(在C:\ xampp \ htdocs \ pics \ database.php:1处开始输出)第13行

there is no white space and BOM is also ASCI

4 个答案:

答案 0 :(得分:2)

output started at C:\xampp\htdocs\pics\database.php:1

这就是你应该寻找任何回应的东西。 (1表示第1行)

答案 1 :(得分:2)

您的database.php文件正在第1行输出内容。可能是一些空白字符或BOM。

答案 2 :(得分:1)

amanda,即使这个错误在第1行。结尾?&gt; PHP脚本中的标签是可选的。

最好永远不要放入这些内容,这样你就不会在你的结束时获得空格,然后就不能使用header()并获得这个经典的“Headers already sent”错误。

您可以使用headers_sent()函数来防止这种情况,该函数比仅发出header()调用更强大。

if(headers_sent() === false) {
    header("Location: myfile.php");
} else {
    die('I cant redirect because headers have already been sent');
}

关于您的问题,请检查所有相关文件中<?php标记之前的空白,最有可能是database.php。

答案 3 :(得分:0)

检查database.php文件的BOM。它应该是ANCI