創(chuàng)建Cookie

網(wǎng)站建設中,通過setcookie()函數(shù)創(chuàng)建Cookie。使用setcookie()函數(shù)的前提是客戶瀏覽器支持Cookie,如果客戶禁用Cookie,setcookie()將返回false。語法格式如下:

setcookie(name,value,expire,path,domain,secure)

setcookie()函數(shù)向客戶端發(fā)送一個HTTPcookie。如果成功,則該函數(shù)返回true,否則返回false。setcookie()函數(shù)的參數(shù)說明如表所示。

56ef552da233ee418229299ce7df444e.jpg

【示例1】如何設置并發(fā)送cookie。<?php$value = "my cookie value";//發(fā)送一個簡單的 cookiesetcookie("TestCookie",$value);?>

注意:在發(fā)送cookie時,cookie的值會自動進行URL編碼。接收時會進行URL解碼。如果不需要這樣,可以使用setraw-cookie()函數(shù)進行代替。

【示例2】設置一個24小時有效期的cookie。

<?php$value = "my cookie value";//發(fā)送一個24小時過期的cookiesetcookie("TestCookie",$value, time()+3600*24);?>

如果要把cookie保存為瀏覽器進程,即瀏覽器關閉后就失效。那么可以直接把expiretime設為0。如:

<?php$value = "my cookie value";//發(fā)送一個關閉瀏覽器即失效的cookiesetcookie("TestCookie",$value, 0);?>

參數(shù)path表示W(wǎng)eb服務器上的目錄,默認為被調(diào)用頁面所在目錄,這里還有一點要說明的,如果網(wǎng)站有幾個不同的目錄,如一個購物目錄、一個論壇目錄等,那么如果只用不帶路徑的Cookie的話,在一個目錄下的頁面里設置的Cookie在另一個目錄的頁面里是看不到的,也就是說,Cookie是面向路徑的。實際上,即使沒有指定路徑,Web服務器會自動傳遞當前的路徑給瀏覽器的,指定路徑會強制服務器使用設置的路徑。解決這個問題的辦法是在調(diào)用setcookie()函數(shù)時加上路徑和域名,域名的格式可以是

http://www.phpuser.com/”

,也可以是“.ph-puser.com”。參數(shù)domain可以使用的域名,默認為被調(diào)用頁面的域名。這個域名必須包含兩個“.”,所以如果指定頂級域名,則必須使用“.mydomain.com”。設定域名后,必須采用該域名訪問網(wǎng)站cookie才有效。如果使用多個域名訪問該頁,那么這個地方可以為空或者訪問這個cookie的域名都是一個域下面的。

參數(shù)secure如果設為“1”,表示cookie只能被用戶的瀏覽器認為是安全的服務器所記住。

注意:value、path、domain 3個參數(shù)可以用空字符串""代換,表示沒有設置。expire和secure兩個參數(shù)是數(shù)值型的,可以用0表示。expire參數(shù)是一個標準的UNIX時間標記,可以用time()或mktime()函數(shù)取得,以秒為單位。secure參數(shù)表示這個Cookie是否通過加密的HTTPS協(xié)議在網(wǎng)絡上傳輸。httponly參數(shù)如果設為1,則表示cookie只能被HTTP協(xié)議所使用,任何腳本語言都不能獲取PHP所創(chuàng)建的cookie,這就有效削弱了來自XSS的攻擊。當前設置的Cookie不是立即生效的,而是要等到下一個頁面或刷新后才能看到。這是由于在設置的這個頁面里Cookie由服務器傳遞給客戶瀏覽器,在下一個頁面或刷新后瀏覽器才能把Cookie從客戶的機器里取出傳回服務器的原因。

網(wǎng)站建設、網(wǎng)絡營銷咨詢專線:0871-63535511(點擊可一鍵撥號)