2017-04-25 73 views
1

我想根據從插入到MySQL返回的值設置一個cookie。我知道插入已經工作,因爲我有一個mysqli_insert_id($鏈接)的值。但是,在我嘗試運行setcookie之前和之後,他的cookie都是一樣的。誰能幫忙?我使用的代碼是setcookie不工作3

echo mysqli_insert_id($link)."<br>"; 
print_r($_COOKIE); 
echo "<br>"; 
setcookie("id", mysqli_insert_id($link), time() + 60*60*24); 
print_r($_COOKIE); 
echo "<br>"; 
+0

**從手冊中** _setcookie()定義了一個cookie和其餘的HTTP頭一起發送。像其他標題一樣,Cookie必須在腳本輸出之前發送(這是協議限制)。這要求您在任何輸出之前先撥打此功能,其中包括和標記以及任何空格._ – RiggsFolly

回答

3

setcookie()需要什麼是呼應出到頁面的正文之前發送。例如:

echo 'test'; //At this point, headers are done, and the body has started 
setcookie(...); //Fails 

另一種解決辦法是使用ob_start()輸出到瀏覽器之前緩衝輸出到存儲器中。你可以這樣做:

ob_start(); 
echo 'test'; //Output is captured, and stored in memory 
setcookie(...); //Nothing has been output yet, so header is set properly 

ob_end_flush(); //We're done storing stuff in the buffer, output it to the browser. 
+0

謝謝 我沒有意識到這一限制 - 但沒有刪除echo&print_r它的作用完美 – Nik