php session 会话(专题)
php session 专题包含PHP Session概念、基本函数使用方法、PHP Session使用案例、PHP Session视频教程以及相关精选文章,欢迎学习!
一:PHP Session 是什么?
官方解释:会话机制(Session
)在PHP 中用于保持用户连续访问Web应用时的相关数据,有助于创建高度定制化的程序、增加站点的吸引力。
要理解什么是php session,首先要理解什么是会话机制
会话机制
HTTP 是基于无连接的网络协议, 每一次访问,对于服务器来说,都是全新的
如果记住访问者,以及记录连接状态, 可以提升用户体验,完成许多个性化的功能,例如用户登录、购物车等
其实让服务器记住用户的方式很简单, 就和生活中, 我们办会员卡是一样的
会员卡的存储位置有二个地方, 要么放在你身上,要么保存到商家电脑中
所以,网络中的用户资料也会保存在二个地方:浏览器(客户端)和服务器中
保存到浏览器中的叫: cookie
保存到服务器中的叫: session
相关专题:php 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 视频教程
6.PHP高级视频教程之和session存储相关的一些面试题
7.ThinkPHP5基础讲解视频教程之Session的使用
8.ThinkPHP5基础讲解视频教程之Session的使用
10.会话管理视频教程
五:PHP Session 精选技术文章
7.Laravel使用Redis共享Session(代码详解)
8.ThinkPHP6.0:Session和Cookie机制的变化
10.php实现会员登陆注册页有html加Session和Cookie
13.微信小程序之获取session_key与openid的案例(图)
14.Session共享:php和redis集群如何实现Session共享
16.tp5实现登录并保存session,再由不同角色权限跳转页面
Atas ialah kandungan terperinci php session 会话(专题). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Memcached ialah teknologi caching yang biasa digunakan yang boleh meningkatkan prestasi aplikasi web dengan banyak. Dalam PHP, kaedah pemprosesan Sesi yang biasa digunakan adalah untuk menyimpan fail Sesi pada cakera keras pelayan. Walau bagaimanapun, kaedah ini tidak optimum kerana cakera keras pelayan akan menjadi salah satu kesesakan prestasi. Penggunaan teknologi caching Memcached boleh mengoptimumkan pemprosesan Sesi dalam PHP dan meningkatkan prestasi aplikasi Web. Sesi dalam PHP

Analisis perbandingan pemalsuan permintaan silang domain dan tapak silang PHPSession Dengan perkembangan Internet, keselamatan aplikasi web telah menjadi sangat penting. PHPSession ialah mekanisme pengesahan dan penjejakan sesi yang biasa digunakan semasa membangunkan aplikasi web, manakala permintaan silang asal dan pemalsuan permintaan merentas tapak (CSRF) ialah dua ancaman keselamatan utama. Untuk melindungi keselamatan data dan aplikasi pengguna, pembangun perlu memahami perbezaan antara domain silang Sesi dan CSRF, dan menerima pakai

Amalan Terbaik untuk Menyelesaikan Isu Merentas Domain PHPSession Dengan pembangunan Internet, model pembangunan pemisahan bahagian hadapan dan belakang menjadi semakin biasa. Dalam mod ini, bahagian hadapan dan bahagian belakang mungkin digunakan di bawah nama domain yang berbeza, yang membawa kepada masalah merentas domain. Dalam proses menggunakan PHP, isu merentas domain juga melibatkan penghantaran dan pengurusan Sesi. Artikel ini akan memperkenalkan amalan terbaik untuk menyelesaikan isu merentas domain sesi dalam PHP dan memberikan contoh kod khusus. Menggunakan KukiMenggunakan Kuki

Pemprosesan keserasian merentas domain dan merentas platform PHPSession Dengan pembangunan aplikasi web, semakin ramai pembangun menghadapi masalah merentas domain. Cross-domain merujuk kepada halaman web di bawah satu nama domain yang meminta sumber di bawah nama domain yang lain Ini meningkatkan kesukaran pembangunan pada tahap tertentu, terutamanya untuk aplikasi yang melibatkan pengurusan sesi (Sesi). Artikel ini akan memperkenalkan cara mengendalikan pengurusan sesi merentas domain dalam PHP dan menyediakan beberapa contoh kod khusus. Pengurusan Sesi ialah Kami

Pemprosesan log ralat rentas domain PHPSession Semasa membangunkan aplikasi web, kami sering menggunakan fungsi Sesi PHP untuk menjejak status pengguna. Walau bagaimanapun, dalam beberapa kes, ralat merentas domain mungkin berlaku, mengakibatkan ketidakupayaan untuk mengakses dan mengendalikan data Sesi dengan betul. Artikel ini akan memperkenalkan cara mengendalikan ralat silang domain PHPSession dan memberikan contoh kod khusus. Apakah ralat silang domain PHPSession? Ralat merentas domain merujuk kepada ralat dalam penyemak imbas

Hubungan antara serangan silang domain PHPSession dan skrip merentas tapak Dengan penggunaan aplikasi rangkaian yang meluas, isu keselamatan telah menarik perhatian yang semakin meningkat. Apabila membangunkan aplikasi web, pengendalian sesi pengguna adalah keperluan yang sangat biasa. PHP menyediakan mekanisme pengurusan sesi yang mudah - Sesi. Walau bagaimanapun, Sesi juga mempunyai beberapa isu keselamatan, terutamanya yang berkaitan dengan serangan skrip merentas domain dan merentas tapak. Serangan silang domain (Cross-Domain) merujuk kepada serangan melalui laman web

Analisis kebolehsesuaian PHPSession merentas domain dan seni bina sistem berbilang lapisan Dengan perkembangan teknologi Internet, seni bina sistem berbilang lapisan menjadi semakin biasa dalam aplikasi Web. Dalam seni bina sistem berbilang lapisan, akses merentas domain adalah keperluan biasa. Mekanisme Sesi dalam PHP juga digunakan secara meluas dalam fungsi seperti pengesahan dan perkongsian data dalam aplikasi Web. Artikel ini akan meneroka dengan mendalam kebolehsuaian merentas domain PHPSession dalam seni bina sistem berbilang lapisan dan memberikan contoh kod khusus.

Audit keselamatan merentas domain PHPSession dan ringkasan perlombongan kerentanan: Dengan pembangunan Internet, semakin banyak tapak web mula menggunakan PHPSession untuk mengurus status dan data log masuk pengguna. Walau bagaimanapun, disebabkan oleh ciri PHPSession, ia mempunyai beberapa risiko keselamatan, terutamanya dalam kes akses merentas domain. Artikel ini akan memperkenalkan kepentingan pengauditan keselamatan merentas domain PHPSession dan menyediakan beberapa contoh kod perlombongan kerentanan khusus. 1. Pengenalan PHPSession adalah sejenis
