《PHP實(shí)戰(zhàn):淺談COOKIE和SESSION區(qū)別》要點(diǎn):
本文介紹了PHP實(shí)戰(zhàn):淺談COOKIE和SESSION區(qū)別,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
PHP學(xué)習(xí)一、cookie介紹
PHP學(xué)習(xí)cookie 常用于識(shí)別用戶.cookie 是服務(wù)器留在用戶計(jì)算機(jī)中的小文件.每當(dāng)相同的計(jì)算機(jī)通過(guò)瀏覽器哀求頁(yè)面時(shí),它同時(shí)會(huì)發(fā)送 cookie.通過(guò) PHP,您能夠創(chuàng)建并取回 cookie 的值.
PHP學(xué)習(xí)1、設(shè)置Cookie
PHP學(xué)習(xí)PHP用SetCookie函數(shù)來(lái)設(shè)置Cookie.
PHP學(xué)習(xí)SetCookie函數(shù)定義了一個(gè)Cookie,并且把它附加在HTTP頭的后面,SetCookie函數(shù)的原型如下:
int SetCookie(string name, string value, int expire, string path, string domain, int secure);
PHP學(xué)習(xí)參數(shù)說(shuō)明:cookie名稱,cookie值,過(guò)期時(shí)間(int),有效路徑,有限域名,https傳遞才有效
PHP學(xué)習(xí)注意:當(dāng)前設(shè)置的Cookie不是立即生效的,而是要比及下一個(gè)頁(yè)面時(shí)才能看到.這是由于在設(shè)置的這個(gè)頁(yè)面里Cookie由服務(wù)器傳遞給客戶瀏覽器,在下一個(gè)頁(yè)面瀏覽器才能把Cookie從客戶的機(jī)器里取出傳回服務(wù)器的原因.
PHP學(xué)習(xí)使用例子:
PHP學(xué)習(xí)普通使用:
PHP學(xué)習(xí)setcookie('name','PHP淮北');
PHP學(xué)習(xí)帶失效時(shí)間的:
setcookie('name','PHP淮北',time()+24*60*60);//1day
PHP學(xué)習(xí)Cookie是面向路徑的 ,默認(rèn)存儲(chǔ)在當(dāng)前文件下,如果沒有設(shè)置路徑,不同文件下的cookie默認(rèn)保留在不同文件夾下,如圖:默認(rèn)保留在mytest文件夾下
PHP學(xué)習(xí)2、接收和處理Cookie
PHP學(xué)習(xí)用戶端與服務(wù)端的web通信協(xié)議是http.而PHP通過(guò)http取得用戶數(shù)據(jù)慣用的三種辦法分別是:POST辦法、GET辦法還有Cookie.而PHP默認(rèn)傳遞辦法正是Cookie,也是最佳辦法.
PHP學(xué)習(xí)好比設(shè)置一個(gè)名為MyCookier的Cookie,PHP會(huì)自動(dòng)從WEB服務(wù)器接收的HTTP頭里把它分析出來(lái),并形成一個(gè)與普通變量一樣的變量,名為$myCookie,這個(gè)變量的值就是Cookie的值
PHP學(xué)習(xí)3,刪除Cookie
PHP學(xué)習(xí)要?jiǎng)h除一個(gè)已經(jīng)存在的Cookie,有兩個(gè)方法:
PHP學(xué)習(xí)一是調(diào)用只帶有name參數(shù)的SetCookie,那么名為這個(gè)name的Cookie將被從關(guān)系戶機(jī)上刪掉;例如:setcookie('name','');
另一個(gè)方法是設(shè)置Cookie的失效時(shí)間為time()或time()-1,那么這個(gè)Cookie在這個(gè)頁(yè)面的瀏覽完之后就被刪除了(其實(shí)是失效了). 例如:setcookie('name','PHP淮北',time()-24*60*60);
要注意的是,當(dāng)一個(gè)Cookie被刪除時(shí),它的值在當(dāng)前頁(yè)在仍然有效的.
使用Cookie的注意事項(xiàng):
PHP學(xué)習(xí)首先是必須在HTML文件的內(nèi)容輸出之前設(shè)置(Cookie是HTTP協(xié)議頭的一部分,用于瀏覽器和服務(wù)器之間傳遞信息,所以必須在任何屬于HTML文件自己的內(nèi)容輸出之前調(diào)用Cookie函數(shù).
在PHP頁(yè)面可以先使用
PHP學(xué)習(xí)ob_start();//開啟
PHP學(xué)習(xí)code…..
PHP學(xué)習(xí)ob_end_flush(); //刷新緩存
PHP學(xué)習(xí)可以防止header提示錯(cuò)誤);
PHP學(xué)習(xí)不同的瀏覽器對(duì)Cookie的處理機(jī)制不一樣
cookie限制是在客戶端的.一個(gè)瀏覽器能創(chuàng)建的Cookie數(shù)量最多為30個(gè),并且每個(gè)不能超過(guò)4KB,每個(gè)WEB站點(diǎn)能設(shè)置的Cookie總數(shù)不能超過(guò)20個(gè).
當(dāng)前設(shè)置的Cookie不是立即生效的,而是要比及下一個(gè)頁(yè)面時(shí)才能看到
PHP學(xué)習(xí)二、session介紹
PHP學(xué)習(xí)session機(jī)制是一種服務(wù)器端的機(jī)制,服務(wù)器使用一種類似于散列表的結(jié)構(gòu)(也可能就是使用散列表)來(lái)保存信息,每一個(gè)網(wǎng)站訪客都會(huì)被分配給一個(gè)唯一的標(biāo)志符,即會(huì)話ID,它的存放形式無(wú)非兩種:要么經(jīng)過(guò)url傳遞,要么保存在客戶端的Cookies里.當(dāng)然,你也可以將Session保存到數(shù)據(jù)庫(kù)里,這樣會(huì)更平安,但效率方面會(huì)有所下降.url方式傳遞平安性肯定太差,PHP的會(huì)話機(jī)制是通過(guò)設(shè)置Cookie,在Cookie中保存會(huì)話id(Session ID),在服務(wù)器端會(huì)生成session文件,與用戶進(jìn)行關(guān)聯(lián),Web應(yīng)用程序存儲(chǔ)與這些Session相關(guān)的數(shù)據(jù),并在各頁(yè)面間進(jìn)行傳遞.
PHP學(xué)習(xí)PHP相關(guān)函數(shù)
PHP學(xué)習(xí)在PHP中有關(guān)Session的函數(shù)比擬多,不過(guò)我們最常用到的也就這么幾個(gè)函數(shù):
PHP學(xué)習(xí)session_start():啟用session機(jī)制,在必要用到session的程序文件的最開始調(diào)用它.
PHP學(xué)習(xí)session_register():注冊(cè)session變量
PHP學(xué)習(xí)session_unregister(): 刪除session變量(一個(gè)一個(gè)刪除)
PHP學(xué)習(xí)session_is_registered(): 判斷session變量是否注冊(cè)
PHP學(xué)習(xí)session_distroy(): 銷毀所有session變量(所有session變量銷毀,包含文件)
PHP學(xué)習(xí)必要注意下面幾個(gè)方面:
PHP學(xué)習(xí)1.函數(shù)session_start()必需在程序最開始執(zhí)行,在其前面不能有任何輸出內(nèi)容,否則
PHP學(xué)習(xí)就會(huì)出現(xiàn)“Warning:Cannot send session cookie - headers already
PHP學(xué)習(xí)sent"類似這樣的警告信息.
PHP學(xué)習(xí)2.函數(shù)session_register()用于注冊(cè)要保留在session中的相關(guān)變量,其用法如下:
PHP學(xué)習(xí)
<?php
$val = "session value";
session_register("val");
?>
PHP學(xué)習(xí)val即為要注冊(cè)的session變量名,在注冊(cè)時(shí)必定不要加上"$"符號(hào),只寫其變量名稱即可.
PHP學(xué)習(xí)3.函數(shù)session_unregister()與上面函數(shù)用法完全相同,但功能相反,上面函數(shù)是注冊(cè)
PHP學(xué)習(xí)session變量,而其則是刪除指定的session變量.
PHP學(xué)習(xí)4.函數(shù)session_is_registered()用于判斷session變量是否注冊(cè).
PHP學(xué)習(xí)5.函數(shù)session_destroy()主要用于在系統(tǒng)注銷和退出時(shí),銷毀所有的session變量,它沒有參數(shù),直接調(diào)用即可.
PHP學(xué)習(xí)Session與PHP.ini的關(guān)系配置
PHP學(xué)習(xí)1,session.save_handler = file
PHP學(xué)習(xí)用于讀取/回寫session數(shù)據(jù)的方式,默認(rèn)是files.它會(huì)讓PHP的session管理函數(shù)使用指定的文本文件存儲(chǔ)session數(shù)據(jù)
PHP學(xué)習(xí)2,session.save_path = “/xammp/temp/”
PHP學(xué)習(xí)指定保存session文件的目錄,可以指定到別的目錄,但是指定目錄必須要有httpd守護(hù)進(jìn)程屬主(比如apache或www等)寫權(quán)限,否則無(wú)法回存session數(shù)據(jù).它還可以寫成這樣session.save_path = “N;/path” 其中N是整數(shù).這樣使得不是所有的session文件都保存在同一個(gè)目錄中,而是分散在不同目錄.這對(duì)于服務(wù)器處理大量session文件是很有贊助的.(注:目錄需要自己手工創(chuàng)建)
PHP學(xué)習(xí)3,session.auto_start = 0
PHP學(xué)習(xí)如果啟用該選項(xiàng),用戶的每次哀求都會(huì)初始化session.不推薦使用,最好通過(guò)session_start()顯示地初始化session.
PHP學(xué)習(xí)以上所述便是本文的全部?jī)?nèi)容了,希望大家能夠喜歡.
歡迎參與《PHP實(shí)戰(zhàn):淺談COOKIE和SESSION區(qū)別》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/9447.html