在php中,可以使用setcookie()函數來設定cookie的作用域。語法為“setcookie(name,value,expire,path,domain,secure)”,可以透過設定domain參數的值來設定cookie作用域,
當我們為網站設定cookie時,大家有沒有發現在網站的其他網域下也接收到了這些cookie。這些沒用的cookie看似不佔多少流量,但如果對一個日PV千萬的網站來說,那浪費的資源就不是一點點了。因此在設定cookie時,對它的作用域一定要設定準確了。
我們都知道在PHP中用setcookie 來設定網站的cookie,【相關教學推薦:《PHP教學》】
函數的用法如下:
setcookie(name,value,expire,path,domain,secure)
今天我們就來探討一下它的第五個參數domain,因為它決定了cookie的作用域。
現在有以下3個域名,一個頂級域名、一個二級域名和一個三級域名:
#① zydya.com
②blog.zyday.com
③one.blog.zyday.com
先在①zyday.com網域下設定cookie,做四次測試,分別設定domain參數為空、'zyday.com' 、'blog.zyday.com'與'one.blog.zyday.com'。
√表示該網域下能取到cookie,×表示不能取到cookie
domain參數 | zydya.com | blog.zyday.com | one.blog.zyday.com |
setcookie('name',1,time() 1) | √ | # √ | √ |
setcookie('name',1,time() 1,'/','zyday.com') | √ | # √ | √ |
#setcookie('name',1,time() 1,'/','blog.zyday.com') |
× | × | × |
setcookie('name',1,time() 1,'/','one.blog.zyday.com') |
× | × | #× |
然後在②blog.zyday.com網域下設定cookie,測試條件同上 | ##domain參數 | zydya.com | |
blog.zyday.com |
one.blog.zyday.com | setcookie('name',1,time() | 1)#× |
√ | √ | setcookie('name',1,time() 1,'/','zyday.com') | √ |
√ | √ | setcookie( 'name',1,time() 1,'/','blog.zyday.com') | #× |
√ | setcookie('name',1,time() 1,'/',one.blog.zyday.com') | × |
看第二行,domain參數是zyday.com,是blog.zyday.com的父域名,那麼zyday.com下所有子域名(包括zyday.com、blog.zyday.com、one.blog.zyday .com)都能接收到cookie。
當domain為自身網域時,那麼其父網域不受影響,本身與其子網域可以接收到cookie。
而設定其子網域或其他網域時,所有網域都接收不到cookie了。
最後在③one.blog.zyday.com網域下設定cookie
domain參數 | zydya.com | blog.zyday.com | one.blog.zyday.com |
1) |
#× | ##×√ | |
√ | √ | √ | |
#× | ##√ | #√ | setcookie('name',1,time() 1,'/',one.blog.zyday.com') |
× | × | #√ |
推薦學習:#
以上是php怎麼設定cookie作用域?的詳細內容。更多資訊請關注PHP中文網其他相關文章!