問題描述
可能的重復(fù):
PHP 已經(jīng)發(fā)送的標(biāo)頭
當(dāng)我成功登錄一個頁面時,我收到有關(guān)標(biāo)題已發(fā)送"的錯誤消息.
I'm getting errors about "headers already sent" when I successfully log into a page.
這是我處理登錄的代碼:
Here's my code that deals with the login:
<?php
include("config.php");
$eUsername = $_POST['username'];
$ePassword = $_POST['password'];
$con = mysql_connect("localhost","MY_USERNAME","MY_PASSWORD");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("forum", $con);
$result = mysql_query("SELECT * FROM members WHERE username = '$eUsername'");
while($row = mysql_fetch_array($result))
{
if ($ePassword==$row['password']) {
echo "Correct";
setcookie("loggedIn", "true", time()+1000000000);
setcookie("logUsername", "$eUsername", time()+100000000);
setcookie("logPassword", "$ePassword", time()+100000000);
}
else {
echo "Incorrect username/password. Please try again.";
}
}
mysql_close($con);
if ($_COOKIE['loggedIn']=="true") {
$curURL=basename($_SERVER['SCRIPT_NAME']);
echo "You are already logged in. <a href='$curURL?lo=true'>Log out?</a>";
}
echo "<br /><br />";
print_r($_COOKIE);
?>
所以基本上它的作用是如果您使用正確的信息登錄,它會設(shè)置三個 cookie,您的用戶名、密碼和一個來檢查其他兩個.
So basically what this does is if you log in with the correct information, it will set three cookies, your username, password and one to check for the other two.
但是當(dāng)我成功登錄時,出現(xiàn)以下錯誤:
But when I do log in successfully, I get these errors:
警告:無法修改標(biāo)題信息 - 標(biāo)題已由(輸出開始于/home/scott/web/forum/index.php:18)在/home/scott/web/forum/index.php 中第 19 行發(fā)送
Warning: Cannot modify header information - headers already sent by (output started at /home/scott/web/forum/index.php:18) in /home/scott/web/forum/index.php on line 19
警告:無法修改標(biāo)題信息 - 標(biāo)題已由(輸出開始于/home/scott/web/forum/index.php:18)在/home/scott/web/forum/index.php 第 20 行
Warning: Cannot modify header information - headers already sent by (output started at /home/scott/web/forum/index.php:18) in /home/scott/web/forum/index.php on line 20
警告:無法修改標(biāo)題信息 - 標(biāo)題已由(輸出開始于/home/scott/web/forum/index.php:18)在第 21 行的/home/scott/web/forum/index.php 中發(fā)送
Warning: Cannot modify header information - headers already sent by (output started at /home/scott/web/forum/index.php:18) in /home/scott/web/forum/index.php on line 21
我做錯了什么?
推薦答案
您有一個回聲,它可能在您的 setcookie
調(diào)用之前發(fā)生.
You've got an echo which could occur before your setcookie
call.
header
或 setcookie
或任何其他發(fā)送 HTTP 標(biāo)頭的內(nèi)容必須在任何其他輸出之前完成,否則您將收到警告/錯誤.
header
or setcookie
or anything else that sends HTTP headers has to be done before any other output, or you'll get that warning/error.
此外,您應(yīng)該檢查 config.php 以確保在關(guān)閉 ?>
php 標(biāo)記之后沒有尾隨空格.請記住...任何未包含在 <?php ... ?>
中的內(nèi)容都被 php 解析器視為輸出,并且會被回顯"出來.
Also, you should check config.php to make sure there's no trailing whitespace after the closing ?>
php tag. Remember... anything not inluded in <?php ... ?>
is considered output by the php parser, and will get "echo'd" out.
這篇關(guān)于警告:無法修改標(biāo)頭信息 - 標(biāo)頭已發(fā)送的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!