鍍金池/ 教程/ PHP/ cookie 和 session
使用數(shù)組
使用數(shù)值
cookie 和 session
數(shù)據(jù)庫介紹
總結
使用字符串
創(chuàng)建函數(shù)
變量
文件和目錄
控制結構
HTML 表單和 PHP
PHP 概述
創(chuàng)建 Web 應用程序

cookie 和 session

創(chuàng)建 cookie

cookie 必須在發(fā)送其他任何信息之前從服務器發(fā)送到客戶端,如果使用緩沖可在任何位置

setcookie 函數(shù)發(fā)送 cookie 用法:

setcookie(name,value);

讀取 cookie

函數(shù) setcookie 將 cookie 數(shù)據(jù)存放在數(shù)組 $_COOKIE 中

$_COOKIE['name']

添加 cookie 參數(shù)

setcookie 函數(shù)可以接受 5 個參數(shù):

setcookie(name,value,expiration,path,domain,secure,httponly);

  • name
  • value
  • expiration 指定 cookie 過期時間 沒有設置則為 session(瀏覽器)關閉為止
  • path 指定 web 站點特定文件夾特定域的 cookie
  • domain 指定子域 cookie
  • secure 指定 cookie 應當通過 HTTPS 連接傳送 1 為必須使用安全連接
  • httponly 限制對 cookie 的訪問防止 xss 的利器

刪除 cookie

通常 cookie 會在用戶瀏覽關閉或者過期時間到了之后自動過期,但是我們還是需要手動刪除它

刪除 cookie 有兩種方法:

  • setcookie(name,''); or setcookie(name,FALSE); 把值設為空
  • setcookie(name,FALSE,time() - 600); 把過期時間設為過去

什么是 session

session 是一種解決方案,解決的問題是它可以跟蹤用戶在一系列頁面訪問的數(shù)據(jù)

session 和 cookie 的區(qū)別:

  • cookie 存儲在客戶端,session 存儲在服務器端
  • session 通常更安全,數(shù)據(jù)不會在客戶端和服務器端來回傳輸
  • session 能夠存儲比 cookie 更多的東西
  • session 可以在用戶不接受他們?yōu)g覽器中的 cookie 時工作
  • cookie 更加容易創(chuàng)建和檢索
  • cookie 對服務器造成的壓力更少
  • cookie 能夠持續(xù)更長的時間

創(chuàng)建 session

使用 session_start 函數(shù)創(chuàng)建,訪問或者刪除 session

這個函數(shù)在首次啟動時,會發(fā)送一個 cookie,所以必須在任何 HTML 發(fā)送給瀏覽器之前調(diào)用,在使用 session 的頁面中,腳本必須起始行調(diào)用 session_start 函數(shù)

在第一次開啟 session 時,會產(chǎn)生一個隨機的 session ID,并向瀏覽器發(fā)送一個名為 PHPSESSID 的 cookie

啟用 session,向數(shù)組 $_SESSION 賦值的形式為:

$_SESSION['username']= 'daige';

函數(shù) session_name 函數(shù)可以修改 session 的名稱來替代 PHPSESSI,而且應該在調(diào)用 session_start 函數(shù)之前使用

函數(shù) session_set_cookie_params 函數(shù)用來修改 session cookie 的設置

訪問 session 變量

創(chuàng)建或者訪問一個存在的 session,都必須從 session_start 函數(shù)開始

訪問變量和普通數(shù)組一樣,如$_SESSION['mail'];

  • isset($_SESSION['var'])可以查看特定的 session 值是否存在
  • session中的數(shù)據(jù)都是以純文本的方式保存在一個可讀可寫的文本文件中,不要在 session 中存放敏感的數(shù)據(jù)
  • 為了提高安全性,session 可以加密存儲,讀取 session 時解密

刪除 session

session 的數(shù)據(jù)在兩個地方存在,所以需要在兩個地方進行刪除操作

必須從 session_start 函數(shù)開始,然后設置 $_SESSION 數(shù)組來刪除 session 值

$_SESSION = array(); 最后在服務器上刪除 session 數(shù)據(jù)session_destroy();