[PHP從小白到大牛]-023 PHP-會話控制 cookie/session

  • 什麼是會話

    • 會話就是具備邏輯關聯的多個簡單交互的集合

    爲何須要會話

    • http是無狀態協議
    • 每一個請求都是單獨處理的
    • 這也就意味着, 服務器對於兩次請求, 不知道是一個用戶請求兩次, 仍是兩個用戶, 請求一次...

    • 解決無狀態的思路就是給請求添加獨立的標記
    • 好比超市沒法記錄每一個顧客的購物歷史, 因此發明了會員卡

    會話控制

    • 控制會話的開始和結束
    • 識別並處理會話內的請求
    • 更新會話的狀態

    會話控制的幾種方式

    • cookie
    • session

    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
session_start();
$_SESSION['sessionName'] = 'sessionValue';
echo "session_id:".session_id(); // 顯示當前的session_id
echo "<br>";

// 讀取 session 的值
echo $_SESSION['sessionName'];

//銷燬一個session
unset($_SESSION['sessionName']);
echo "<br>";
var_dump($_SESSION);
複製代碼

實戰, 實現用戶的登陸註冊

相關文章
相關標籤/搜索