1. 程式人生 > >對php裡的Session和Cookie的一些理解

對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報頭輸入的值。