2011-01-25 53 views
1

如何判斷某人是否在其瀏覽器中啓用了Cookie,最好的方法是什麼?我試過了:在PHP中測試Cookie

<?php 

     setcookie('cookies','yes',time()+7200); 
    if (!isset($_COOKIE['cookies'])) { 
     echo '<div class="error" style="float:right;">You must enable cookies and Javascript to use this site.</div>'; 
    } else { 
     echo ''; 
    } 


?> 

但是有時候即使啓用了cookies也會顯示警報。如果沒有啓用cookie,我只需要提醒一下。

+0

Cookie不起作用。參見[在PHP中檢測到cookie的問題](http://stackoverflow.com/questions/4563819/problem-with-cookies-detection-in-php)。 – Gumbo 2011-01-25 17:29:17

回答

6

您的代碼不起作用的原因是因爲Cookie隨請求一起發送。您正在嘗試的代碼可以正常工作,但setcookie必須與isset調用的請求不同。嘗試在調用這兩個函數之間調用重定向。

+0

反正有沒有重定向做到這一點?也許另一種方法? – sehummel 2011-01-25 17:29:20

2

這是因爲您的Cookie是在您的請求發送到瀏覽器的同時設置的。 這意味着,即使執行了setcookie()之前的腳本結束了Cookie設置瀏覽器收到請求。

要做到這一點,你需要重定向到一個含有微不足道的參數的頁面,然後檢查cookie。

更靈活的解決方案是檢入javascript。