首頁  >  文章  >  web前端  >  細說session和cookie會話控制

細說session和cookie會話控制

韦小宝
韦小宝原創
2018-03-14 17:44:591473瀏覽

這篇文章講述了sessioncookie會話控制,大家對session和cookie會話控制不了解的話或者對session和cookie會話控制感興趣的話那麼我們就一起來看看本篇文章吧, 好了廢話少說進入正題吧

對於一個前端開發者,cookie我想大家都不陌生,經常會封裝一些諸如setcookie,getcookie的方法,session就好像一個最熟悉的陌生人一樣,在我們與後端開發者合作專案的時候會用到它,但是不理解它的本質,下面我們就來詳細探討下

cookie

儲存位置:儲存於客戶端
作用:本網域跨頁面儲存資料(我們似乎通常用來username,password)

cookie一般包含如下圖的資訊:

細說session和cookie會話控制

傳送:下面是一條http請求封包

細說session和cookie會話控制

在每次傳送請求中,cookie都會隨著http封包發往後台

cookie和session的關係

細說session和cookie會話控制

session

下面我以php語言為用例,講解session

#從上面可以看出session儲存在伺服器端,而且以檔案的形式儲存
session有很多特性,例如過期時間等,下面我們查看,打開php.ini檔案(裡面有php的諸多配置信息,我去除了n多註釋

細說session和cookie會話控制

下面我看看具體看看那個sessionID

細說session和cookie會話控制

可以看出,這也就與上面那個session.name = “PHPSESSID”不謀而合

我們已經清楚了前台瀏覽器是如何攜帶sessionID傳輸到後台,以及後台儲存session檔案的位置,那後台具體利用sessionID分析利用呢, 我們接著分析

為了分析機制,請看下面php程式碼

<?php
    session_start();
    header("Content-Type: text/html;charset=utf-8"); 
    if ($_SESSION[&#39;username&#39;] != &#39;success&#39;) {
        /* /php/index.php为当前文件路径 */
        $string = <<< EOF
            <form action="/php/index.php" method="post">
                <input type="text" name="value">
                <input type="submit">
            </form>
EOF;
        echo $string;
    }
    if ($_SESSION[&#39;username&#39;] == &#39;success&#39;) {
        echo "登录成功".PHP_EOL;
    }
    if ($_POST[&#39;value&#39;] == &#39;ys&#39;) {
        $_SESSION[&#39;username&#39;] = &#39;success&#39;;
        echo "登录成功".PHP_EOL;
    }
?>

執行了php文件,體驗session過程

細說session和cookie會話控制

##發現http的cookie頭部中的sessionID和伺服器session文件名稱一樣

這樣就能根據每次請求的session找到唯一的session文件,然後看看這個文件是怎麼樣的

username|S:7:"success";s|S:7:"success";ss|S:7:"success";

這是這個文件的內容,裡面有s,ss,username,其中s和ss就是我之前測試的名字(可以忽略),也就是這樣

username|S:7:"success";

然後每次後台就能根據sessionID確定唯一會話,設定諸如$_SESSION['username ']之類的加以判斷,實現cookie之間的通訊。

相關推薦:

phpsion和cookie總結分享

php會話控制session、cookie介紹#

以上是細說session和cookie會話控制的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn