2010-01-08 17 views
7

我有一個網站,我們要求用戶啓用JavaScript和Cookie之前,他們可以登錄到該網站。 (JS部分完成並完美工作。)目前,我們一直在設置一個cookie,然後將用戶重定向到另一個頁面(使用PHP)。這一直運行良好,但現在我們有一大堆已經爲我們重定向到的頁面添加了書籤的人,這些人當然沒有設置cookie,因此不允許他們登錄。正在使用jQuery Cookie插件進行測試的有效方式以查看是否啓用了Cookie?

所以我試圖找到另一個解決方案來檢查cookie,我正在考慮使用jQuery Cookie plugin。我想知道它是否在所有瀏覽器兼容(當然當啓用JS)?

+2

我還沒有在所有瀏覽器測試,但有jQuery和jQuery插件的整點是要跨瀏覽器兼容。另外,「所有瀏覽器」有點寬,我會考慮IE6和Opera在邊緣。 –

+0

不幸的是這個客戶我需要有IE6。歌劇我想,但我想我可以沒有。 –

回答

10

Thxs Shawn爲your answer,但不幸的是,因爲瀏覽器並不總是發送引用者,所以它不夠可靠,無法每次都使用它。因爲如果它沒有設置,那麼你最終會陷入循環。

我想到的另一個解決方案是重定向到一個完全獨立的頁面,該頁面本身檢查cookie是否被啓用(通過重定向到自己)。如果啓用了cookie,它會重新導向回原始頁面。如果他們不是,那麼它會重定向到一個關於該問題的頁面。我認爲這應該可行,但我不確定。最後,我嘗試了IE 6,7和8,Safari 4,Google Chrome 4,Firefox 3.5,Opera 10.2以及幾種不同配置中的jQuery Cooke插件,並且它們都適用於它們。下面是我使用的代碼:

$.cookie('test_cookie', 'cookie_value', { path: '/' }); 
if ($.cookie('test_cookie') == 'cookie_value') { 
    // cookie worked, set/enable appropriate things 
} 

它並不完美,但我想它會在95%的病例的工作。否則,它會失敗,只是不允許他們做任何事情。

+2

是的,我認爲這將適用於每個瀏覽器,這裏是另一個代碼示例http://blog.nickburwell.com/2009/05/check-if-cookies-are-enabled-on-client.html –

1

你可以檢查頁面的引用者,如果它不是你的主頁,你可以在那裏重定向它們。如果推薦人是您的首頁,並且沒有設置Cookie,您就會知道他們沒有啓用Cookie。

+0

我已經嘗試過這一點,但引用不在$ _SERVER數組中。有任何想法嗎?我試過了302和307兩種。 –

+0

Try @ $ HTTP_REFERER或getenv(「HTTP_REFERER」)。 –

+1

我確實發現了這個標題(「Location:...」);並沒有最終設置引用(至少在Safari中),所以我使用了一個完美運行的。 –

1

我喜歡這1個班輪功能:

function cookiesEnabled() { 
    return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid'; 
} 
相關問題