我發現我得到這個錯誤的原因,我的代碼沒有錯,所以我從我的帖子中刪除它。php setcookie()不工作 - 無法修改標題信息
我的php頁面被編碼爲UTF-8,但它必須被編碼爲沒有BOM(字節順序標記)的UTF-8。
據我所知,BOM被解釋爲輸出,或者至少創建一個。
感謝您的所有答案,我的問題是重複的,我爲此道歉,我看了其他帖子,但還不夠遠。謝謝 !
我發現我得到這個錯誤的原因,我的代碼沒有錯,所以我從我的帖子中刪除它。php setcookie()不工作 - 無法修改標題信息
我的php頁面被編碼爲UTF-8,但它必須被編碼爲沒有BOM(字節順序標記)的UTF-8。
據我所知,BOM被解釋爲輸出,或者至少創建一個。
感謝您的所有答案,我的問題是重複的,我爲此道歉,我看了其他帖子,但還不夠遠。謝謝 !
如果您在使用setcookie之前完成了HTML輸出,則需要找到HTML輸出開始的位置。在該行的上方放置將開始輸出緩衝的功能ob_start Docs。
啓用輸出緩衝後,您的程序仍然可以「輸出」HTML,但不會立即發送。那麼你應該能夠調用的setcookie,沒有任何問題:
<?php
function login($username,$pwd)
{
$mysqli=dbconnect(); //no output
$query = "SELECT * FROM `users` WHERE `name`='$username' AND `password`='$pwd'";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
if($result->num_rows == 1) {
while($row = $result->fetch_assoc()) {
ob_start(); //set output buffering before setting cookies..
setcookie("ID", $row['userid'], time()+3600*24*365);
ob_end_flush(); // flush data
if (isset($_COOKIE['UNIQUE_ID']))
{echo 'Connected';}
else{echo 'No cookie today :(';}
}
}
dbclose($mysqli); //no output
}
?>
輸出緩衝器將被自動發送到瀏覽器時,你的腳本結束,所以沒有太多的越多,你需要關心,剩下的自動工作。
對不起,沒用。我需要'沖水'或類似的東西嗎? – blex 2013-03-15 02:10:21
是的,你可以嘗試在我給定的鏈接中使用輸出緩衝的任何組合..不要忘記每當你啓動你必須結束..所以當你使用ob_start()做flush數據。 – 2013-03-15 02:17:23
嘗試使用printf ,回聲,打印以迴應你的設置cookie,如果存在這將有助於如果cookie已經設置... – 2013-03-15 02:36:22
嘗試在打開標記之前刪除所有空白區域。
結束標籤是可選的,與白色空間被誤讀爲輸出
完整的錯誤消息可能會告訴你,當頭部都是一模一樣發送(什麼文件,什麼線)幫助。 – jeroen 2013-03-15 01:51:52
繼承人提示使用輸出緩衝功能來知道如何延遲腳本輸出。 – 2013-03-15 01:57:31
頭文件已經由(在/***/log.php:1開始的輸出)發送到/***/library.php在156行(log.php對應於第一個代碼塊和行156是我設置cookie的行) – blex 2013-03-15 01:57:44