在網(wǎng)站建設(shè)中,通過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ù)說明如表所示。
【示例1】如何設(shè)置并發(fā)送cookie。<?php$value = "my cookie value";//發(fā)送一個簡單的 cookiesetcookie("TestCookie",$value);?>
注意:在發(fā)送cookie時,cookie的值會自動進(jìn)行URL編碼。接收時會進(jìn)行URL解碼。如果不需要這樣,可以使用setraw-cookie()函數(shù)進(jìn)行代替。
【示例2】設(shè)置一個24小時有效期的cookie。
<?php$value = "my cookie value";//發(fā)送一個24小時過期的cookiesetcookie("TestCookie",$value, time()+3600*24);?>
如果要把cookie保存為瀏覽器進(jìn)程,即瀏覽器關(guān)閉后就失效。那么可以直接把expiretime設(shè)為0。如:
<?php$value = "my cookie value";//發(fā)送一個關(guān)閉瀏覽器即失效的cookiesetcookie("TestCookie",$value, 0);?>
參數(shù)path表示W(wǎng)eb服務(wù)器上的目錄,默認(rèn)為被調(diào)用頁面所在目錄,這里還有一點要說明的,如果網(wǎng)站有幾個不同的目錄,如一個購物目錄、一個論壇目錄等,那么如果只用不帶路徑的Cookie的話,在一個目錄下的頁面里設(shè)置的Cookie在另一個目錄的頁面里是看不到的,也就是說,Cookie是面向路徑的。實際上,即使沒有指定路徑,Web服務(wù)器會自動傳遞當(dāng)前的路徑給瀏覽器的,指定路徑會強(qiáng)制服務(wù)器使用設(shè)置的路徑。解決這個問題的辦法是在調(diào)用setcookie()函數(shù)時加上路徑和域名,域名的格式可以是
,也可以是“.ph-puser.com”。參數(shù)domain可以使用的域名,默認(rèn)為被調(diào)用頁面的域名。這個域名必須包含兩個“.”,所以如果指定頂級域名,則必須使用“.mydomain.com”。設(shè)定域名后,必須采用該域名訪問網(wǎng)站cookie才有效。如果使用多個域名訪問該頁,那么這個地方可以為空或者訪問這個cookie的域名都是一個域下面的。
參數(shù)secure如果設(shè)為“1”,表示cookie只能被用戶的瀏覽器認(rèn)為是安全的服務(wù)器所記住。
注意:value、path、domain 3個參數(shù)可以用空字符串""代換,表示沒有設(shè)置。expire和secure兩個參數(shù)是數(shù)值型的,可以用0表示。expire參數(shù)是一個標(biāo)準(zhǔn)的UNIX時間標(biāo)記,可以用time()或mktime()函數(shù)取得,以秒為單位。secure參數(shù)表示這個Cookie是否通過加密的HTTPS協(xié)議在網(wǎng)絡(luò)上傳輸。httponly參數(shù)如果設(shè)為1,則表示cookie只能被HTTP協(xié)議所使用,任何腳本語言都不能獲取PHP所創(chuàng)建的cookie,這就有效削弱了來自XSS的攻擊。當(dāng)前設(shè)置的Cookie不是立即生效的,而是要等到下一個頁面或刷新后才能看到。這是由于在設(shè)置的這個頁面里Cookie由服務(wù)器傳遞給客戶瀏覽器,在下一個頁面或刷新后瀏覽器才能把Cookie從客戶的機(jī)器里取出傳回服務(wù)器的原因。
當(dāng)前文章標(biāo)題:創(chuàng)建Cookie
當(dāng)前URL:http://m.ww44088.com/news/wzzz/3278.html
上一篇:認(rèn)識Cookie