国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php之session2

2020-03-22 19:18:32
字體:
來源:轉載
供稿:網友
  • session是一種會話技術,它基于cookie,相比cookie具有更高的安全性。

    1.session原理

    這里寫圖片描述

    如圖所示,session會給客戶端發送一個session id,同時在服務端建立一個session數據區,客戶端在請求的時候提交session id,服務端通過這個session id在session數據區查找。客戶端僅存了一個session id ,它具有一定的時效性,重要的信息還是保存在服務端的,所以session會比較安全。

    2. session的操作

    session_set.php

    <?php//定義session數據文件的存儲路徑,windows下默認是C:Windows	empsession_save_path(getcwd().DIRECTORY_SEPARATOR.'temp');@session_start();echo session_id().'<hr>';//添加$_SESSION['name'] = 'tom';$_SESSION['age'] = 19;$_SESSION['height'] = 75.5;$_SESSION['edu'] = '小學';//修改$_SESSION['age'] = 22;//讀取var_dump($_SESSION);//刪除unset($_SESSION['edu']);echo '<hr>';var_dump($_SESSION);?>

    這里寫圖片描述

    來看看session保存數據的文件:
    這里寫圖片描述

    session數據區的內容都是通過序列化后的字符串保存的,讀取的時候再執行反序列化,session 支持多種數據類型存儲,而cookie只支持string.

    3.seesion中客戶端cookie屬性設置

    session的使用是基于cookie的,必須在客戶端保存一個session id的cookie,那么服務端可以設置這個cookie的屬性來告訴瀏覽器如何生成這個cookie:

    <?php//定義session數據文件的存儲路徑,windows下默認是C:Windows	empsession_save_path(getcwd().DIRECTORY_SEPARATOR.'temp');session_name('MYPHPSESSID');//設置session_cookie名稱, 默認是PHPSESSID/** *session_set_cookie_params($lifetime, $path, $domain, $secure, $httponly)  *$lifetime int 設置客戶端cookie的有效期,默認會話結束時 *$path string設置cookie的有效路徑 ,默認'/',可選參數 *$domain string 設置有效域,可選參數 *$secure boolean 是否僅在https下發送cookie 默認false,可選參數 *$httponly boolean 是否僅在http中可使用cookie 默認false,可選參數 *///設置cookie有效期60秒session_set_cookie_params(60, '/', '.phpcode.com', false, false) ;@session_start();echo session_id().'<hr>';$_SESSION['name'] = 'tom';?>

    這里寫圖片描述

    注意: session_set_cookie_params 必須要在 session_start()前設置。

    4.session數據區垃圾回收設置

    session數據區的數據隨著用戶對服務器的訪問會產生越來越多的垃圾數據,所以有必須進行垃圾掃描和垃圾清理。當然服務器不可能時時去掃描哪些數據是過期了,那樣服務器損耗很大,所以呢必須一定幾率去觸發,判斷到是垃圾的就清理掉。

    <?phpsession_save_path(getcwd().DIRECTORY_SEPARATOR.'temp');//設置cookie有效期60秒session_set_cookie_params(60, '/', '.phpcode.com', false, false) ;//設置為服務器被請求3次 有1次可能觸發gc ,進行垃圾回收ini_set('session.gc_probability', '1');ini_set('session.gc_divisor', '3');//默認1440秒后就被當為垃圾(最后一次寫+1440秒),gc的時候,把該session id對應的 session數據區刪除//設置為10秒后為垃圾ini_set('session.gc_maxlifetime', '10');@session_start();echo  session_id();$_SESSION['name'] = 'tom';echo '<hr>';var_dump($_SESSION);?>

    下面兩個參數是設置觸發垃圾掃描的概率
    ini_set(‘session.gc_probability’, ‘1’);
    ini_set(‘session.gc_divisor’, ‘3’);
    設置多長時間后就是垃圾,可以被回收
    ini_set(‘session.gc_maxlifetime’, ‘10’);

    5.禁用cookie如何使用session
    <?php//定義session數據文件的存儲路徑,windows下默認是C:Windows	empsession_save_path(getcwd().DIRECTORY_SEPARATOR.'temp');//在session_start 前設置以下兩項ini_set('session.use_only_cookies', '0');ini_set('session.use_trans_sid', '1');@session_start();echo  session_id();//添加$_SESSION['name'] = 'tom';echo '<hr>';var_dump($_SESSION);echo '<hr>';include 'show.html';?>

    show.html

    <!DOCTYPE html><html>    <head>        <meta charset='UTF-8'>        <title>Insert title here</title>    </head>    <body>        <a href='session_get_no_cookie.php'>forbidden cookie</a>        <form method='post' action='session_get_no_cookie.php'>            <input type='submit' value='submit'/>        </form>    </body></html>

    session_get_no_cookie.php

    <?php//定義session數據文件的存儲路徑,windows下默認是C:Windows	empsession_save_path(getcwd().DIRECTORY_SEPARATOR.'temp');if(isset($_GET['PHPSESSID'])){    session_id($_GET['PHPSESSID']);}else if(isset($_POST['PHPSESSID'])){    session_id($_POST['PHPSESSID']);}echo session_id().'<hr>';session_start();var_dump($_SESSION);

    這里寫圖片描述

    6.session如何持久化

    通常來說session不提倡持久化。
    如果非要持久化,如下設置:

    session_set_cookie_params(PHP_INT_MAX);ini_set('session.gc_maxlifetime', PHP_INT_MAX);#注意一定要在session_start前設置!!

    7.session和cookie區別和聯系

    聯系:
    Session基于COOKIE,session-id存儲于cookie中,cookie數據存放在客戶端瀏覽器上,session主要數據放在服務器上。

    區別:
    這里寫圖片描述

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 福鼎市| 聂荣县| 东莞市| 姚安县| 垫江县| 马龙县| 光泽县| 六安市| 工布江达县| 沛县| 诸城市| 宁南县| 镇坪县| 于田县| 靖州| 西乡县| 武邑县| 福建省| 卢氏县| 商城县| 界首市| 新晃| 沈阳市| 嘉峪关市| 永城市| 开封市| 荔浦县| 双柏县| 寻甸| 长白| 左云县| 抚宁县| 特克斯县| 湖州市| 穆棱市| 玉门市| 浦北县| 清镇市| 翁源县| 银川市| 喀喇|