kphp框架中实现自定义session会话处理方法的php和msyql代码分享
来源:互联网 发布:网络 锦城 编辑:程序博客网 时间:2024/04/27 22:03
kphp框架中对自定义session会话处理采用的是写入数据库,而不是写入文件,为什么选择session写入数据库呢?企业建站选择的便宜的虚拟主机空间大多对文件读写操作限制很严格,而且安全性不是很高。
因此kphp框架考虑到企业建站的实际需求,便在kphp框架中对自定义session会话处理的方法是通过php的session_set_save_handler函数将session的会话数据保存到mysql数据库中,当然kphp框架中也有自定义session写入文件的操作类,因为分享给企业网站开发的用户所以这里分享session会话处理采用的是写入数据库。
php语言要自定义session会话其实很简单,主要是你会用php内置的session_set_save_handler函数进行回调操作,它是处理session会话进行自定义函数或类方法的函数,而且规定每一步操作函数或方法的名字,我们只需要根据自己操作的需求,在各自的函数或类方法中进行逻辑操作处理即可。
下面我们来分享一下kphp框架中实现自定义session会话处理方法,因为kphp框架对session会话处理采用的是写入数据库处理的机制,所以我们首先需要,建立一个保存session数据的表,我们起名sessions表的创建代码如下:
CREATE TABLE `sessions` ( `session_id` varchar(32) NOT NULL default '', `session_data` text, `session_last` datetime default NULL, `session_name` varchar(50) default NULL, PRIMARY KEY (`sessionid`)) ENGINE=InnoDB DEFAULT CHARSET=gbk;
表创建完之后,我们需要利用session_set_save_handler函数来实现自定义session的会话处理,kphp框架中的自定义session会员处理采用静态类的方式,这里对调用操作更加方便直观,详细代码如下:
include("Data.php");class session{ static function init() { session_set_save_handler( array("session","open"), array("session","close"), array("session","read"), array("session","write"), array("session","destroy"), array("session","gc") ); } static function open($save_path,$session_name) { return true; } static function close() { return true; } static function read($id) { $s_data = new Data(); $timenow = strftime("%Y-%m-%d %H:%M:%S", time()); $readsql = "select session_data from sessions where session_id='$id' and session_last > '$timenow'"; $rs = $s_data->sqlRow($readsql); if(!empty($rs["session_data"])) { return $rs["session_data"]; } else { return false; } } static function write($id,$sess_data) { //echo "session writing now!<br>"; $s_data = new Data(); $unix_time = time()+MY_SESS_TIME; $date_last = strftime("%Y-%m-%d %H:%M:%S", $unix_time); $session_name = $_SERVER["REMOTE_ADDR"]; $wrow = $s_data->sqlRow("select session_id from sessions where session_id='$id'"); if(empty($wrow["session_id"])) { $n_session_id = session_id(); $sql = "insert into sessions set session_data='$sess_data', session_name='".$session_name."', session_last='$date_last', session_id='".$n_session_id."'"; } else { $sql = "update sessions set session_data='$sess_data', session_name='".$session_name."', session_last='$date_last' where session_id='$id'"; } $s_data->sqlExecute($sql); } static function destroy($id) { $s_data = new Data(); $sql = "delete from sessions where session_id = '$id'"; $bool = $s_data->sqlExecute($sql); return $bool; } static function gc($maxlifetime) { $s_data = new Data(); $timenow = strftime("%Y-%m-%d %H:%M:%S", time()); $sql = "delete from sessions where session_last < '$timenow'"; return $s_data->sqlExecute($sql); }}调用静态类方法session::init();session_start();define("MY_SESS_TIME",2592000); //SESSION 生存时长
下面具体说一下6个回调静态方法的执行
session::open() 方法:在运行session_start()时执行
session::close() 方法:在所有session操作完后被执行
session::read() 方法:在session_start时,会去读取当前session数据
session::write() 方法:在脚本结束和使用session_write_close()强制提交SESSION数据时执行
session::destroy() 方法:删除指定的session会话ID
session::gc() 方法:执行概率由session.gc_probability 和 session.gc_divisor的值决定,时机是在open,read之后,session_start会相继执行open,read和gc.
kphp框架中自定义session的会话处理方法就这么简单,只需要你会调用即可,还有注意:session_start(); 一定要放到session::init(); 后面。
如果你后台需要调用session类则直接建立一个ini.php文件然后把下面内容写入即可:
include("../../kphp/session.php");if(empty($_SESSION["admin_name"])){ echo "<script language=javascript>alert('登陆超时或者未登陆');location.replace('../login.php');</script>"; die();}
后台只需要每个页面包含ini.php即可。
以上就是kphp框架实现自定义session会话处理方法的php代码是不是很简单。
原文来自于kphp开源框架,转载请注明出处:http://www.kphp.org/?dguide-show-11.html
- kphp框架中实现自定义session会话处理方法的php和msyql代码分享
- kphp框架分享之html5中Video对象的preload、src和played属性讲解
- PHP中Session会话
- kphp开源框架分享:网站开发之前台css浏览器兼容方法!
- PHP会话处理——Cookie和Session
- php的session机制以及自定义会话管理器
- PHP中用户自定义Session处理机制
- 关于在SpringMVC框架中 实现数据库session会话环境变量的功能
- php session自定义处理
- 一个严格的PHP Session会话超时时间设置方法
- 在框架中获取会话session的三种方式
- 通知php使用自定义的session处理函数来操作session,而不使用php预置的方法
- GDM 中自定义一个会话(session)
- php中实现精确设置session过期时间的方法
- php中实现精确设置session过期时间的方法
- php中实现精确设置session过期时间的方法
- php中实现精确设置session过期时间的方法
- kphp开源框架学习篇之kphp框架整合smarty的全面讲解!
- 【转】HBase性能优化方法总结(1):配置优化
- HDU 4277 USACO ORZ(DFS爆搜 + set判重复)
- Linux下软件的安装与卸载方法
- FZU 1692 Key problem(循环矩阵)
- C#预处理器指令
- kphp框架中实现自定义session会话处理方法的php和msyql代码分享
- 扩展 Shader 编辑器
- 4002 大数 java
- 黑马程序员——Java之入门
- 【译】如何使用Android MediaStore裁剪大图片
- android 圆形ListView实现,并附带圆角ImageView
- [Erlang]好用的NIF外部库
- 你不知道的知识产权概念和范围
- Highcharts 4.1.8发布了