對php裡的Session和Cookie的一些理解
Cookie是客戶端的儲存空間,由瀏覽器來維持。具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我們也看到,由於才伺服器端保持狀態的方案在客戶端也需要儲存一個標識,所以session機制可能需要藉助於cookie機制來達到儲存標識的目的,但實際上還有其他選擇,比如說重寫URL和隱藏表單域。(搜尋的)
PHP Session
(引用)PHP session 變數用於儲存關於使用者會話(session)的資訊,或者更改使用者會話(session)的設定。Session 變數儲存單一使用者的資訊,並且對於應用程式中的所有頁面都是可用的。
PHP session 它通過在伺服器上儲存使用者資訊以便隨後使用(比如使用者名稱稱、購買商品等)。然而,會話資訊是臨時的,在使用者離開網站後將被刪除。
Session 的工作機制是:為每個訪客建立一個唯一的 id (UID),並基於這個 UID 來儲存變數。UID 儲存在 cookie 中,或者通過 URL 進行傳導。
把使用者資訊儲存到 PHP session 中之前,首先必須啟動會話。
<?php
session_start();
?>
儲存session的變數
儲存和取回 session 變數的正確方法是使用 PHP $_SESSION 變數
<?php session_start(); // 儲存 session 資料 $_SESSION['views']=1; ?> <html> <head> <meta charset="utf-8"> <title>####</title> </head> <body> <?php // 檢索 session 資料 echo "瀏覽量:". $_SESSION['views']; ?> </body> </html>
輸出結果:瀏覽量:1
銷燬session
刪除某些 session 資料,可以使用 unset() 或 session_destroy() 函式。
<?php
session_start();
if(isset($_SESSION['views']))
{
unset($_SESSION['views']);
}
?>
也可以用session_destroy()徹底刪除資料
<?php
session_destroy();
?>
usset($_SESSION);//這會刪除所有的$_SESSION資料,重新整理後,有COOKIE傳過來,但是沒有資料。
PHP cookie
(引用)cookie 常用於識別使用者。cookie 是一種伺服器留在使用者計算機上的小檔案。每當同一臺計算機通過瀏覽器請求頁面時,這臺計算機將會發送 cookie。通過 PHP,您能夠建立並取回 cookie 的值。
建立cookie
例
建立一個名為user的cookie,並賦值為like,並在1小時之後過期
<?php
setcookie("user","like",time()+3600);
?>
<html>
...
取回Cookie的值
例
<?php
// 輸出 cookie 值
echo $_COOKIE["user"];
// 檢視所有 cookie
print_r($_COOKIE);
?>
使用isset() 函式來確認是否已設定了 cookie:
<html>
<head>
<meta charset="utf-8">
<title>like</title>
</head>
<body>
<?php
if (isset($_COOKIE["user"]))
echo "歡迎 " . $_COOKIE["user"] . "!<br>";
else
echo "普通訪客!<br>";
?>
</body>
</html>
對於Cookie的讀取
可以呼叫request.getcookie要獲取瀏覽器傳送來的cookie,需要呼叫HttpServleRequest的getCookies方法,這個呼叫返回的是Cookie物件的陣列,對應由HTTP請求中Cookie報頭輸入的值。