PHP中用户自定义Session处理机制
2018-02-11 22:19
411 查看
*session_start() 会触发open(),read()
session_commit()以及页面执行完毕都会顺序触发 write(),close()*
自定义Session处理机制首先要设置php.ini选项session.save_handler = user,也可在 PHP程序 中进行设置:ini_set(‘session.save_handler’, ‘user’);
注意一定要把 “session.auto_start = 1 改成 session.auto_start = 0 ,不然设置ini_set(‘session.save_handler’, ‘user’);会引起报错。
接下来着重看 session_set_save_handle() 函数,此函数有六个参数:
session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)
各个参数为各项操作的函数名,这些操作依次对应是:打开、关闭、读取、写入、销毁、垃圾回收。
session_commit()以及页面执行完毕都会顺序触发 write(),close()*
自定义Session处理机制首先要设置php.ini选项session.save_handler = user,也可在 PHP程序 中进行设置:ini_set(‘session.save_handler’, ‘user’);
注意一定要把 “session.auto_start = 1 改成 session.auto_start = 0 ,不然设置ini_set(‘session.save_handler’, ‘user’);会引起报错。
接下来着重看 session_set_save_handle() 函数,此函数有六个参数:
session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)
各个参数为各项操作的函数名,这些操作依次对应是:打开、关闭、读取、写入、销毁、垃圾回收。
<?php class FileSessionHandler { private $savePath; //第一个参数$save_path对应的是ini_get('session.save_path') //第二个参数$name对应的是ini_get('session.name') function open($savePath, $sessionName) { $this->savePath = $savePath; if (!is_dir($this->savePath)) { mkdir($this->savePath, 0777); } return true; } function close() { return true; } function read($id) { return (string)@file_get_contents("$this->savePath/sess_$id"); } function write($id, $data) { return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true; } function destroy($id) { $file = "$this->savePath/sess_$id"; if (file_exists($file)) { unlink($file); } return true; } function gc($maxlifetime) { foreach (glob("$this->savePath/sess_*") as $file) { if (filemtime($file) + $maxlifetime < time() && file_exists($file)) { unlink($file); } } return true; } } $handler = new FileSessionHandler(); session_set_save_handler( array($handler, 'open'), array($handler, 'close'), array($handler, 'read'), array($handler, 'write'), array($handler, 'destroy'), array($handler, 'gc') ); // the following prevents unexpected effects when using objects as save handlers register_shutdown_function('session_write_close');
相关文章推荐
- PHP中用户自定义Session处理机制
- php的session可以自定义处理机制哦
- php中session的处理机制 (转)
- [PHP]自定义session存储机制的两种方案
- php之自定义session存储机制【3】
- kphp框架中实现自定义session会话处理方法的php和msyql代码分享
- 函数用户PHP自学之路----错误及异常处理机制、错误日志
- php session自定义处理
- JAVA Web 安全机制----使用filter验证session用户和页面缓存问题处理
- php session自定义处理
- php中session的处理机制 (转)
- 通知php使用自定义的session处理函数来操作session,而不使用php预置的方法
- 自定义session处理机制之数据库存储session
- php中session的处理机制
- php中session的处理机制 (转)
- 增加PHP的Session存储和处理能力
- php中session过期时间设置及回收机制详解:
- php利用pdo进行mysql的事务处理机制
- PHP中Session在配置和自定义文件存储
- PHP用户注册基本处理