2013-03-18 60 views
0

編輯:我的壞,它是(服務器端)緩存問題。謝謝您的幫助。PHP沒有檢測到由Javascript設置的cookie

我有一個網站,當訪問首先檢查cookie「intro」,然後如果它不存在,重定向到一個介紹頁面。

<?php if (!isset($_COOKIE["intro"])) { 
header('Location: http://explainasterisk.com/intro/') ; } ?> 

當用戶點擊「開始」按鈕的介紹頁面上,cookie的使用設置:

<script type="text/javascript"> 
      $(document).ready(function() { 
       $('.home').click(function() { 
        scroll(0, 0); //scrolltotop 
        var intro = "intro" //setting cookiename variable 
        var today = new Date(); 
        var expire = new Date(); 
        expire.setTime(today.getTime() + 3600000*24*365); 
        document.cookie = intro+"=1" 
            + ";expires="+expire.toGMTString();     
        $('.home').slideUp(3000, function() { //slideUp function 
         //Nothing 
        }); 
       }); 
      }); 
</script> 

在Opera和Chrome瀏覽器中的cookie被設定,但是當我點擊跳過介紹頁面上的按鈕(將我帶回原始頁面),我只是重定向到Intro頁面。你可以在這裏看到這裏:http://explainasterisk.com/

回答

0
if (!isset($_cookie["intro"])) { 

是不正確的數組名稱。它應該是大寫,像這樣的

if (!isset($_COOKIE["intro"])) { 

參考:$_COOKIE

感謝布拉德·克里斯蒂。

+0

_Obligatory參考['$ _COOKIE'(http://www.php.net/manual/en/reserved.variables.cookies.php)_ – 2013-03-18 13:52:15

+0

改變了它,仍然無法正常工作。不過謝謝。 – jackson5 2013-03-18 13:54:35

0

問題的根源在於代碼的開頭沒有error_reporting(E_ALL);(開發環境中爲ini_set('display_errors','On');)。

如果你有它,PHP將顯示錯誤消息,沒有$ _cookie變量。

0

您可能想嘗試給jquery-cookie一個嘗試,因爲它使得在javascript中設置和處理cookie以及過期日期變得更容易。

一個簡單的一行:

$.cookie("[cooke name]", "[value]", { expires: [time in days]); 

例如爲:

$.cookie("intro", "set", { expires: 365); 

你的PHP代碼段看起來很好,我和 - 如果cookie設置正確 - 應該工作。

0

嘗試添加路徑和域名的cookie的末尾:

path=/; domain=.<?php echo $_SERVER['HTTP_HOST']; ?> 
0

在JavaScript中的cookie被設定域.explainasterisk.com

讀取cookie之前那麼試試這個。

ini_set("session.cookie_domain", ".explainasterisk.com");