session
什麼是session
?php
session
在計算機中,尤爲在網絡應用中,稱爲"會話控制";具體到web
中的session
指的就是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所通過的這段時間,也就是用戶瀏這個網站所花費的時間。所以從上述的定義中能夠看到,session
是一個特定的時間概念。爲何要使用session
?web
HTTP
協議是一種無狀態的協議,即同一個客戶端的本次請求和上次請求沒有對應關係,http服務器並不知道這兩個請求來自同一個客戶端;優勢在於減輕服務器的壓力,缺點在於每次請求會傳輸大量重複的內容信息session
提供在PHP
腳本中定義全局變量的方法,使得這個全局變量在同一個session中對於全部的PHP
腳本文本內都有效。因此,session
是基於HTTP
服務器的用於保持狀態的方法;session
容許經過將數據存儲到HTTP
服務器中,以在整個用戶會話過程當中保持該數據;因此,session
不只是一個時間概念,還包括了特定的用戶和服務器;session
的工做原理sql
session_id
函數讀取此標識符。爲PHP
應用程序啓用會話狀態時,將檢查應用程序中每一個頁面請求是否有瀏覽器發送的sessionID
值。若是未提供任何sessionID
值,則PHP
將啓動一個新會話,並將該會話的sessionID
值隨響應一塊兒發送到瀏覽器。sessionID
值存儲在cookie
中,也能夠實如今URL
中存儲sessionID
sessionID
值來發送請求,會話就被視爲活動的,若是特定會話的請求間隔超過指定的超時值(以秒爲單位),則該會話被視爲已過時。若是使用過時的sessionID
值發送的請求將生成一個新的會話和session
相關的函數chrome
/* * session_start * 描述:啓動新會話或者重用現有會話 * 語法:bool session_start([array $options = []]) * ---在服務器上建立了一個sessionID,並建立了一個存儲session的文件 * 說明: * A. $options參數是一個關聯數組,若是提供的話,則會用其中的項目覆蓋"會話配置"中的配置選項; * B. 若是經過GET或者POST方式,或者使用cookie提交了會話ID,則會重用現有會話 * * session_id * 描述:獲取/設置當前會話ID * 語法:string session_id([string $id]) * 說明: * A. 若是指定$id參數的值,則使用指定值做爲會話ID * B. 若是設置$id參數的值,必須在調用session_start()函數以前調用session_id()函數 * * session_name * 描述:讀取/設置會話名稱 * 語法:string session_name([string $name]) * 說明: * A. 若是指定$name參數,session_name()函數會更新會話名稱,並返回原來的會話名稱; * B. 若是指定$name參數,必須在調用session_start函數以前調用session_name()函數 * * session_destroy * 描述:銷燬一個會話中的所有數據 * 語法:bool session_destroy() * * chrome瀏覽器cookies存儲地: * ~/Library/Application Support/Google/Chrome/Default/Cookies * 將Cookies加擴展名sqlite,而後用sqlite工具打開Cookies */
PHP
配置中session
片斷數組
/* * 在/Applications/XAMPP/etc/php.ini文件中能夠查看下列片斷: * * session.auto_start(boolean) * 描述:session.auto_start指定會話模塊是否在請求開始時自動啓動,默認爲0(不啓動),通常不進行修改該配置; * * session.name(string) * 描述:指定會話名以用作cookid的名字,只能由字母數字組成,默認爲'PHPSESSID'; * * session.save_handler(string) * 描述:定義用來存儲和獲取與會話關聯的數據的處理器的名字,默認爲files,即文件; * * session.save_path(string) * 描述:定義傳遞給存儲處理器的參數,若是選擇默認的files文件處理器,則值則是文件的路徑; * * session.gc_maxlifetime(integer) * 描述:指定過了多少秒以後數據就會被視爲"垃圾"並被清除; * * session.gc_probability(integer)、session.gc_divisor(integer) * 描述:定義在每一個會話初始化時啓動gc進程的機率,此機率經過gc_probability/gc_divisor計算,值爲1000,表示爲千分之一 * */
cookie
什麼是cookie
?瀏覽器
HTTP cookie
也叫Web cookie
或者瀏覽器cookie
,是服務器發送到用戶瀏覽器並保存在瀏覽器上的數據,它會在瀏覽器下一次發起請求時被攜帶併發送到服務器上;HTTP cookie
是HTTP
標頭的組成部分;session
是存儲在服務器端,cookie
是存儲在瀏覽器端cookie
的做用服務器
與cookie
相關的函數cookie
/* * setcookie函數 * 描述:設置cookie * 語法:bool setcookie(string $name[, string $value = ""[, int $expire = 0[, string $path = ""[, string $domain = ""]]]]) * 說明: * A. $name參數用於指定cookie名稱; * B. $value參數用於設置cookie值; * C. $expire參數用於設置cookie的生命週期(Unix時間戳); * D. $path參數用於設置服務器上可用cookie的路徑;若是設置爲"/",則表明在整個域名內都有效, * 若是設置爲"/foo/",則僅表明在域名內的/foo目錄及其子目錄內有效; * E. $domain參數用於設置cookie可用的域名範圍(包含子域名); * * 注意:會話期cookie是指瀏覽器關閉以後會被自動刪除,也就是它僅在會話期間有效; * 會話期cookie不須要指定過時時間(Expire); * * 持久cookie:指定一個特定的過時時間(Expire); * */