2016-01-28 100 views
0

因此,我設法創建一個cookie,並在我的Windows 10電腦下3個不同的瀏覽器完美工作,它也可以完美地在safari和mac下的chrome下工作,但我的兩個朋友不能設法獲取cookie在他們的Windows 7瀏覽器下編寫。奇怪的PHP故障設置餅乾

操作系統是否影響cookie的寫入方式?

繼承人的代碼:

flush(); 
header("Location:http://www.go2battle.net/prueba.php"); 
setcookie("go2battle", $_POST['Usuario'], time()+31556926, "/", "www.go2battle.net"); 
exit(); 

而且我用寫在的var_dump的prueba.php餅乾:

var_dump($_COOKIE['go2battle']); 

對我來說,完全在我測試了它的每一個場景,讓我知道如果這些錯誤或與操作系統有些兼容性問題使得我的Windows 7朋友無法寫入Cookie,則返回值爲NULL。

謝謝。

+0

可能是Cookie在瀏覽器偏好設置上是錯誤的。 – Mehari

+0

他們確實啓用了Cookie,因爲他們可以在其他網站中使用它們。 – loney

回答

0

flush()告訴PHP立即輸出/打印任何緩衝內容,這意味着您不能再發送標題,並通過Set-Cookie標題設置cookie。

應該意味着你不應該得到與該代碼的cookie(或重定向),但我想你的問題意味着你的朋友實際上是在自己的機器上運行的代碼,而不是訪問您提供的網址。
這可以解釋這個悖論,因爲有可能輸出的問題是PHP E_WARNING,E_NOTICE等消息,並且您的朋友沒有這些消息時會禁用這些消息,因此您的輸出是打印的,而他們沒有。

最後一段只是一個猜測,不過,它也有可能是flush()有效地「禁止」頭髮送之後,在這種情況下,你可能只需要該cookie以另一種方式設置以前集。

+0

你可以在http://www.go2battle.net上用自己的憑據測試它: 用戶名:Loney 密碼:13571514 我刪除了flush()指令,導致在代碼中沒有真正需要它。 我運行的每一個測試我刪除每一個cookie,所以我不能有保存的cookie。 – loney

+0

用於登錄的表單位於網站的右上角,因爲它是用西班牙語顯示的,因此您可能無法理解它:S – loney