1. 程式人生 > >cookie與SESSIONID

cookie與SESSIONID

cookie,session的介紹:https://blog.csdn.net/xybelieve1990/article/details/49948795

setcookie()函式注意點:

      ①如果只給了鍵不給值,那麼就是在刪除改鍵。

      ②cookie的設定是有覆蓋性的。但是,想要替換掉cookie的成員,不僅鍵要相同,作用域也要相同,如果不同就會另外新增新的成員來存放資料,如下圖:

 

     還有一點要注意,setcookie()預設的path引數是檔案當前的資料夾,但是有些不一樣(見上圖第三項是預設值),和我們自己設定的差了末尾的斜槓‘/’。PS:去掉斜槓我也不懂具體是什麼情況,但是它們兩之間在獲取值的優先順序上差別很大。

     那麼問題來了,我們獲取$_COOKIE['a']的時候到底是什麼值?

     經過多種實驗得出:取值的優先順序和函式巢狀類似,越靠近的那一層最先獲取。而路徑末尾缺少斜槓的優先順序介於前後兩者之間。即:/</web</web/</web/con</web/con/。

    取值的時候就是按照這個優先順序來確定的。

 

③想要手動設定cookie覆蓋session_start()設定的cookie,一定要注意作用域要相同,否則是無法覆蓋,刪除的。

例如:客戶端cookie已經有了PHPSESSION(由session_start()設定的),想要刪掉:

錯誤:setcookie('PHPSESSID');

正確:setcookie('PHPSESSID',null,0,"/");

總之,cookie的修改必須是鍵,和作用域都相同才行。