国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php session 會話(專題)

PHPz
發(fā)布: 2020-07-11 17:55:31
原創(chuàng)
7246人瀏覽過
php session 專題包含PHP Session概念、基本函數(shù)使用方法、PHP Session使用案例、PHP Session視頻教程以及相關(guān)精選文章,歡迎學(xué)習(xí)!

php session 會話(專題)

一:PHP Session 是什么?

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

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

會話機制

HTTP 是基于無連接的網(wǎng)絡(luò)協(xié)議, 每一次訪問,對于服務(wù)器來說,都是全新的

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

立即學(xué)習(xí)PHP免費學(xué)習(xí)筆記(深入)”;

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

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

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

保存到瀏覽器中的叫: cookie

保存到服務(wù)器中的叫: session

延伸知識:php中session和cookie的區(qū)別

相關(guān)專題:php cookie(圖文專題)

PHP Session 要點

  • 保存在服務(wù)器端

  • 變量: $_SESSION

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

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

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

二:PHP Session 基本函數(shù)介紹

1.session_create_id?

創(chuàng)建新會話id

session_create_id ([ string $prefix ] ) : string
登錄后復(fù)制

參數(shù)

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

返回值

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

2.session_destroy

?銷毀一個會話中的全部數(shù)據(jù)

session_destroy ( void ) : bool
登錄后復(fù)制

返回值

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

3.session_id

獲取/設(shè)置當前會話 ID

session_id ([ string $id ] ) : string
登錄后復(fù)制

參數(shù)

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

返回值

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

4.session_name?

讀取/設(shè)置會話名稱

session_name ([ string $name ] ) : string
登錄后復(fù)制

參數(shù)

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

返回值

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

5.session_start?

啟動新會話或者重用現(xiàn)有會話

session_start ([ array $options = array() ] ) : bool
登錄后復(fù)制

參數(shù)

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

返回值

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

6.session_status?

返回當前會話狀態(tài)

session_status ( void ) : int
登錄后復(fù)制

返回值

PHP_SESSION_DISABLED 會話是被禁用的。

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

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

7.session_unset?

釋放所有的會話變量

session_unset ( void ) : void
登錄后復(fù)制

三:使用案例

1、session基本操作

PHP Session 的常用基本操作

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


//設(shè)置session
$_SESSION['username'] = 'adminuser';


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


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


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


//銷毀session
session_destroy();
登錄后復(fù)制

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

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

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

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

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

session.use_only_cookies = 1; // 開啟僅使用cookies存放會話id           
session.use_trans_sid = 1;     // 允許Sessionid通過URL明文傳輸,默認為0關(guān)閉
登錄后復(fù)制

或者使用代碼來實現(xiàn)

/**
 * 兼容 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();

//設(shè)置 SESSION_ID
session_id($session_id);

//開啟session
session_start();

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

//echo $_SESSION['user'];

echo $session_id;
登錄后復(fù)制

3、瀏覽計數(shù)器

利用 session 機制可以實現(xiàn) 記錄用戶的訪問頁面的次數(shù),代碼如下:

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

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

die('當前瀏覽數(shù)為:' . $_SESSION['view_num']);
?>
登錄后復(fù)制

4、使用 session 實現(xiàn)登錄功能

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

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

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

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

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

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

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

<?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('請輸入密碼!');
    }

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

    //檢查用戶名是否正確
    if ($_POST['username'] === $data['username']) {
        //檢查密碼是否正確
        if (md5($_POST['password']) === $data['password']) {
            //保存登錄狀態(tài)
            $_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>
登錄后復(fù)制

四:PHP Session 視頻教程

37.png

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

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

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

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

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

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

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

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

9.php cookie0

10.php cookie1

11.php cookie2

五:PHP Session 精選技術(shù)文章

1.php cookie3

2.php cookie4

3.php cookie5

4.php cookie6

5.php cookie7

6.php cookie8

7.php cookie9

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

以上就是php session 會話(專題)的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!

PHP速學(xué)教程(入門到精通)
PHP速學(xué)教程(入門到精通)

PHP怎么學(xué)習(xí)?PHP怎么入門?PHP在哪學(xué)?PHP怎么學(xué)才快?不用擔心,這里為大家提供了PHP速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應(yīng)法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn
最新問題
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號