zf关于session的问题

Zend_Session_SaveHandler_DbTable()可以将session存储到数据库中。

这里我们存储到mysql数据库中。

(其实session最好存储到memcache中,主要原因memcache速度快,当然session少的时候也是可以存储到mysql中的)

要存储,首选要建表:

admin_session表

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for admin_session
-- ----------------------------
DROP TABLE IF EXISTS `admin_session`;
CREATE TABLE `admin_session` (
  `id` char(32) NOT NULL,
  `modified` int(10) unsigned DEFAULT '0',
  `lifetime` int(10) unsigned DEFAULT '0',
  `data` text,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

下一步 new Zend_Session_SaveHandler_DbTable()

数据库的配置信息我已写到配置文件里了,并通过Bootstrap.php文件获取了配置文件的信息

又因为我本身的程序直接继承的zend框架,所以像:

require_once 'Zend/Db.php';

require_once 'Zend/Session.php';

require_once 'Zend/Session/Namespace.php';

require_once 'Zend/Session/SaveHandler/DbTable.php'

都已继承了。

所以我们只需要session的一些数据方面的配置

数据库名

主键

字段等

$config = array(
	'name' => 'admin_session',
	'primaray' => 'id',
	'modifiedColumn' => 'modified',
	'dataColumn' => 'data',
	'lifetimeColumn' => 'lifetime'
);

重要部分出现了:

Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));

设置要存储的

启动会话

Zend_Session::start();

启动会话就会向数据库admin_session中插入数据

INSERT INTO `admin_session` VALUES ('d09768b26473ab31a8f0d82d09c1b140', '1345785277', '1440', '');

要注意的是这时的data字段数据为空,其他id ,modified,lifetime都有数据。

直到new Zend_Session_Namespace(‘参数’),data才有数据,参数影响了data数据的内容。

假如参数是ca,data数据的内容就是ca|a:1:{s:3:"uid";N;}

假如参数是cao,data数据的内容就是cao|a:1:{s:3:"uid";N;}

假如第一次是ca,第二次是cao,data数据的内容就是ca|a:1:{s:3:"uid";N;}|cao|a:1:{s:3:"uid";N;}

自己慢慢理解吧。

 

登录的时候

$session = new Zend_Session_Namespace(SESSION_LOGIN); //new Zend_Session_Namespace(参数)

$session->uid = $user->uid; //给$session 对象属性赋值 $session->uid

退出的时候

//$session = new Zend_Session_Namespace(SESSION_LOGIN); // new Zend_Session_Namespace()对象

Zend_Session::namespaceUnset(SESSION_LOGIN); //使用namespaceUnset()注销某个命名空间及其内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值