什么是SESSION
SESSION在計算機(jī)中,尤其是在網(wǎng)絡(luò)應(yīng)用中,稱為"會話控制"
具體到Web中的SESSION指的就是用戶在瀏覽某個網(wǎng)站時,從進(jìn)入網(wǎng)站到瀏覽器關(guān)閉所經(jīng)歷的這段時間, 也就是用戶瀏覽這個網(wǎng)站所花費(fèi)的時間.因此從上述的定義中可以看到,SESSION是一個特定的時間概念.
為什么使用Session?
1.HTTP協(xié)議是一種無狀態(tài)的協(xié)議;即同一個客戶端的本次請求和上次請求沒有對應(yīng)關(guān)系,HTTP服務(wù)器并不知道這兩個請求來自同一個客戶端
2.SESSION提供在PHP腳本中定義全局變量的方法,使得這個全局變量在同一個SESSION中對于所有的PHP腳本文件內(nèi)都有效,所以,SESSION是基于HTTP服務(wù)器的用于保持狀態(tài)的方法
3.SESSION允許通過將數(shù)據(jù)存儲在HTTP服務(wù)器中,以在整個用戶會話過程中保持該數(shù)據(jù);所以,SESSION不僅是一個時間概念,還包括了特定的用戶和服務(wù)器.
session_start();
$_SESSION["username"]="zhangsan";
session_start();
echo $username;
SESSION的工作原理
session_id
與SESSION相關(guān)的函數(shù)
session_start
描述:啟動新會話或者重用現(xiàn)有會話
語法: bool session_start([array $options = []])
說明:A:$options參數(shù)是一個關(guān)聯(lián)數(shù)組,如果提供的話,則會用其中的項目覆蓋"會話配置"中的配置選項
B:如果提供GET或者POST方式,或者使用cookie提交了會話ID,則會重用現(xiàn)有會話.
<? php
header('content-type:text/html;charset:utf-8');
session_start(); //開啟session會話
$_SESSION["username"]="zhangsan"; //存儲session數(shù)據(jù)
session_id
描述:獲取/設(shè)置當(dāng)前會話id
語法:string session_id([string $id])
說明:
A:如果指定$id參數(shù)的值,則使用指定值作為會話id
B:必須在調(diào)用session_start()函數(shù)之前調(diào)用session_id()函數(shù)
<? php
header('content-type:text/html;charset=utf-8');
session_start(); //開啟session會話
$_SESSION["username"]="zhangsan"; //存儲session數(shù)據(jù)
echo "sessionId是:",session_Id();
session_name
描述:讀取/設(shè)置會話名稱
語法:string session_name([string $name])
說明:
A:如果指定$name參數(shù),session_name()函數(shù)會更新會話名稱,并返回原來的會話名稱;
B:必須在調(diào)用session_start()函數(shù)之前調(diào)用session_name()函數(shù);
<? php
header('content-type:text/html;charset=utf-8');
session_name(''hello_");
session_start();
session_destory()
描述:銷毀一個會話中的全部數(shù)據(jù)
語法:bool session_destory(void)
測試發(fā)現(xiàn)并不會馬上銷毀文件,其實跟瀏覽器的配置有關(guān).
PHP配置中的SESSION片段
session.auto_start(boolean)
描述:session.auto_start指定會話模塊是否在請求開始時自動啟動.默認(rèn)為0(不啟動)
session_name(string)
描述:指定會話名以用做cookie的名字,只能由字母數(shù)字組成,默認(rèn)為PHPSESSIONID;
session.save_handler(string)
描述:定義用來存儲和獲取與會話關(guān)聯(lián)的數(shù)據(jù)的處理器的名字,默認(rèn)為files;
session.save_path(string)
描述:定義傳遞給存儲處理器的參數(shù),如果選擇默認(rèn)的files文件處理器,則值是文件的路徑
session.gc_maxlifetime(integer)
描述:指定過了多少秒之后數(shù)據(jù)就會被視為"垃圾"并被清除
session.gc_probability(integer)| session.gc_divisor(integer)
描述:定義在每個會話初始化時啟動gc(garbage collection ,垃圾回收)進(jìn)程的概率,此概率通過gc_probability/gc_divisor計算;
Cookies
什么是Cookie
HTTP Cookie(也叫Web cookie或者瀏覽器cookie)是服務(wù)器發(fā)送到用戶瀏覽器并保存在瀏覽器上的數(shù)據(jù),它會在瀏覽器下一次發(fā)起請求時被攜帶并發(fā)送到服務(wù)器上;HTTP Cookie是HTTP標(biāo)頭的組成部分.
Cookie有什么用
1.會話狀態(tài)管理(如用戶登錄狀態(tài)\購物車)
2.個性化設(shè)置(如用戶自定義設(shè)置)
3.瀏覽器行為跟蹤(如跟蹤分析用戶行為)
與cookie相關(guān)的函數(shù)
setcookie函數(shù)
描述:設(shè)置cookie
語法:bool setcookie(string $name[,string $value = ''' [, int $expire = 0 [, string $path = '''' [, string $domain = ""]]]])
說明:
A:$name參數(shù)用于指定cookie名稱
B:$value參數(shù)用于設(shè)置cookie值
C:$expire參數(shù)用于設(shè)置cookie的聲明周期(Unix時間戳)
D:$path參數(shù)用于設(shè)置服務(wù)器上可用cookie的路徑;如果設(shè)置為"/",則代表在整個域名內(nèi)部有效;如果設(shè)置為"/foo/",則代表在域名內(nèi)的/foo目錄及其子目錄內(nèi)有效;
E:$domain參數(shù)用于設(shè)置cookie可用的域名范圍(包含子域名);