問題描述
可能的重復(fù):
PHP 已經(jīng)發(fā)送的標(biāo)頭
當(dāng)我成功登錄一個(gè)頁面時(shí),我收到有關(guān)標(biāo)題已發(fā)送"的錯(cuò)誤消息.
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);
?>
所以基本上它的作用是如果您使用正確的信息登錄,它會(huì)設(shè)置三個(gè) cookie,您的用戶名、密碼和一個(gè)來檢查其他兩個(gè).
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)我成功登錄時(shí),出現(xiàn)以下錯(cuò)誤:
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
我做錯(cuò)了什么?
推薦答案
您有一個(gè)回聲,它可能在您的 setcookie
調(diào)用之前發(fā)生.
You've got an echo which could occur before your setcookie
call.
header
或 setcookie
或任何其他發(fā)送 HTTP 標(biāo)頭的內(nèi)容必須在任何其他輸出之前完成,否則您將收到警告/錯(cuò)誤.
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)記之后沒有尾隨空格.請(qǐng)記住...任何未包含在 <?php ... ?>
中的內(nèi)容都被 php 解析器視為輸出,并且會(huì)被回顯"出來.
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ā)送的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!