PHP 会话管理
2021-06-03 15:02
标签:影响 没有 hello 注册 改变 pre session 两种 连接 目录 @ HTTP是一个无状态的协议,当一个用户请求一个页面之后再请求一个页面,PHP将无法判断这两个页面是否来自同一个用户。 会话是可以对用户登录状态进行跟踪的一个机制,从而避免多次验证。 会话通过cookie和session实现对整个会话过程的跟踪。 Session与cookie的功能相同。Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的。 PHP的会话是通过唯一的会话id所驱动的。会话id是一个加密的随机数字,保证每个用户所分配到的id是唯一的。在整个会话的声明周期中都会保存在客户端,可以保存在用户机器的cookie中,也可以写在url中。 Session的两种实现方式 环境配置 ==启用 php.ini 中的session_auto_stray,但是无法使用对象作为会话变量,因为会话先于对象载入==。 开启会话: 注册一个会话变量 ==会话变量可以由用户通过get或post传入== 销毁会话变量 销毁会话 session记录在服务端,对 在session文件中写入记录:time|s:4:"2000"; 在session文件中删除对应的记录 因为$_SESSION是一个数组,对数组置空的行为会删除所有的会话变量,即清空session 文件中所有的内容 结束会话的同时删除对应的session文件 当一台服务器存在多个网站时会产生大量的session文件,如果都放在同一个目录下会影响访问速度。 此时修改session文件的保存目录可以优化性能 ==更改路径的操作需要在 string session_name([string $name]) string session_id([ string $id] ) 使用 session_name() 不指定参数时返回session 的名称,指定参数时可以修改会话名称 当网站的运行时间较长且访问量较大时可能产生大量的session文件,如果没有对应的清理机制,硬盘迟早会被这些文件占满。 垃圾回收的一个原则是这个session文件应当有一段时间没有被使用,即设置一个生命周期,但是如果由PHP一直监控文件的创建时间会极大影响性能和访问速度。 所以触发垃圾回收机制应该是一个比较小概率的事件,触发概率事件时由PHP检查session文件的生命周期清理文件。 服务端为客户端设置cookie之后客户端的请求信息中会自动带有cookie信息。 对应超全局数组 PHP 会话管理 标签:影响 没有 hello 注册 改变 pre session 两种 连接 原文地址:https://www.cnblogs.com/lanying0/p/12348722.html
1、为什么需要会话控制
2、Cookie和session
3、PHP中的会话控制
session_start();
$_SESSION[‘键名‘]=5
数组中的键可以自定义
unset($_SESSION[‘myvar‘]);
$_SESSION = array()
$_SESSION = []
session_destory()
4、session操作实质
$_SESSION
的操作本质是服务器对session文件的操作。当客户端的访问请求中带有cookie时,服务器会从中取出session id并找到在硬盘上与id对应的session文件进行操作。
session_start();
sess_sessionId
的文件,其中存储会话过程中产生的数据。
$_SESSION[‘time‘]=2000
unset($_SESSION[‘time‘]);
$_SESSION = array()
$_SESSION = []
session_destory()
5、更改session的保存路径
echo session_save_path();
:输出session文件的保存路径echo session_save_path(‘路径‘);
:更改session文件的保存路径session_start()
开启会话之前==(文件产生之后再更改保存路径就没有意义了)
6、session的两个函数
7、session的垃圾回收机制
// php.ini 中的配置项
session.gc_probability
session清除无效session的基率。
session.gc_diviso
启动垃圾回收程序的概率。概率计算公式为:session.gc_probability/session.gc_divisor,如果网站访问量大建议将概率降低如 1/1000~5000。
session.gc_maxlifetime
session文件过期时间,超过这个时间没有使用的session将视为垃圾,将在下次垃圾回收时删除。
8、cookie操作
$COOKIE
bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain= "" [, bool $secure = false [, bool $httponly = false ]]]]]] )
var_dump($COOKIE);
setcookie(‘web‘,‘hello‘);
setcookie(‘web‘,‘hello‘,time()+1000);
setcookie(‘web‘,‘hello‘,1);
setcookie(‘web‘,‘hello‘,time()+1000,‘\app‘);
setcookie(‘web‘,‘hello‘,‘time()+1000‘,‘\app‘,‘cookie.test‘);
setcookie(‘web‘,‘hello‘,‘time()+1000‘,‘\app‘,‘cookie.test‘,‘true‘)
setcookie(‘web‘,‘hello‘,‘time()+1000‘,‘\app‘,‘cookie.test‘,‘true‘,‘true‘);
待补充:自定义session驱动