-
什麼是會話
爲何須要會話
- http是無狀態協議
- 每一個請求都是單獨處理的
- 這也就意味着, 服務器對於兩次請求, 不知道是一個用戶請求兩次, 仍是兩個用戶, 請求一次...
- 解決無狀態的思路就是給請求添加獨立的標記
- 好比超市沒法記錄每一個顧客的購物歷史, 因此發明了
會員卡
會話控制
- 控制會話的開始和結束
- 識別並處理會話內的請求
- 更新會話的狀態
會話控制的幾種方式
cookie
- 保存在客戶端(瀏覽器)
- 用於存儲用戶的關鍵信息
- 經過http請求頭和響應頭來傳輸
session
- 保存在服務端
- 用於存儲用戶的相關信息
- 經過保存在cookie裏的sessionid來定位session內容
cookie能作什麼?
cookie的工做原理
- 用戶請求服務器
- 服務器在HTTP響應中設置cookie
- 在cookie的有效期內, 用戶的每次請求都會攜帶cookie的值
- 服務器識別並處理cookie的內容
- 在攜帶cookie時, 只能夠訪問域名相同, 路徑匹配而且在有效期內的cookie
- 經過cookie指令發送具備訪問權限的cookie的值
- 多個值用
分號
隔開
cookie何時會失效
- cookie過時
- 手動刪除cookie, chrome 的快捷鍵
ctrl + shift + delete
- 刪除單條, 須要找到
內容設置
, cookie
, 查看cookie和全部訪問數據
, 手動刪除
- 使用服務器清除cookie的有效性, 設置過時時間爲一個過去的時刻, 這樣的話, cookie 則不可訪問
cookie的使用
設置/修改cookie 的值 setcookie()
- 返回值是boolean, 若是成功設置返回true, 失敗返回false
- 第一個參數, cookie的名稱
- 第二個參數, cookie的值
- 第三個參數, 過時時間, 是一個時間戳
$result = setcookie('username', 'admin', time()+3600);
if($result){
echo "設置成功!";
}else{
echo "設置失敗!!!";
}
複製代碼
-
cookie和session的區別(異同點):php
- 相同點:
- 均可以用來標記用戶, 客戶端, 能夠存儲數據
- http協議的一個補充, 能夠實現會話控制
- 不一樣點:
- 存儲方式不一樣:
- cookie是保存在客戶端的(瀏覽器)
- session是保存在服務器上的
- sessionid是存在cookie裏的
- 存儲內容不一樣:
- cookie能夠存儲簡單數據, 好比字符串
- session能夠存儲複雜的數據, 好比數組, 對象
- 工做方式不同
- cookie利用http協議直接傳輸會話數據
- session利用sessionid來定位會話
session
session_start();
$_SESSION['sessionName'] = 'sessionValue';
echo "session_id:".session_id();
echo "<br>";
echo $_SESSION['sessionName'];
unset($_SESSION['sessionName']);
echo "<br>";
var_dump($_SESSION);
複製代碼
實戰, 實現用戶的登陸註冊