本文目錄一覽:
PHP中如何使用Cookie
比如設置一個名為 MyCookier的Cookie,PHP會自動從WEB伺服器接收的HTTP頭裡把它分析出來,並形成一個與普通變數一樣的變數,名為$ myCookie,這個變數的值就是Cookie的值。數組同樣適用。另外一個辦法是引用PHP的全局變數$HTTP_COOKIE_VARS數組。分別舉例如下:(假設這些都在以前的頁面里設置過了,並且仍然有效)echo $MyCookie;echo $CookieArray[0];echo $_COOKIE[“MyCookie”];echo $HTTP_COOKIE_VARS[“MyCookie”];要刪除一個已經存在的Cookie,有兩個辦法:1、SetCookie(「Cookie」, 「」);2、SetCookie(「Cookie」, 「value」 , time()-1 / time() );使用Cookie的限制1、必須在HTML文件的內容輸出之前設置;2、不同的瀏覽器對Cookie的處理不一致,且有時會出現錯誤的結果。3、限制是在客戶端的。
如何使用PHP操作cookie
1.創建/更新cookie
.代碼如下:
setCookie($cookieName,$value,time()+秒數);
例子:創建一個cookie,名字為UserName,值為zs,過期時間為2個星期
.代碼如下:
setcookie(“UserName”,”zs”,time()+2*7*24*3600);
如果不設置時間,就不會保存到cookie文件中。瀏覽器不關時,能夠訪問。當瀏覽器關閉時,就無法訪問了。
例子:
.代碼如下:
setcookie(“Age”,”18″);
2.取cookie的值
.代碼如下:
$_cookie[$cookieName];
例子:取出UserName的值,放在變數$uName中
.代碼如下:
$uName=$_COOKIE[‘UserName’];
取值的時候,一般會先判斷是否為空,再進行取值操作。上面的取值操作一般這樣寫:
.代碼如下:
if (!empty($_COOKIE[‘UserName’]))
{
$uName=$_COOKIE[‘UserName’];
}
3.刪除指定cookie
.代碼如下:
setcookie($cookieName,value,time()-秒數);
//或者
setcookie($cookiename, ”);
//或者
setcookie($cookiename, NULL);
例子:刪除UserName
.代碼如下:
setcookie(“UserName”,”zs”,time()-3600);
4.刪除當前會話的所有cookie
.代碼如下:
foreach($_COOKIE as $key=$val){
setcookie($key,””,time()-100);
}
當無cookie時,本機保存cookie的文件也將刪除。
PHP中cookie和session的區別實例分析
Session是由應用伺服器維持的一個伺服器端的存儲空間,用戶在連接伺服器時,會由伺服器生成一個唯一的SessionID,用該SessionID
為標識符來存取伺服器端的Session存儲空間。而SessionID這一數據則是保存到客戶端,用Cookie保存的,用戶提交頁面時,會將這一
SessionID提交到伺服器端,來存取Session數據。這一過程,是不用開發人員干預的。所以一旦客戶端禁用Cookie,那麼Session也會失效。
伺服器也可以通過URL重寫的方式來傳遞SessionID的值,因此不是完全依賴Cookie。如果客戶端Cookie禁用,則伺服器可以自動通過重寫URL的方式來保存Session的值,並且這個過程對程序員透明。
可以試一下,即使不寫Cookie,在使用request.getCookies();取出的Cookie數組的長度也是1,而這個Cookie的名字就是JSESSIONID,還有一個很長的二進位的字元串,是SessionID的值。
大家都知道,http是無狀態的協議,客戶每次讀取web頁面時,伺服器都打開新的會話,而且伺服器也不會自動維護客戶的上下文信息,那麼要怎麼才能實現
網上商店中的購物車呢,session就是一種保存上下文信息的機制,它是針對每一個用戶的,變數的值保存在伺服器端,通過SessionID來區分不同
的客戶,session是以cookie或URL重寫為基礎的,默認使用cookie來實現,系統會創造一個名為JSESSIONID的輸出
cookie,我們叫做session
cookie,以區別persistent cookies,也就是我們通常所說的cookie,注意session
cookie是存儲於瀏覽器內存中的,並不是寫到硬碟上的,這也就是我們剛才看到的JSESSIONID,我們通常情是看不到JSESSIONID的,但
是當我們把瀏覽器的cookie禁止後,web伺服器會採用URL重寫的方式傳遞Sessionid,我們就可以在地址欄看到
sessionid=KWJHUG6JJM65HS2K6之類的字元串。
明白了原理,我們就可以很容易的分辨出persistent cookies和session
cookie的區別了,網上那些關於兩者安全性的討論也就一目了然了,session
cookie針對某一次會話而言,會話結束session cookie也就隨著消失了,而persistent
cookie只是存在於客戶端硬碟上的一段文本(通常是加密的),而且可能會遭到cookie欺騙以及針對cookie的跨站腳本攻擊,自然不如session
cookie安全了。
通常session
cookie是不能跨窗口使用的,當你新開了一個瀏覽器窗口進入相同頁面時,系統會賦予你一個新的sessionid,這樣我們信息共享的目的就達不到了,此時我們可以先把sessionid保存在persistent
cookie中,然後在新窗口中讀出來,就可以得到上一個窗口SessionID了,這樣通過session
cookie和persistent cookie的結合我們就實現了跨窗口的session tracking(會話跟蹤)。
在一些web開發的書中,往往只是簡單的把Session和cookie作為兩種並列的http傳送信息的方式,session
cookies位於伺服器端,persistent
cookie位於客戶端,可是session又是以cookie為基礎的,明白的兩者之間的聯繫和區別,我們就不難選擇合適的技術來開發web
service了。
實例附上出處鏈接:
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/284575.html