2012-11-18 178 views
2

我有一個不會在遠程服務器上設置的cookie,可以在本地查找。沒有錯誤消息,var_dump讓我空,回顯爲空。Cookie未設置

<php 
setcookie('ymp','14', time()+3600); 
session_start(); 
?> 

我可以設置一個JavaScript cookie罰款。開始標記是頁面的第1行。

任何想法

感謝 加里

在編輯

我有一些意見,我貼在下面,它是一個3檔的過程。

頁之一是設置cookie,如上所述。

第二頁我有調試

<php var_dump($_COOKIE['ymp']); echo'<br />'.$_COOKIE['ymp'];?> 

第3頁,並再次這一切都在本地工作,我有

<?php 
if($_COOKIE['ymp']!=='14') 
{die('Sorry, you have not had your delightful little pastry yet.... try again.');} 

?>

我設置一個js cookie,並且改變了代碼來反映不同的cookie名稱,它工作正常。

我也是時間恢復至86400,因爲兩個小時的時差服務器的,但我不認爲這是真正需要做的。

感謝所有幫助

加里

+0

您是否知道您要設置一個cookie設置後,將到期3.6秒? –

+1

@BrunoVieira事實並非如此。 – Mike

+0

@BrunoVieira'time()+ 3600'是1小時!它不是毫秒。 –

回答

0

,直到一個新的頁面請求時,您不能讀取cookie的值。這是因爲cookie數據的值與頁面請求一起發送。所以它不可用於在之後訪問其值,直到被設置並且發出新的頁面請求。

此外,session_start()對餅乾沒有影響。他們是兩個不同的東西。 (會話通常使用cookie來存儲會話ID,但這不相關)。

+1

它顯然在本地服務器上工作,所以我不認爲問題不刷新頁面。 – Mike

+1

我想看看他們的所有代碼來驗證。 –

+0

這是一個3文件的過程,首先是應該設置cookie的頁面。在第二頁,僅僅爲了調試目的,如果有:<?php var_dump($ _ COOKIE ['ymp']); echo'
'。$ _ COOKIE ['ymp'];?>在第3頁上,再次說明這一切都在本地機器上運行,<?php if($ _ COOKIE ['ymp']!=='14'){die '對不起,你還沒有你的可愛的小糕點......再試一次。');} – Gary

0

這是相當奇怪 - 我認爲這可能有事情做與PHP配置。

看看setcookie函數的返回值是什麼 - 它may be FALSE如果在函數調用之前輸出已經被髮送。您在腳本開頭提到它是正確的,但是可能有其他實體正在輸出數據(服務器上預先執行的腳本可能?)

也有可能您的瀏覽器設置爲不接受來自某些域 - 檢查你的配置。

請提供其他相關的代碼,並說明如何檢查的cookies設置。

+0

我檢查了Chrome和Firefox開發人員工具中的cookie以及我爲檢查php.ini而創建的phpinfo()文件。我設置了js cookie,它顯示了所有3,php setcookie()沒有。我已經添加了一個路徑,域,重新配置過期到36000 ... nuthin – Gary

+0

您是否嘗試從'setcookie'輸出結果,看它是否至少報告成功? –

0

這個問題始終沒解決,我最後寫在同一臺主機上的一個新的文件到不同的域,給了cookie的一個不同的名稱和值(是有可能,一個3個字符的名稱的cookie有2位數值太小??),它按預期的方式工作。

謝謝大家的幫助......忙於做一個關於如何和如何的CSI調查。

加里

0

這可能是因爲你沒有指定路徑和/或cookie的域。試試這個:

<?php 
    setcookie('ymp','14', time()+3600, '/', 'yourdomain.com') 
?>