Cookie
Cookie可以用來將網站資料存放在使用者本地端的電腦當中,當瀏覽器關閉後,下次再開啟,就可以透過存放在Cookie的資料,來恢復使用者上次瀏覽網站的狀態(例如:存放在購物車內的商品資訊)。這樣既可以節省使用者再次輸入資料的時間。而Cookie存在是有期限的,時間到了Cookie就會失效,在儲存Cookie的時候就可設定失效的時間。
Cookie的限制:
- 每個使用者的瀏覽器最多只能儲存300個Cookie。
- 同一伺服器,只能儲存20個Cookie。
- 每個Cookie最多只能存放4KBytes資料。
- 如果瀏覽器關閉Cookie功能,則PHP將無法使用Cookie。
儲存Cookie資料
透過呼叫setcookie()
函式來存放Cookie資料。
函式格式:
setcookie(Cookie名稱 [, Cookie資料][, 有效時間][, 儲存路徑][, 網域][, 安全性]);
範例:
<?php // 存放一筆cookie資料,名稱為account,內容為aaron setcookie('account', 'aaron'); // 存放一筆cookie資料,名稱為password,內容為12345678, 有效時間為600秒(10分鐘,目前時間戳記+600秒) setcookie('password', '12345678', time() + 600);
讀取Cookie資料
讀取Cookie資料可以透過內建變數$_COOKIE
,其使用方式與一般陣列相同。
<?php echo $_COOKIE['account']'; // 讀出名字為account的cookie echo $_COOKIE['password']'; // 讀出名字為password的cookie ?>
刪除Cookie資料
刪除Cookie資料可以透過指定Cookie資料的有小時間來達到,只要把Cookie的有效時間指定為現在(單位為時間戳記),該Cookie就會立刻失效,實務上,會將Cookie過期時間再減去一點時間來當有效時間,因為有效時間在過去,所以該Cookie會馬上被刪除。
範例:
<?php setcookie('account', 'aaron', time() - 120); // 刪除Cookie內account資料 setcookie('password', '12345678', time() - 120); // 刪除Cookie內password資料 ?>
Cookie資料有效時間
如果在呼叫setcookie()
函式儲存Cookie資料時沒有指定到期時間(第三個參數),則瀏覽器關閉後,該Cookie就會失效,如果想讓Cookie在瀏覽器開啟後還能繼續使用,必須設定有效時間,其設定的方式為使用時間戳記,可以使用時間相關函式來產生時間戳記。
範例:
<?php // 透過time()函式取得現在的時間戳記加上一段秒數來設定要過期的時間 setcookie('data', 'Hello PHP', time() + 600); // 直接使用mktime()函式來精確指定一個特定的時間,2015年6月1日 上午10點50分0秒到期 setcookie('save', '999', mktime(10, 50, 0, 6, 1, 2015)); // 直接使用strtotime()函式以字串的格式來精確指定一個特定的時間,2015年8月31日 下午5點50分50秒到期 setcookie('show', 'My Show Time', strtotime("2015-08-31-17-50-50")); ?>