tp3.1 session保存到数据库mysql,利用session驱动
1.我遇到的问题是:TP3.1在评论的时候需要判断是否有登录,如果没有登录,则需要先登录才能评论。
2.由于TP3.1默认的session登录过期时间比较短。所以我改了php.ini的一些配置,增加了session过期时间。
3.可能是服务器到达否个时间之后会自动清空session,大概2小时左右session又失效了。
4.于是我想到了可以把session保存到数据库,这样session就不会被清空了。
具体思路如下:
1、config.php配置文件修改
2、thinkphp框架默认DB驱动调用,SessionDB驱动库调用
3、创建DB驱动数据表pigcms_session
4、验证session自动生成
具体如下:
1.配置方法是在你项目的配置文件/Conf/config.php文件中,
'SESSION_AUTO_START' => true,//先把这里的false改为true,然后在下面加上
'SESSION_TYPE' => 'db', //数据库存储session
'SESSION_TABLE' => 'pigcms_session', //存session的表
1
|
放在目录\Extend\Driver\Session下,如果没有Driver/Session文件夹,就自己建。
|
很多朋友估计跟我一样,配置完了发现自己好像什么都没明白,于是就要挖根究底,找到了调用DB驱动类的方法
首先找到框架默认函数文件在ThinkPHP框架目录下Common/functions.php
找到session管理函数段
重点代码如下:
就可以看出文件位置在ThinkPHP框架目录下Extend/Driver/Session/SessionDb.class.php。
3.创建DB驱动数据表pigcms_session
创建这个表无需我们手动去建表,在SessionDb.class.php的开始部分,就有一段已经编写好的sql复制那段sql,并且修改为如下:
CREATE TABLE pigcms_session (
session_id varchar(255) NOT NULL,
session_expire int(11) NOT NULL,
session_data blob,
UNIQUE KEY `session_id` (`session_id`)
);
在数据库中执行即可创建成功4、验证session自动生成
经过以上步骤,Session驱动已经全部设置完毕
接下来我们要验证Session是否正确生成了
验证方法其实很简单,就是登录以后,查看pigcms_session数据表中是否生成了对应的session记录即可
另:由于session_data为二进制数据,所以无法直接在数据库中查看,可通过程序查出,并通过var_dump即可全部显示
简易验证方法在IndexAction.class.php中加入如下代码:
$session=M('pigcms_session')->select();//如果你的项目前缀是pigcms,写成$session=M('session')->select()即可
var_dump($session);
推荐阅读
-
tp3.1 session保存到数据库mysql,利用session驱动
-
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例,sessionhandler
-
php怎么把session保存到MySql数据库中
-
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
-
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
-
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例_php实例
-
php怎么把session保存到MySql数据库中
-
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例,sessionhandler
-
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
-
php中把session保存到MySQL数据库中示例