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

cookie 和 session

創(chuàng)建 cookie

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

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

setcookie(name,value);

讀取 cookie

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

$_COOKIE['name']

添加 cookie 參數(shù)

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

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

  • name
  • value
  • expiration 指定 cookie 過(guò)期時(shí)間 沒(méi)有設(shè)置則為 session(瀏覽器)關(guān)閉為止
  • path 指定 web 站點(diǎn)特定文件夾特定域的 cookie
  • domain 指定子域 cookie
  • secure 指定 cookie 應(yīng)當(dāng)通過(guò) HTTPS 連接傳送 1 為必須使用安全連接
  • httponly 限制對(duì) cookie 的訪問(wèn)防止 xss 的利器

刪除 cookie

通常 cookie 會(huì)在用戶瀏覽關(guān)閉或者過(guò)期時(shí)間到了之后自動(dòng)過(guò)期,但是我們還是需要手動(dòng)刪除它

刪除 cookie 有兩種方法:

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

什么是 session

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

session 和 cookie 的區(qū)別:

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

創(chuàng)建 session

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

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

在第一次開(kāi)啟 session 時(shí),會(huì)產(chǎn)生一個(gè)隨機(jī)的 session ID,并向?yàn)g覽器發(fā)送一個(gè)名為 PHPSESSID 的 cookie

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

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

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

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

訪問(wèn) session 變量

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

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

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

刪除 session

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

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

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