經驗交流

檢查使用者是否關閉 Cookie 功能

問題說明
 根據 Microsoft 的說法,Cookie 是:「網頁伺服器放到您硬碟上的極小型文字檔。它可以說是您的一種身份識別,但是該檔案不能執行,也不會散播病毒。這是您專有的,而且只有把該 cookie 放到您硬碟上的伺服器才能夠讀取。」
 不過,即使瀏覽器的製造商做了如此說明,仍然有部份使用者擔心自己的隱私曝光,而關閉 Cookie 的功能。
 一般而言,這對 PHP 的影響可能不大;不過,當我們在程式中使用到 Session 功能時,這項限制就會有顯著的影響了。
 當您啟用 Session 的功能時,在預設的情況下,PHP 會寫入一個名為 PHPSESSID 的 Cookie 在使用者的硬碟中,以便 PHP 去辨識不同的使用者。若使用者將 Cookie 的功能關閉的話,PHPSESSID 這個變數值會自動加在網址的後端,如:

http://xxx.xxx.xx.xx/xxxx.php?page=2&PHPSESSID=e348fd6ab680006a6c6da1d54a5c7b58

。如此一來,有些程式可能會因此而導致錯誤的狀況。
 目前有些網站因為類似的理由,而要求使用者不得關閉 Cookie 的功能。那麼,該如何檢查使用者是否已關閉 Cookie 呢?

我的做法
 我會在網站的首頁,或是帳號登入處寫入一個 Cookie 在使用者的硬碟中,然後在其他頁面或是帳號驗證頁去讀取這個 Cookie 的值。讀得到的話,代表 Cookie 功能是被開啟的;反之,則是被關閉了。

題外話:

 您知道您所到訪的網站,是否曾在您的電腦中寫入若干 Cookie 嗎?以下是一個簡單的測驗方法,提供給您參考。

 首先,請先進入某個網站,例如:www.loxa.com。成功連上該網站後,請在瀏覽器的網址列輸入如下的 JavaScript 語法:

JavaScript:alert(document.cookie)

 在按下 Enter 之後,畫面上會彈出一個警告視窗,上面所列的就是該站在您的電腦中留下的 Cookie 資料。

 如果您看到的訊息是空的,則可能是您關閉了 Cookie 功能,抑或是該網站目前沒有留下 Cookie 在您的電腦中。

經驗交流