cookie使用
建立Cookie
在PHP中透過setcookie()函數建立Cookie。語法格式如下:
bool setcookie(string name[,string value[,int expire[, string path[,string domain[,int secure]]]]]])
讀取Cookie
在PHP中可以直接透過超級全域數組$_COOKIE[]來讀取瀏覽器端的Cookie值。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>PHP语言基础</title> </head> <body> <?php date_default_timezone_set("PRC"); header("Content-Type:text/html; charset=gb2312"); if (!isset($_COOKIE["visittime"])) { setcookie("visittime", date("y-m-d H:i:s")); echo "这是第一次保存Cookie"."<br>"; } else { setcookie("visittime", date("y-m-d H:i:s"), time() + 60); echo "上次访问时间为:" . $_COOKIE["visittime"]; echo "<br>"; } echo "本次访问时间:" . date("y-m-d H:i:s"); ?> </body> </html>
第一次執行結果:
這是第一次儲存Cookie
本次造訪時間:16-07- 16 08:26:25
第二次運行結果:
最後造訪時間為:16-07-16 08:26:25
本次造訪時間:16-07-16 08:27:25
上述程式碼,先透過isset()函數偵測Cookie檔案是否存在,不存在透過setcookie()函數建立一個Cookie文件,若存在設定Cookie的失效時間為60秒。
刪除Cookie
當Cookie被建立後,如果沒有設定它的失效時間,其Cookie檔案會在關閉瀏覽器時被自動刪除。如果要在關閉瀏覽器之前刪除Cookie文件,方法有兩種:一種是使用setcookie()函數刪除,另一種是在瀏覽器中手動刪除Cookie。以下分別進行介紹。
1.使用setcookie()函式刪除Cookie
刪除Cookie和建立Cookie的方式基本上類似,刪除Cookie也使用setcookie()函數。刪除Cookie只需要將setcookie()函數中的第二個參數設定為空值,將第3個參數Cookie的過期時間設定為小於系統的目前時間即可。
例如,將Cookie的過期時間設定為目前時間減1秒,程式碼如下:
setcookie("name", "", time()-1);
在上面的程式碼中,time()函數傳回以秒錶示的當前時間戳,把過期時間減1秒就會得到過去的時間,從而刪除Cookie。
2.在瀏覽器中手動刪除Cookie
在使用Cookie時,Cookie會自動產生一個文字檔案儲存在IE瀏覽器的Cookies暫存資料夾中。在瀏覽器中刪除Cookie檔案是非常方便的方法。
Cookie的生命週期
如果Cookie不設定時間,就表示它的生命週期為瀏覽器會話的期間,只要關閉IE瀏覽器,Cookie就會自動消失。這種Cookie被稱為會話Cookie,一般不保存在硬碟上,而是保存在記憶體中。
如果設定了過期時間,那麼瀏覽器會把Cookie儲存到硬碟中,再次開啟IE瀏覽器時會依然有效,直到它的有效期限逾時。
雖然Cookie可以長期保存在客戶端瀏覽器中,但也不是一成不變的。因為瀏覽器最多允許儲存300個Cookie文件,而且每個Cookie文件支援最大容量為4KB;每個網域最多支援20個Cookie,如果達到限制時,瀏覽器會自動地隨機刪除Cookies。
如果瀏覽器不支援 cookie 該怎麼辦?
如果您的應用程式涉及不支援 cookie 的瀏覽器,您就必須採取其他方法在應用程式中從一張頁面向另一張頁面傳遞訊息。一種方式是從表單傳遞資料(有關表單和使用者輸入的內容,稍早前我們已經在本教學中介紹過了)。
下面的表單在使用者點擊提交按鈕時向"welcome.php" 提交了使用者輸入:
<html> <body> <form action="welcome.php" method="post"> Name: <input type="text" name="name" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html>
取回"welcome.php" 中的值,就像這樣:
<html> <body> Welcome <?php echo $_POST["name"]; ?>.<br /> You are <?php echo $_POST["age"]; ?> years old. </body> </html>