1. 程式人生 > 其它 >專業3 Cookie 和Session的使用及原理

專業3 Cookie 和Session的使用及原理

Cookie的使用及原理

什麼是cookie

cookie是一種用來跟蹤和識別使用者上網資訊的會話控制技術,它將跟蹤後的資訊儲存在客戶端的瀏覽器上

cookie如何使用

第一步:設定cookie即可(告訴瀏覽器,有cookie要儲存值了)

setcookie('cookie的鍵名','cookie的值')
第二步:取出cookie的值,cookie的值可以使用PHP的超全域性預定義陣列$_COOKIE直接取即可

echo $_COOKIE['cookie的鍵名']
如果想要刪除cookie

第一種:清除瀏覽器的快取就能刪除cookie了

第二種:程式碼刪除

//給cookie重新設定過期時間,時間為過去時
setcookie("username","",time()-1); cookie的分類 cookie分為會話cookie和持久cookie 會話cookie指:未給cookie設定過期時間,當瀏覽器關閉cookie的值就會消失 //會話cookie,未設定過期時間,當關閉瀏覽器,值就刪除了 setcookie("username","root"); 持久cookie值:給cookie設定過期時間,只有當過期時間到cookie的值才會消失 setcookie("username","root",time()+20);

session

Session的使用及原理

什麼是session

session也是一種和cookie一樣的會話控制技術,它將跟蹤後的資訊以檔案的形式儲存在伺服器端,所以說session相對於cookie而言更加安全

session如何使用

第一步:設定session,設定之前一定要使用session_start()開啟session

//開啟session,在開啟之前不允許有任何輸出 session_start(); //設定session $_SESSION['username']="admin"; 第二步:取出session <h1>歡迎, <font color="red"> <?php //只要用的$_SESSION的地方,必須要先開啟 session_start(); //輸出鍵為username的值即可 echo $_SESSION['username'] ?> </font>登入
</h1> 刪除session session_start(); //刪除指定下標的session資料,同時session檔案中的資料也會被刪除掉 //unset($_SESSION['name']); //清空session陣列,同時將session檔案銷燬 session_destroy(); session的儲存位置 session將跟蹤和識別後的記錄以檔案的形式儲存在伺服器端,那麼檔案的儲存位置由PHP的配置檔案中的:session.save_path來決定 檔案的儲存名是一個32位的sessionID,如何得知哪個檔案是你的儲存的session資料呢,可以列印cookie陣列來檢視: print_r($_COOKIE); //得到 Array( 'name' => 'admin', 'PHPSESSID' => 'gmf800he5068ns1apmkg865i26' ) 其中PHPSESSID指向的就是一個32位的隨機數,簡稱sessionID session的執行原理 當頁面遇到session_start()時,伺服器端會準備產生一個32位的sessionID,在產生前會先檢視本地的cookie中是否存在,如果cookie中已有sessionID,那麼session認為會話未結束,不再產生新的sessionID,接下來的操作依舊和上一個sessionID儲存的檔案進行關聯。 如果本地的cookie中不存在sessionID則說明會話是一個新會話,此時伺服器端會將產生的新sessionID傳送一份寄存在本地的cookie,同時會建立一個以sessionID命名的檔案來進行對會話內容儲存。 如何讓session不過期 通過原理我們發現,session是關閉瀏覽器後就消失的一種儲存方式。 session的儲存內容和sessionID 有關,如果能讓sessionID持久儲存,則伺服器端不會在每次重新開啟瀏覽器後遇到session_start()時生成新的sessionid了。 實現: //開啟session session_start(); //設定session $_SESSION['name']="admin"; //讓sessionid不過期 //session_name():獲取sessionID的名稱 //session_id():獲取sessionID的值 //第三個引數就是給其增加上過期時間 setcookie(session_name(),session_id(),time()+60*24);