1. 程式人生 > >Cookie容易忽略的坑

Cookie容易忽略的坑

今天在用Cookie的時候發現對Cookie使用還不是很熟練,以下是最近碰到和自己總結的:
坑:在頁面Ahttp://test.com/login設定了cookie(setcooke("user","小明",time()+3600)), 跳轉到頁面Bhttp://test.com/user,並在頁面B設定cookie(setcookie("mobile","1885245454",time()+3600))後,跳轉到頁面Chttp://test.com/login/info結果在C頁面只可以看到頁面A的cookie。

解決:在設定Cookie時設定固定的path為伺服器目錄(setcookie("user","小明",time()+3600,"/"))

總結:頁面A時setcookie時建立了PATH=login
的一個Cookie, 頁面B時setcookie時建立了PATH=user的一個Cookie,頁面C獲取時獲取的是PATH=login以及子集的cookie , 當設定PATH=/時所設定的Cookie屬於當前域名下,所有屬於此域名的Cookie都可以獲得到


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

1.name => 引數

2. value => 引數對應值

3. path => 用來指定cookie被髮送到伺服器的哪一個目錄路徑下 (WEB伺服器頁會自動傳遞當前路徑給瀏覽器.指定路徑會強制伺服器使用設定的路徑. 在一個目錄頁面裡設的cookie在另一個目錄的頁面裡是看不到的)

4. domain => 能夠在瀏覽器端對cookie的傳送進行限定.

5. secure => 表示這個cookie是否通過加密的HTTPS協議在網路上傳輸

#注:當使用PHP的setcookie時 , $_COOKIE全域性陣列並不馬上生效而是在下一個面才生效, 所以想馬上生效的同學需要手寫一下$_COOKIE[] , 刪除COOKIE也是一個道理, 需要對想刪除的COOKIE進行手動的unset($_COOKIE["user"])