PHP基礎2-Cookie和Session

Cookie誕生的緣由

我們都知道Http都是無狀態的,但是通常我們需要識別訪問服務器的是哪個用戶.比方說:限制用戶權限,會員識別等等,我都需要區別對待。鑑於此,我們需要知道狀態的存在,於是Coolie誕生了。

什麼是 Cookie?

cookie 常用於識別用戶。cookie 是服務器留在用戶計算機中的小文件。每當相同的計算機通過瀏覽器請求頁面時,它同時會發送 cookie。通過 PHP能夠創建並取回 cookie 的值。

通常,我們Cookie是在瀏覽器的,就算同一個用戶在不同瀏覽器所生成的cookie值也是不同的。

 

但是由於特殊手段,我們可以做到僞造身份去訪問服務器,所以會產生跨域攻擊的可能性,這就是傳說中的跨站請求僞造(CSRF)的一種方式。

我們簡單點,怎麼存?

<?php

setcookie('name', 'value', time() + 3600,'/path','192.168.1.1');

怎麼取?

echo $_COOKIE['name'];

PHP其實已經把這些值當做頭,在請求的時候全部加上了,這一切都是自動的,你說爽不爽!

 

再來說下Session

PHP session 變量用於存儲有關用戶會話的信息,或更改用戶會話的設置。Session 變量保存的信息是單一用戶的,並且可供應用程序中的所有頁面使用。當您運行一個應用程序時,您會打開它,做些更改,然後關閉它。這很像一次會話。計算機清楚你是誰。它知道你何時啓動應用程序,並在何時終止。但是在因特網上,存在一個問題:服務器不知道你是誰以及你做什麼,這是由於 HTTP 地址不能維持狀態。通過在服務器上存儲用戶信息以便隨後使用,PHP session 解決了這個問題(比如用戶名稱、購買商品等)。不過,會話信息是臨時的,在用戶離開網站後將被刪除。如果您需要永久儲存信息,可以把數據存儲在數據庫中。Session 的工作機制是:爲每個訪問者創建一個唯一的 id (UID),並基於這個 UID 來存儲變量。UID 存儲在 cookie 中,亦或通過 URL 進行傳導。

上圖中的PHPSESSID就是用來獲取Cookie信息的key值。

session默認是關閉的,所以我們要先開始session 執行:session_start();然後通過$_SESSION獲取session的值。不想用了,可以調用 session_destroy();徹底終結,也可以unset你想去掉的某個字段。

我們可以通過phpinfo()函數來查找session的存儲方式和位置。

面試問:cookie失效了,session還有用嗎?session還是會再服務器存儲着,但是,你不知道存的是什麼,沒辦法區分相應的用戶,所以,也等於是失效了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章