php session 專題包含PHP Session概念、基本函數使用方法、PHP Session使用案例、PHP Session視頻教程以及相關精選文章,歡迎學習!
請點擊文末「閱讀原文」即可在線打開文中連結查看學習!
官方解釋:會話機制(Session)在PHP 中用於保持用戶連續訪問Web應用時的相關數據,有助於創建高度定製化的程序、增加站點的吸引力。要理解什麼是php session,首先要理解什麼是會話機制會話機制HTTP 是基於無連接的網絡協議, 每一次訪問,對於伺服器來說,都是全新的如果記住訪問者,以及記錄連接狀態, 可以提升用戶體驗,完成許多個性化的功能,例如用戶登錄、購物車等其實讓伺服器記住用戶的方式很簡單, 就和生活中, 我們辦會員卡是一樣的會員卡的存儲位置有二個地方, 要麼放在你身上,要麼保存到商家電腦中所以,網絡中的用戶資料也會保存在二個地方:瀏覽器(客戶端)和伺服器中延伸知識:php中session和cookie的區別連結:https:PHP Session 要點變量過濾器: filter_input(INPUT_SESSION, key)設置使用專用函數: setcookie(名稱, 值, 過期時間)生效需要分二步完成: 先下達指令到瀏覽器,再由瀏覽器完成 cookie 寫入二:PHP Session 基本函數介紹session_create_id ([ string $prefix ] ) : stringprefix:如果指定了prefix,則新會話id將以prefix為前綴。會話id中不允許包含所有字符。允許使用a-z a-z 0-9、 , (逗號)和 - (減號)範圍內的字符。返回當前會話的新的無衝突會話id。如果在沒有活動會話的情況下使用它,則會忽略衝突檢查。session_destroy ( void ) : bool返回值
成功時返回 TRUE, 或者在失敗時返回 FALSE。
3.session_id
獲取/設置當前會話 ID
session_id ([ string $id ] ) : string參數
返回值
返回當前會話ID。如果當前沒有會話,則返回空字符串("")。
4.session_name
讀取/設置會話名稱
session_name ([ string $name ] ) : string參數
返回值
返回當前會話名稱。如果指定 name 參數,那麼此函數會更新會話名稱,並且 返回 原來的 會話名稱。
5.session_start
啟動新會話或者重用現有會話
session_start ([ array $options = array() ] ) : bool參數
返回值
成功開始會話返回 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三:使用案例<?phpsession_start(); $_SESSION['username'] = 'adminuser';
$username = $_SESSION['username'];unset($_SESSION['username']);session_unset();$_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; session.use_trans_sid = 1;或者使用代碼來實現
if (!function_exists('session_create_id')) { function session_create_id(){ return uniqid(); }}$session_id = isset($_GET['SESSION_ID']) ? $_GET['SESSION_ID'] : session_create_id();session_id($session_id);session_start();$_SESSION['user'] = 'user01';
echo $session_id;3、瀏覽計數器
利用 session 機制可以實現 記錄用戶的訪問頁面的次數,代碼如下:
<?phpsession_start();
if (isset($_SESSION['view_num'])) {
$_SESSION['view_num'] = $_SESSION['view_num'] + 1;
} else {
$_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 還有很多優點,比如控制容易,可以按照用戶自定義存儲等(存儲於資料庫)。
下面是一個簡單的用戶登錄示例:
<?phpsession_start();if (isset($_SESSION['login_user'])) { die('已登錄!當前登錄用戶為:' . $_SESSION['login_user']);}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 視頻教程
1.PHP中session如何存儲及刪除變量的
視頻連結:https://www.php.cn/jishu/php/411618.html2.PHP如何用session來判斷用戶是否登錄
視頻連結:https://www.php.cn/jishu/php/411620.html3.PHP如何用session來記錄用戶登陸信息
視頻連結:https://www.php.cn/jishu/php/411619.html4.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(代碼詳解)
文章連結:https://www.php.cn/phpkj/laravel/441889.html8.ThinkPHP6.0:Session和Cookie機制的變化
文章連結:https://www.php.cn/phpkj/thinkphp/438724.html9.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(會話)的方法詳解
文章連結:https://www.php.cn/phpkj/laravel/414004.html