2010-07-31 81 views
2

我只是想問我是否需要設置一些東西來啓用我的託管cookie?php cookies問題

我有這個

<?php 
setcookie("TestCookie","Hello",time()+3600); 
print_r($_COOKIE); 
?> 

將在我的服務器是XAMPP功能完美。但是當我上傳到我的託管, 它不會運作..我該怎麼辦?或者我將添加到代碼中?

+1

在stackoverflow上可能有很多重複的問題(我沒有在快速搜索中找到)。所以讓我們開始另一個cookie/php清單。 – VolkerK 2010-07-31 10:50:01

+0

請..我需要一些答案.. :( – 2010-07-31 10:50:09

+0

什麼錯誤信息顯示? – saturngod 2010-07-31 10:52:21

回答

0

也可能是實際發送的cookie,但客戶端不發送回值在隨後的請求中發送給網絡服務器。
可能的原因:

  • 您的服務器的時鐘配置錯誤,因此時間()+ 3600是從客戶的角度來看,以往= >客戶端將立即刪除cookie。
  • cookie的失敗一般尾巴匹配檢查,在http://curl.haxx.se/rfc/cookie_spec.html
  • 搜索「尾匹配」客戶端配置不接受這些Cookie

有不同的瀏覽器,讓你看到了很多插件客戶端實際收到的http頭。例如。適用於Firefox的Firebug。使用它們來檢查響應中是否存在 a Set-cookie標頭。如果客戶因某些原因拒絕了它。如果沒有這樣的標題,你必須檢查爲什麼服務器沒有發送它。

+0

我的服務器時鐘是美國/中央-05:00可以嗎? – 2010-07-31 11:18:18

+0

我得到它的先生..謝謝你的答案..你的服務器的時鐘配置錯誤,因此從客戶的角度來看time()+ 3600過去=>客戶端將立即刪除cookie。這是我的問題的答案..我只刪除時間()+ 3600 – 2010-07-31 11:26:24

0

Cookie發送爲http響應標頭。這些標題只能在發送響應正文之前發送。
確保不發生輸出的setcookie()之前:

  • 無回聲,printf的,ReadFile的
  • 沒什麼< PHP之外? >標記,而不是單個空格或BOM在已經包含並執行相同請求的任何腳本之前setcookie()
  • 增加error_reporting級別並檢查警告/通知。這些消息通常記錄在一個文件中(例如error.log)。您可以將display_errors設置爲true以在輸出中查看它們。

PHP可以配置爲使用輸出緩衝區。在這種情況下,輸出不會直接發送到客戶端,而是保存在緩衝區中,直到它已滿,緩衝區被刷新或腳本結束(隱式刷新)。因此,直到緩衝區的內容實際發送到客戶端,您可以設置/修改/刪除http標頭,如Cookie。請參閱http://docs.php.net/outcontrol.configuration

+0

上面的代碼包含無回聲,printf的,ReadFile的..但仍無法工作,先生.. – 2010-07-31 11:07:06

+0

您是否增加了error_reporting級別?最簡單,最快(儘管可以說不是最好的)方法是將'error_reporting(E_ALL); ini_set('display_errors',1);'添加到腳本中的某處在's之前執行etcookie()'。 – VolkerK 2010-07-31 11:08:40

+0

我做到了,但沒有錯誤外出.. <?php setcookie(「TestCookie」,「Hello」,time()+ 33600); print_r($ _ COOKIE); echo date('e P'); error_reporting(E_ALL); ini_set('display_errors',1); ?> – 2010-07-31 11:20:29

0

使用Web開發人員工具欄查看Cookie。

我的問題天練PHP提醒我:

  • 有可能提前<?php
  • 免費託管服務提供商包括(「top_ads [當我用一些代理上傳這個發生在我身上]新線.php「),這是放在你的php文件的頂部[這發生在我身上時,我用免費託管]
+0

當我把include(「top_ads.php」)放在最上面時,出現無法打開流的錯誤:沒有這樣的文件或目錄 – 2010-07-31 11:09:13

0

如果我沒有弄錯...... Cookie不能在同一頁面訪問 - 必須在下一頁。一旦設置了Cookie,您需要通過標題()轉發到另一個頁面;功能,然後$ _COOKIE變量可以訪問。這並不意味着在同一頁面上工作。