如果 Cookie 設定成功,客戶端就擁有了 Cookie 文件,用來保存 Web 伺服器為期設定的使用者資訊。假設我們在客戶端使用了 Windows 系統去瀏覽伺服器中的腳本, Cookie 檔案會被存放在 “ C:\Documents and Settings\ 使用者名稱\ Cookies” 資料夾下。 Cookie 是一個以普通文字檔案形式記錄資訊的,雖然直接使用文字編輯器就可以開啟瀏覽,但直接去閱讀 Cookie 檔案中的資訊是沒有意義的。而是當客戶再次造訪該網站時,瀏覽器會自動把與該網站對應的 Cookie 資訊全部傳送給伺服器。 從PHP5之後,任何從客戶端傳送過來的Cookie訊息,都會自動儲存在$_COOKIE 全域陣列中,所以在每個PHP腳本中都可以從該陣列中讀取對應的Cookie訊息。 $_COOKIE 全域數組儲存所有透過 HTTP 傳遞的 Cookie 資料內容,並以 Cookie 的識別名稱為索引值、內容值為元素。
在設定Cookie 腳本中,第一次讀取它的資訊並不會生效,必須刷新或到下一個頁面才可以看到Cookie 值,因為Cookie 要先設定到客戶端,再一次訪問時才能被發送過來,這是才能被獲取。所以要測試一個 Cookie 是否成功設定,可以再其到期之前 透過另一個頁面來存取其的值。
在PHP中可以直接透過超全域變數陣列 $_COOKIE[] 來讀取瀏覽器端的 Cookie 值。
實例程式碼如下所示:
<?php date_default_timezone_set('PRC'); //设置时区 if(!isset($_COOKIE['time'])){ //检测 Cookie 文件是否存在 setcookie('time',date('y-m-d H:i:s')); //设置一个 Cookie 变量 echo "第一次访问"; }else{ setcookie('time',date('y-m-d H:i:s'),time()+60); //设置保存 Cookie 失效的时间的变量 echo "上次访问的时间为:".$_COOKIE['time']; //输出上次访问网站的时间 echo '<br>'; } echo "本次访问的时间为:".date('y-m-d H:i:s'); //输出当前的访问时间 ?>
在上面的程式碼中,首先使用 isset()函數偵測 Cookie 檔案是否存在。如果不存在,則使用setcookie() 函數建立一個Cookie,並輸出對應的字串;如果Cookie 檔案存在,則使用setcookie() 函數設定檔案失效的時間,並輸出使用者上次訪問網站的時間,最後在頁面輸出本次方位網站的當前時間。
第一次執行實例時,由於沒有偵測到Cookie 文件,執行結果圖如下所示:
如果使用者在 Cookie 設定失效的時間(上面的實例為60秒)前刷新或再次造訪該網頁,運行結果如下:
#注意:如果未設定Cookie 失效的時間,則在關閉瀏覽器時自動刪除Cookie 資料。如果為 Cookie 設定了失效的時間,瀏覽器將會記住Cookie 數據,即使重新啟動了計算機,只要沒有到期,再造訪網站時也會獲得存取的數據資訊。
以上是php中如何讀取Cookie的詳細內容。更多資訊請關注PHP中文網其他相關文章!