PHP Session的用法
在 PHP 中,Session 是一種伺服器端的機制,伺服器使用一種雜湊表的結構(類似於 JSON)來儲存資訊。相比於儲存在客戶端的 Cookie,Session 將使用者互動資訊儲存在了伺服器端,使得同一個客戶端每次和服務端互動時,不需要每次都傳回所有的 Cookie 值,而是隻需要傳回一個 ID 即可,這個 ID 是客戶端第一次訪問伺服器的時候生成的,而且是唯一的。 |
還有一點就是,因為 Cookie 儲存在客戶端,所以使用者有權禁用 Cookie,而 Session 是儲存在伺服器端的,使用者無法禁用。
Session 在 Web 技術中佔有非常重要的地位。由於網頁是一種無狀態的連線程式,無法記錄使用者的瀏覽狀態,所以需要透過 Session 來記錄使用者的有關資訊,以供使用者再次以這個身份對 Web 伺服器發起請求。
Session 中文是“會話”的意思,與 Cookie 類似,都是用來儲存使用者相關資料的,比如使用者名稱、訪問許可權、登陸時間等。與 Cookie 最大不同之處在於 Cookie 是將資料存放於客戶端電腦之中,而 Session 則是將資料存放於伺服器系統之下。
當開啟一個 Session 時,PHP 將會建立一個隨機的 Session ID(例如“t5is1r7ct740dn390kuv3mpcse”),每個使用者的 Session ID 都是唯一的,而且 Session ID 與伺服器上儲存該使用者 Session 資料的文字檔名稱相同。
Session ID 會分別儲存在客戶端和伺服器端兩個位置。
客戶端,使用臨時的 Cookie 儲存在瀏覽器指定目錄中,Cookie 名稱預設為“PHPSESSID”;
伺服器端,以文字檔案形式儲存在指定的 Session 目錄中。
預設情況下,這個 Session ID 將作為一個 Cookie 傳送給 Web 瀏覽器,接下來 PHP 頁面將使用這個 Cookie 來訪問 Session 的資訊。
與 Cookie 相比,Session 擁有以下的優勢:
通常情況下 Session 更加安全,因為 Session 中的資料不會在客戶端和伺服器端來回重複傳遞;
Session 能夠儲存比 Cookie 更多的資訊;
在使用者禁用 Cookie 的情況下,使用一些方法任然能保持 Session 正常工作。
我們可以使用 PHP 建立和儲存 Session 中的資料。在建立一個 Session 後,所有 Session 變數在使用者一次會話期間裡訪問的所有頁面都有效。其工作機制如下圖所示。
Session 預設會以文字的形式儲存在伺服器的臨時目錄中,檔名以“sess_”作為字首,後面加上“Session ID”,例如“sess_t5is1r7ct740dn390kuv3mpcse”。
我們可以在 php.ini 中找到 Session 的相關配置,下面是一些常用的配置資訊:
session.save_handler = files #session 的儲存方式,預設是檔案,還可以是 redis 或者是 memcache session.save_path = "d:/wamp/tmp" #session 檔案的儲存目錄 session.use_cookies = 1 #是否使用 cookie 儲存 session_id session.name = PHPSESSID #客戶端儲存 session_id 的會話名 session.auto_start = 0 #是否自動開啟 session session.cookie_lifetime = 0 #設定客戶端中儲存的 session_id 的過期時間,以秒為單位 session.use_only_cookies=0 #是否只使用 cookie 來處理 session_id session.gc_divisor = 1000 #程式比率 session.gc_probability = 1 #垃圾回收的處理機率 session.gc_maxlifetime = 1440 #設定 session 檔案的過期時間
Session 在以下情況會被刪除,也就是失效:
Session 超時,超時指的是連續一定時間伺服器沒有收到該 Session 所對應客戶端的請求,並且這個時間超過了伺服器設定的 Session 超時的最大時間;
程式呼叫方法主動銷燬 Session;
伺服器關閉或服務停止。
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2694378/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP session的使用PHPSession
- PHP 的 SESSION 機制PHPSession
- laravel session 與 php session配置LaravelSessionPHP
- session的詳細說明和用法Session
- PHP的session,session檔案,及其過期的問題PHPSession
- php session redis 配置PHPSessionRedis
- V$SESSION_LONGOPS 檢視的用法SessionGo
- PHP中Session和Cookie的探究PHPSessionCookie
- php關於session的問題PHPSession
- PHP中引號的用法PHP
- php中的continue用法PHP
- PHP的ob_start();用法PHP
- php完全銷燬sessionPHPSession
- php跨域共享sessionPHP跨域Session
- php中split()用法PHP
- PHP中ZendCache用法的小例子PHP
- PHP中的連線字元. 的用法PHP字元
- Session會話管理(PHP,Apacha)Session會話PHP
- php實現SESSION跨域PHPSession跨域
- PHP 不得不提的 session 與 cookiePHPSessionCookie
- 將php的session存放到redis裡面PHPSessionRedis
- PHP中session和cookie的區別薦PHPSessionCookie
- php array_filter() 函式的用法PHPFilter函式
- Composer -- PHP依賴管理的用法PHP
- 另類用法 hyperf/session 實現 API tokenSessionAPI
- 一文搞懂Session和Cookie的用法及區別SessionCookie
- 解決php的session無法儲存到redisPHPSessionRedis
- 檢視鎖的資訊和alter system kill session的用法(小例子)Session
- php在yii2中的cookie用法PHPCookie
- PHP函式register_shutdown_function的用法PHP函式Function
- php的lavarel框架中join和orWhere的用法PHP框架
- PHP trim()函式 用法示例PHP函式
- php中Session使用方法詳解PHPSession
- PHP 中 bind 的用法 self 和 static 的區別PHP
- PHP yield 高階用法——網路PHP
- InfluxDB簡介與php用法UXPHP
- 關於 PHP Session ID 改變的問題解決PHPSession
- PHP session 儲存方式 file 改為 RedisPHPSessionRedis