PHP 之Section與Cookie使用總結(jié)
更新時(shí)間:2012年09月14日 01:46:57 作者:
Session 將信息保存在服務(wù)器上.服務(wù)器在接受到唯一的SESSION_ID后,根據(jù)這個(gè)ID獲取相關(guān)數(shù)據(jù),然后將信息傳遞到客戶端(瀏覽器).Cookie 是將所有信息以文本的形式存在本地文件,并由客戶端(瀏覽器)進(jìn)行管理與維護(hù)
SESSION與COOKIE區(qū)別:
Session 將信息保存在服務(wù)器上.服務(wù)器在接受到唯一的SESSION_ID后,根據(jù)這個(gè)ID獲取相關(guān)數(shù)據(jù),然后將信息傳遞到客戶端(瀏覽器).
Cookie 是將所有信息以文本的形式存在本地文件,并由客戶端(瀏覽器)進(jìn)行管理與維護(hù).
因?yàn)镾ession 數(shù)據(jù)存儲在server端,所以遠(yuǎn)程client無法對數(shù)據(jù)進(jìn)行修改;而Cookie存儲在client本地,容易被獲取和篡改.所以Session安全性較高.
SESSION 介紹:
PHP5 后session被設(shè)置為全局變量,可以通過 $_SESSION[session_id] 來獲取.當(dāng)頁面啟動(dòng)SESSION會話,會在服務(wù)器中生成一個(gè)帶唯一id的SESSION,這個(gè)SESSION在生命周期結(jié)束前一直有效.當(dāng)關(guān)閉網(wǎng)頁或結(jié)束生命周期后,session會在服務(wù)器中自動(dòng)注銷.
創(chuàng)建一個(gè)session 會話需要經(jīng)過一下4個(gè)步驟:
a)啟動(dòng)會話..
方法有2種: bool session_star(); boolean session_register(string name);
b)注冊回話.
會話變量被啟動(dòng)后,全部保全在$_SESSION數(shù)組當(dāng)中.通過數(shù)組$_SESSION創(chuàng)建一個(gè)會話變量很簡單,只需要給該數(shù)組添加一個(gè)變量即可.
c)使用會話:
一般操作:判斷對應(yīng)session_id的SESSION是否存在.不存在創(chuàng)建一個(gè),存在 則通過 $_SESSION[session_id] 使用.
d)刪除會話.
unset($_SESSION[session_id]);//刪除單個(gè).
unset([$_SESSION]);//刪除整個(gè),將禁止整個(gè)會話功能,切無法恢復(fù).
$__SESSION=array();//刪除整個(gè),可恢復(fù).
session_destroy();//結(jié)束當(dāng)前會話..
SESSION的生命周期:
1.控制session 生命周期的方法:
一. 前提條件:客戶端支持COOKIE!
方法:
a>通過Session來完成.
void session_set_cookie_params(int lifetime[,string path][,string domain][,bool secure]);
bool setcookie(string name [,string value] [,int expire] [,string path] [,sting domain] [,secure]);
b>通過Cookie 來完成.
二. 前提條件:客戶端不支持COOKIE!
一旦客戶端不支持cookie,SESSION就不能在頁面間傳遞,解決辦法:
a>.在登陸前提示用戶打開cookie.
b>.表單POST/GET方式,來傳遞SESSION_ID.
c>.設(shè)置php.ini文件中的session.use_trans_sid=1 或編譯時(shí)打開-enable-trans-sid;
d>.通過文件或數(shù)據(jù)庫方式傳遞SESSION_ID;
服務(wù)器上對SESSION性能優(yōu)化:
在服務(wù)器中,如果將所有用戶的session都保存到臨時(shí)目錄中,會降低服務(wù)器的安全性與效率.
解決方法:將SESSION存儲到服務(wù)器上的數(shù)據(jù)庫或者臨時(shí)文件中.
臨時(shí)文件:
string session_save_path(string path);
數(shù)據(jù)庫:
session 存儲在臨時(shí)文件時(shí),當(dāng)網(wǎng)站瀏覽量很大的時(shí)候,將會導(dǎo)致查詢Session的效率很低,推薦數(shù)據(jù)庫存儲形式.
bool session_set_save_handler(string open,string close,string read,string write,string destroy,string gc);//將session_id 存儲與數(shù)據(jù)庫中的函數(shù).
SESSION 緩存:
緩存即將頁面中的某些信息存儲到客戶端指定的文件夾中,且可以設(shè)置一定的有效時(shí)間.(已經(jīng)經(jīng)過第一次訪問,且存儲)在這個(gè)有效時(shí)間內(nèi),當(dāng)再次訪問頁面,則可直接從緩存中讀取內(nèi)容,從而提高頁面瀏覽效率.
string session_cache_limiter(string cache_limiter); //緩存函數(shù).
int session_cache_expire([int new cache_expire]); //有效時(shí)間.
COOKIE介紹:
cookie 是一種遠(yuǎn)程客戶端存儲數(shù)據(jù)和跟蹤識別用戶的機(jī)制.是服務(wù)器臨時(shí)存放數(shù)據(jù)在本地用戶的一個(gè)文本文件.文本文件格式:"用戶名@網(wǎng)站地址[數(shù)字].txt"
COOKIE 常見功能:
a)記錄訪客的某些信息. b)在頁面間傳遞變量; c)將頁面內(nèi)容存儲到cookie中提高下次訪問速度.
慎用COOKIE:
a)不是所有的瀏覽器都支持cookie.
b)數(shù)據(jù)是以明文的方式保存在本地,不適合敏感的信息,未加密的信息.
c)不同類型瀏覽器對cookie 文件有大小,個(gè)數(shù)限制:比如最多只能存300個(gè)cookie 文件,每個(gè)大小不超過4KB,每個(gè)域名最多支持20個(gè)cookie文件.如果超過顯示,會隨機(jī)刪除.
創(chuàng)建COOKIE:
bool setcookie(string name [,string value] [,int expire] [,string path] [,sting domain] [,secure]);
讀取COOKIE:
$_COOKIE[];
刪除COOKIE:
a). setcookie("id", "",time()-1);//值為空,有效時(shí)間小于當(dāng)前時(shí)間.0為直接刪除COOKIE.
b).手動(dòng)刪除.在客戶端找到臨時(shí)存放cookie的文件.
setcookie()函數(shù)后,要執(zhí)行刷新,cookie才能取得數(shù)據(jù):
個(gè)人理解是因?yàn)閟ession 跟cookie都是在client 跟server之間傳輸,在頁面顯示前,我們就必須獲取到相應(yīng)的數(shù)據(jù).所以一般是在獲取 http:// 或https://時(shí)必須帶上session 或cookie..當(dāng)在執(zhí)行setcookie()時(shí),僅僅在本地存儲了cookie 但是地址上并沒有帶上cookie..因而需要刷新,讓服務(wù)器給地址協(xié)議帶上cookie發(fā)送個(gè)客戶端,這樣才能取得到值..
正是以上session_star(),setcookie()前,html頁面不能有輸出...所以說cookie 或者session認(rèn)第一,就沒人敢認(rèn)第二.
Session 將信息保存在服務(wù)器上.服務(wù)器在接受到唯一的SESSION_ID后,根據(jù)這個(gè)ID獲取相關(guān)數(shù)據(jù),然后將信息傳遞到客戶端(瀏覽器).
Cookie 是將所有信息以文本的形式存在本地文件,并由客戶端(瀏覽器)進(jìn)行管理與維護(hù).
因?yàn)镾ession 數(shù)據(jù)存儲在server端,所以遠(yuǎn)程client無法對數(shù)據(jù)進(jìn)行修改;而Cookie存儲在client本地,容易被獲取和篡改.所以Session安全性較高.
SESSION 介紹:
PHP5 后session被設(shè)置為全局變量,可以通過 $_SESSION[session_id] 來獲取.當(dāng)頁面啟動(dòng)SESSION會話,會在服務(wù)器中生成一個(gè)帶唯一id的SESSION,這個(gè)SESSION在生命周期結(jié)束前一直有效.當(dāng)關(guān)閉網(wǎng)頁或結(jié)束生命周期后,session會在服務(wù)器中自動(dòng)注銷.
創(chuàng)建一個(gè)session 會話需要經(jīng)過一下4個(gè)步驟:
a)啟動(dòng)會話..
方法有2種: bool session_star(); boolean session_register(string name);
b)注冊回話.
會話變量被啟動(dòng)后,全部保全在$_SESSION數(shù)組當(dāng)中.通過數(shù)組$_SESSION創(chuàng)建一個(gè)會話變量很簡單,只需要給該數(shù)組添加一個(gè)變量即可.
c)使用會話:
一般操作:判斷對應(yīng)session_id的SESSION是否存在.不存在創(chuàng)建一個(gè),存在 則通過 $_SESSION[session_id] 使用.
d)刪除會話.
unset($_SESSION[session_id]);//刪除單個(gè).
unset([$_SESSION]);//刪除整個(gè),將禁止整個(gè)會話功能,切無法恢復(fù).
$__SESSION=array();//刪除整個(gè),可恢復(fù).
session_destroy();//結(jié)束當(dāng)前會話..
SESSION的生命周期:
1.控制session 生命周期的方法:
一. 前提條件:客戶端支持COOKIE!
方法:
a>通過Session來完成.
void session_set_cookie_params(int lifetime[,string path][,string domain][,bool secure]);
bool setcookie(string name [,string value] [,int expire] [,string path] [,sting domain] [,secure]);
b>通過Cookie 來完成.
二. 前提條件:客戶端不支持COOKIE!
一旦客戶端不支持cookie,SESSION就不能在頁面間傳遞,解決辦法:
a>.在登陸前提示用戶打開cookie.
b>.表單POST/GET方式,來傳遞SESSION_ID.
c>.設(shè)置php.ini文件中的session.use_trans_sid=1 或編譯時(shí)打開-enable-trans-sid;
d>.通過文件或數(shù)據(jù)庫方式傳遞SESSION_ID;
服務(wù)器上對SESSION性能優(yōu)化:
在服務(wù)器中,如果將所有用戶的session都保存到臨時(shí)目錄中,會降低服務(wù)器的安全性與效率.
解決方法:將SESSION存儲到服務(wù)器上的數(shù)據(jù)庫或者臨時(shí)文件中.
臨時(shí)文件:
string session_save_path(string path);
數(shù)據(jù)庫:
session 存儲在臨時(shí)文件時(shí),當(dāng)網(wǎng)站瀏覽量很大的時(shí)候,將會導(dǎo)致查詢Session的效率很低,推薦數(shù)據(jù)庫存儲形式.
bool session_set_save_handler(string open,string close,string read,string write,string destroy,string gc);//將session_id 存儲與數(shù)據(jù)庫中的函數(shù).
SESSION 緩存:
緩存即將頁面中的某些信息存儲到客戶端指定的文件夾中,且可以設(shè)置一定的有效時(shí)間.(已經(jīng)經(jīng)過第一次訪問,且存儲)在這個(gè)有效時(shí)間內(nèi),當(dāng)再次訪問頁面,則可直接從緩存中讀取內(nèi)容,從而提高頁面瀏覽效率.
string session_cache_limiter(string cache_limiter); //緩存函數(shù).
int session_cache_expire([int new cache_expire]); //有效時(shí)間.
COOKIE介紹:
cookie 是一種遠(yuǎn)程客戶端存儲數(shù)據(jù)和跟蹤識別用戶的機(jī)制.是服務(wù)器臨時(shí)存放數(shù)據(jù)在本地用戶的一個(gè)文本文件.文本文件格式:"用戶名@網(wǎng)站地址[數(shù)字].txt"
COOKIE 常見功能:
a)記錄訪客的某些信息. b)在頁面間傳遞變量; c)將頁面內(nèi)容存儲到cookie中提高下次訪問速度.
慎用COOKIE:
a)不是所有的瀏覽器都支持cookie.
b)數(shù)據(jù)是以明文的方式保存在本地,不適合敏感的信息,未加密的信息.
c)不同類型瀏覽器對cookie 文件有大小,個(gè)數(shù)限制:比如最多只能存300個(gè)cookie 文件,每個(gè)大小不超過4KB,每個(gè)域名最多支持20個(gè)cookie文件.如果超過顯示,會隨機(jī)刪除.
創(chuàng)建COOKIE:
bool setcookie(string name [,string value] [,int expire] [,string path] [,sting domain] [,secure]);
讀取COOKIE:
$_COOKIE[];
刪除COOKIE:
a). setcookie("id", "",time()-1);//值為空,有效時(shí)間小于當(dāng)前時(shí)間.0為直接刪除COOKIE.
b).手動(dòng)刪除.在客戶端找到臨時(shí)存放cookie的文件.
setcookie()函數(shù)后,要執(zhí)行刷新,cookie才能取得數(shù)據(jù):
個(gè)人理解是因?yàn)閟ession 跟cookie都是在client 跟server之間傳輸,在頁面顯示前,我們就必須獲取到相應(yīng)的數(shù)據(jù).所以一般是在獲取 http:// 或https://時(shí)必須帶上session 或cookie..當(dāng)在執(zhí)行setcookie()時(shí),僅僅在本地存儲了cookie 但是地址上并沒有帶上cookie..因而需要刷新,讓服務(wù)器給地址協(xié)議帶上cookie發(fā)送個(gè)客戶端,這樣才能取得到值..
正是以上session_star(),setcookie()前,html頁面不能有輸出...所以說cookie 或者session認(rèn)第一,就沒人敢認(rèn)第二.
您可能感興趣的文章:
- php跨域調(diào)用json的例子
- PHP防止跨域提交表單
- PHP關(guān)于IE下的iframe跨域?qū)е聅ession丟失問題解決方法
- php jq jquery getJSON跨域提交數(shù)據(jù)完整版
- PHP如何利用P3P實(shí)現(xiàn)跨域
- 淺析php中jsonp的跨域?qū)嵗?/a>
- PHP json格式和js json格式 js跨域調(diào)用實(shí)現(xiàn)代碼
- PHP中運(yùn)用jQuery的Ajax跨域調(diào)用實(shí)現(xiàn)代碼
- 使用JSON實(shí)現(xiàn)數(shù)據(jù)的跨域傳輸?shù)膒hp代碼
- PHP COOKIE及時(shí)生效的方法介紹
- curl不使用文件存取cookie php使用curl獲取cookie示例
- php cookie使用方法學(xué)習(xí)筆記分享
- PHP CURL獲取cookies模擬登錄的方法
- 怎樣使用php與jquery設(shè)置和讀取cookies
- php中如何同時(shí)使用session和cookie來保存用戶登錄信息
- 基于PHP創(chuàng)建Cookie數(shù)組的詳解
- php setcookie(name, value, expires, path, domain, secure) 參數(shù)詳解
- 解析php通過cookies獲取遠(yuǎn)程網(wǎng)頁的指定代碼
- 深入理解PHP中的Session和Cookie
- PHP的curl實(shí)現(xiàn)get,post和cookie(實(shí)例介紹)
- 探討多鍵值cookie(php中cookie存取數(shù)組)的詳解
- PHP Cookie的使用教程詳解
- LotusPhp筆記之:Cookie組件的使用詳解
- 在PHP中設(shè)置、使用、刪除Cookie的解決方法
- PHP5中Cookie與 Session使用詳解
- php中使用cookie來保存用戶登錄信息的實(shí)現(xiàn)代碼
- php跨域cookie共享使用方法
相關(guān)文章
php實(shí)現(xiàn)隨機(jī)顯示圖片方法匯總
本文分享一個(gè)php實(shí)現(xiàn)的隨機(jī)顯示圖片的函數(shù),可以將指定文件夾中存放的圖片隨機(jī)地顯示出來。有興趣的朋友研究下吧。2015-05-05Discuz! 5.0.0論壇程序中加入一段js代碼,讓會員點(diǎn)擊下載附件前自動(dòng)彈出提示窗口
Discuz! 5.0.0論壇程序中加入一段js代碼,讓會員點(diǎn)擊下載附件前自動(dòng)彈出提示窗口...2007-04-04php使用APC實(shí)現(xiàn)實(shí)時(shí)上傳進(jìn)度條功能
這篇文章主要介紹了php使用APC實(shí)現(xiàn)實(shí)時(shí)上傳進(jìn)度條功能,php本身不具備可以帶有實(shí)時(shí)上傳進(jìn)度條功能,但是php提供了一個(gè)apc,它可以與php配置實(shí)現(xiàn)上傳進(jìn)度條,感興趣的小伙伴們可以參考一下2015-10-10php使用PDO下exec()函數(shù)查詢執(zhí)行后受影響行數(shù)的方法
這篇文章主要介紹了php使用PDO下exec()函數(shù)查詢執(zhí)行后受影響行數(shù)的方法,結(jié)合實(shí)例形式分析了php在使用pdo進(jìn)行增刪改操作時(shí)exec()函數(shù)查詢操作執(zhí)行后受影響行數(shù)的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2017-03-03PHP+JS實(shí)現(xiàn)文件分塊上傳的示例代碼
我們在上傳大文件時(shí),可能會由于服務(wù)器的原因?qū)е挛募蟼魇?,文件過大時(shí)由于服務(wù)器的配置或響應(yīng)事件過長導(dǎo)致上傳文件失敗,這時(shí)候我們可以將一個(gè)大的文件分為若干塊,然后分批次上傳到服務(wù)端。本文介紹了實(shí)現(xiàn)的方法,需要的可以參考一下2022-11-11Dedecms V3.1 生成HTML速度的優(yōu)化辦法
Dedecms V3.1 生成HTML速度的優(yōu)化辦法...2007-03-03php實(shí)現(xiàn)singleton()單例模式實(shí)例
這篇文章主要介紹了php實(shí)現(xiàn)singleton()單例模式的方法,以實(shí)例形式簡單講述了單例模式的實(shí)現(xiàn)過程,需要的朋友可以參考下2014-11-11