亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是php session 會話

發布時間:2020-07-15 15:46:24 來源:億速云 閱讀:188 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關什么是php session 會話,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

php session 專題包含PHP Session概念、基本函數使用方法、PHP Session使用案例、PHP Session視頻教程以及相關精選文章,歡迎學習!

一:PHP Session 是什么?

官方解釋:會話機制(Session)在PHP 中用于保持用戶連續訪問Web應用時的相關數據,有助于創建高度定制化的程序、增加站點的吸引力。

要理解什么是php session,首先要理解什么是會話機制

會話機制

HTTP 是基于無連接的網絡協議, 每一次訪問,對于服務器來說,都是全新的

如果記住訪問者,以及記錄連接狀態, 可以提升用戶體驗,完成許多個性化的功能,例如用戶登錄、購物車等

其實讓服務器記住用戶的方式很簡單, 就和生活中, 我們辦會員卡是一樣的

會員卡的存儲位置有二個地方, 要么放在你身上,要么保存到商家電腦中

所以,網絡中的用戶資料也會保存在二個地方:瀏覽器(客戶端)和服務器中

保存到瀏覽器中的叫: cookie

保存到服務器中的叫: session

延伸知識:php中session和cookie的區別

PHP Session 要點

  • 保存在服務器端

  • 變量: $_SESSION

  • 變量過濾器: filter_input(INPUT_SESSION, key)

  • 設置使用專用函數: setcookie(名稱, 值, 過期時間)

  • 生效需要分二步完成: 先下達指令到瀏覽器,再由瀏覽器完成 cookie 寫入

二:PHP Session 基本函數介紹

1.session_create_id

創建新會話id

session_create_id ([ string $prefix ] ) : string

參數

  • prefix:如果指定了prefix,則新會話id將以prefix為前綴。會話id中不允許包含所有字符。允許使用a-z a-z 0-9、 , (逗號)和 - (減號)范圍內的字符。

返回值

返回當前會話的新的無沖突會話id。如果在沒有活動會話的情況下使用它,則會忽略沖突檢查。

2.session_destroy

銷毀一個會話中的全部數據

session_destroy ( void ) : bool

返回值

成功時返回 TRUE, 或者在失敗時返回 FALSE。

3.session_id

獲取/設置當前會話 ID

session_id ([ string $id ] ) : string

參數

  • id:如果指定了 id 參數的值, 則使用指定值作為會話 ID。 必須在調用 session_start() 函數之前調用 session_id() 函數。 不同的會話管理器對于會話 ID 中可以使用的字符有不同的限制。 例如文件會話管理器僅允許會話 ID 中使用以下字符:a-z A-Z 0-9 , (逗號)和 - (減號)

返回值

返回當前會話ID。 如果當前沒有會話,則返回空字符串("")。

4.session_name

讀取/設置會話名稱

session_name ([ string $name ] ) : string

參數

  • name:用在 cookie 或者 URL 中的會話名稱, 例如:PHPSESSID。 只能使用字母和數字作為會話名稱,建議盡可能的短一些, 并且是望文知意的名字(對于啟用了 cookie 警告的用戶來說,方便其判斷是否要允許此 cookie)。 如果指定了 name 參數, 那么當前會話也會使用指定值作為名稱。

返回值

返回當前會話名稱。如果指定 name 參數,那么此函數會更新會話名稱,并且 返回 原來的 會話名稱。

5.session_start

啟動新會話或者重用現有會話

session_start ([ array $options = array() ] ) : bool

參數

  • options:此參數是一個關聯數組,如果提供,那么會用其中的項目覆蓋 會話配置指示 中的配置項。此數組中的鍵無需包含 session. 前綴。

返回值

成功開始會話返回 TRUE ,反之返回 FALSE

6.session_status

返回當前會話狀態

session_status ( void ) : int

返回值

PHP_SESSION_DISABLED 會話是被禁用的。

PHP_SESSION_NONE 會話是啟用的,但不存在當前會話。

PHP_SESSION_ACTIVE 會話是啟用的,而且存在當前會話。

7.session_unset

釋放所有的會話變量

session_unset ( void ) : void

三:使用案例

1、session基本操作

PHP Session 的常用基本操作

<?php
//開啟session會話
session_start();


//設置session
$_SESSION['username'] = 'adminuser';


//獲取session
$username = $_SESSION['username'];


//刪除session
unset($_SESSION['username']);


//清空session
session_unset();
//或
$_SESSION = [];


//銷毀session
session_destroy();

2、瀏覽器禁用 cookie 解決方法

cookie和session的區別在于cookie是保存在客戶端的,而session是存儲在服務端中。它們都有生存時間的設置,session比cookie更安全。

當服務端與客戶端通信后會生成會話后,會建立一個和瀏覽器的唯一會話PHPSESSID。這個id會在服務端保存,也會用cookie形式保存在客戶端中。

禁用cookie后session不能把唯一id通過cookie方式在客戶端中進行存儲,這時候php會在瀏覽器地址欄中以url明文get的方式來傳遞phpsessionid,來進行客戶端和服務端的唯一識別通信。

這樣一來程序的安全性大大降低了。所有在php.ini默認是關閉通過地址欄傳遞phpsessionid的,如果沒開啟就不能使用session,所以需要php.ini配置支持才行。

session.use_only_cookies = 1; // 開啟僅使用cookies存放會話id           
session.use_trans_sid = 1;     // 允許Sessionid通過URL明文傳輸,默認為0關閉

或者使用代碼來實現

/**
 * 兼容 php7.1 以下版本
 */
if (!function_exists('session_create_id')) {
    function session_create_id()
    {
        return uniqid();
    }
}

//獲取SESSION_ID
$session_id = isset($_GET['SESSION_ID']) ? $_GET['SESSION_ID'] : session_create_id();

//設置 SESSION_ID
session_id($session_id);

//開啟session
session_start();

$_SESSION['user'] = 'user01';

//echo $_SESSION['user'];

echo $session_id;

3、瀏覽計數器

利用 session 機制可以實現 記錄用戶的訪問頁面的次數,代碼如下:

<?php
//開啟session
session_start();

//判斷是否設置瀏覽數
if (isset($_SESSION['view_num'])) {
    //如果設置 瀏覽數加 1
    $_SESSION['view_num'] = $_SESSION['view_num'] + 1;
} else {
    //如果未設置 設置瀏覽數為 1
    $_SESSION['view_num'] = 1;
}

die('當前瀏覽數為:' . $_SESSION['view_num']);
?>

4、使用 session 實現登錄功能

對于 Cookie 來說,假設我們要驗證用戶是否登陸,就必須在 Cookie 中保存用戶名和密碼(可能是 md5 加密后字符串),并在每次請求頁面的時候進行驗證。

如果用戶名和密碼存儲在數據庫,每次都要執行一次數據庫查詢,給數據庫造成多余的負擔。因為我們并不能 只做一次驗證。為什么呢?

因為客戶端 Cookie 中的信息是有可能被修改的。假如你存儲 $admin 變量來表示用戶是否登陸,$admin 為 true 的時候表示登陸,為 false 的時候表示未登錄,在第一次通過驗證后將 $admin 等于 true 存儲在 Cookie,下次就不用驗證了,這樣對么?錯了,假如有人偽造一個值為 true 的 $admin 變量那不是就立即取的了管理權限么?非常的不安全。

而 Session 就不同了,Session 是存儲在服務器端的,遠程用戶沒辦法修改 Session 文件的內容,因此我們可以單純存儲一個 $admin 變量來判斷是否登陸,首次驗證通過后設置 $admin 值為 true,以后判斷該值是否為 true,假如不是,轉入登陸界面,這樣就可以減少很多數據庫操作了。

而且可以減少每次為了驗證 Cookie 而傳遞密碼的不安全性了(Session 驗證只需要傳遞一次,假如你沒有使用 SSL 安全協議的話)。即使密碼進行了 md5 加密,也是很容易被截獲的。

當然使用 Session 還有很多優點,比如控制容易,可以按照用戶自定義存儲等(存儲于數據庫)。

下面是一個簡單的用戶登錄示例:

<?php
session_start();

//判斷是否登錄
if (isset($_SESSION['login_user'])) {
    die('已登錄!當前登錄用戶為:' . $_SESSION['login_user']);
}

//判斷是否為POST請求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    //檢查是否輸入用戶名
    if (!isset($_POST['username']) || empty($_POST['username'])) {
        die('請輸入用戶名!');
    }

    //檢查是否輸入密碼
    if (!isset($_POST['password']) || empty($_POST['password'])) {
        die('請輸入密碼!');
    }

    //模擬數據
    $data = ['username' => 'user01', 'password' => md5('123456')];

    //檢查用戶名是否正確
    if ($_POST['username'] === $data['username']) {
        //檢查密碼是否正確
        if (md5($_POST['password']) === $data['password']) {
            //保存登錄狀態
            $_SESSION['login_user'] = $_POST['username'];
            die('恭喜你登錄成功!');
        }
    }

    //用戶名或密碼不正確
    die('用戶名或密碼不正確!');
}
?>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="=device-width, initial-scale=1.0">
    <title>用戶登錄</title>
</head>
<body>
<form action="./session02.php" method="post">
    <input type="text" name="username" placeholder="請輸入用戶名!">
    <input type="password" name="password" placeholder="請輸入密碼!">
    <button type="submit">登錄</button>
</form>
</body>
</html>

四:PHP Session 視頻教程

什么是php session 會話

1.PHP中session如何存儲及刪除變量的

2.PHP如何用session來判斷用戶是否登錄

3.PHP如何用session來記錄用戶登陸信息

4.php視頻教程之PHP會話管理

5.PHP視頻教程之會話控制session的工作機制

6.PHP高級視頻教程之和session存儲相關的一些面試題

7.ThinkPHP5基礎講解視頻教程之Session的使用

8.ThinkPHP5基礎講解視頻教程之Session的使用

9.PHP經典實戰視頻教程之SESSION示例(購物車)

10.會話管理視頻教程

11.Blog項目實戰之session原理

五:PHP Session 精選技術文章

1.PHP7中創建session和銷毀session的方法

2.利用php設置一個嚴格控制過期時間的session

3.php三種清空session的方式

4.PHP設置web集群session同步步驟詳解

5.通過Session對用戶操作權限進行判斷的實例詳解

6.Redis保存PHP Session的方法

7.Laravel使用Redis共享Session(代碼詳解)

8.ThinkPHP6.0:Session和Cookie機制的變化

9.PHP中Session ID的實現原理分析

10.php實現會員登陸注冊頁有html加Session和Cookie

11.php通過session_id恢復session內容

12.深入介紹PHP.ini中的session主要配置

13.微信小程序之獲取session_key與openid的案例(圖)

14.Session共享:php和redis集群如何實現Session共享

15.redis實現session共享的方法介紹

16.tp5實現登錄并保存session,再由不同角色權限跳轉頁面

17.理解php session運行機制

18.PHP獲取不到SESSION信息之一般情況解決方案

19.PHP+Session防止表單重復提交步驟詳解

20.PHP保持Session不過期的方法

21.PHP提高SESSION響應速度的方法

22.MemCache緩存與Session(知識匯總)

23.前端獲得session信息的幾種方式的對比

24.Laravel處理session(會話)的方法詳解

關于什么是php session 會話就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐城市| 永安市| 玉龙| 珲春市| 屏东市| 探索| 吉木萨尔县| 三原县| 康定县| 永顺县| 赤壁市| 任丘市| 宜春市| 军事| 仙游县| 安陆市| 永靖县| 海淀区| 鹤峰县| 三穗县| 永川市| 汉川市| 南阳市| 钟祥市| 绥芬河市| 邻水| 安远县| 连城县| 奈曼旗| 油尖旺区| 安西县| 咸丰县| 阿坝| 开封市| 靖边县| 封开县| 天气| 古丈县| 金秀| 金湖县| 济阳县|