2012-08-28 35 views
0

可能重複:
「Header Already Sent」 error in PHP的Cookie不會將

我有我的代碼,以便用戶指定的IGN(遊戲內名稱),然後將其存儲在cookie中。它不會工作。

<form action="index.php" method="GET"> 
    Minecraft IGN: 
    <input type="text" name="ign"> 
    <input type="submit" value="Submit"> 
</form> 

<?PHP 
error_reporting(0); 
$player = $_GET["ign"]; 
$exp = time()+86400; 
setcookie("ign", $player, $exp, "/", "", ""); 

if (isset($player)) { 
    echo "Your Minecraft Ingame Name Was Set To $player!"; 
} 
?> 

<br> 

<?PHP 
if (isset($player)) { 
    echo '<p>Click <a href="http://gophobia.com/phpsend/">Here</a> To Redeem Ur Prizes :3</p>'; 
} 
echo '<br />'; 
print_r($_COOKIE); 
?> 
+4

什麼是necrohhh? –

+0

固定。抱歉。這是我試圖設置的遊戲名稱,我嘗試手動沒有骰子。現在它回到$ player – Necrohhh

+0

結果是什麼? –

回答

2

這是一個很常見的錯誤,但很容易解決。

這是直接從手冊,但表示,它比我都做不到:

setcookie()函數定義一個cookie要與 HTTP標頭的其餘部分一起發送。與其他標題一樣,Cookie必須在腳本輸出 之前發送(這是一個協議限制)。此 要求您在任何輸出之前撥打此功能, 包括<html><head>標籤以及任何空格。

http://php.net/manual/en/function.setcookie.php

的關鍵是,它必須任何輸出之前調用。

+2

還要記住: Cookie在客戶端被設置。它在服務器上不可見,除非客戶端將請求發送回服務器並將cookie作爲請求的一部分。 因此:它不會在$ _COOKIE中顯示,直到您在設置完其他頁面後才加載。 – bencoder

+0

這對我有用=]。謝謝一堆。我知道這是愚蠢的:D – Necrohhh

1

您的代碼可能運行良好。該腳本在頁面加載時設置cookie。但是您必須再次分頁加載才能檢索該值,因爲設置Cookie和檢索其值無法在單個實例中運行。