php会议解决了网络的固有无状态性,从而启用了购物车,网站访问跟踪和用户导航监视之类的功能。在大多数情况下,PHP的默认会话处理足够,但自定义解决方案提供了扩展的功能和替代数据存储。本文解释了默认机制,并演示了如何覆盖它以进行定制的会话管理。
密钥概念:
PHP的默认会话处理通常是足够的,但是自定义处理程序允许多样化的数据存储(例如MySQL,XML,Memcache)。serialize()
unserialize()
>让您更换默认的会话处理程序。 它需要六个回调功能:会话打开,结束,阅读,写作,破坏和垃圾收集。session_set_save_handler()
>和SessionHandlerInterface
session.gc_probability
session.gc_divisor
>
在创建自定义处理程序之前,请了解PHP的默认行为。会话数据存储在服务器上的单个文件中,每个文件都链接到唯一ID(存储在浏览器cookie或url参数中)。 PHP使用此ID在后续请求中检索数据。php.ini
>
>您可以在中更改此路径或使用
。 在Web根目录之外存储会话数据可增强安全性。>
>会话文件(名为“ sess_”,后跟会话ID - 可通过获得)包含序列化数据。例如,存储
导致包含:<?php echo session_save_path(); ?>的文件
即使在自定义处理程序中,这种序列化也是一致的。您更改php.ini
session_save_path("/path/to/session/data");
如何处理。session_id()
>
$_SESSION["colors"] = array("red", "blue");
>
<code>colors|a:2:{i:0;s:3:"red";i:1;s:4:"blue";}</code>:
> 打开会话文件,并将数据加载到
中。 脚本结束时(或通过)保存数据。 >允许使用以下自定义回调进行覆盖: >每个生命周期阶段都需要一个注册的回调功能;否则,PHP发出警告。 回调可以是函数,闭合,对象方法或静态类方法。 构建自定义处理程序(MySQL示例): 以下函数演示了六个回调,使用PDO进行数据库交互: 记住用自己的占位符数据库凭据替换占位符数据库凭据。 此示例提供了一个基本框架;应添加错误处理和更多可靠的数据库交互,以供生产使用。 可以在 >
自定义会话处理程序提供灵活性和控制会话管理。 本文展示了基于MySQL的解决方案;相同的原理适用于其他存储机制。 请记住正确处理序列化/次要化并实施适当的错误处理和安全性措施。>
<?php echo session_save_path(); ?>
<code>colors|a:2:{i:0;s:3:"red";i:1;s:4:"blue";}</code>
内进行数据处理以适应特定需求(例如,在存储之前,不进行重组的数据)。read
write
结论:
以上是编写自定义会话处理程序的详细内容。更多信息请关注PHP中文网其他相关文章!