1

我目前正在努力通过基于数据库的会话来保持身份验证。我已将 Zend_Session 设置为使用数据库,并且经过检查,Zend 正在将值写入数据库。但是,这些会话的 ID 似乎与 PHPSESSID 不匹配——但是当我让 Zend_Session 返回 ID 时——它返回一个匹配的值。

所以 - 在我的数据库中,我有:

ID.....MODIFIED.......LIFETIME...DATA

344..1265640083.......1440.......BLAH

然而,如果我从 Zend Session 本身调用 id ......

$id = Zend_Session::getId();
echo $id; // mbgspg2gvf1c3r9l7qpv6orgt4

我假设 Zend Session 生成的 ID 必须与 PHPSESSID 匹配,对吗?

这是我的引导程序

    $dbAdapter = $resource->getAdapter();//connection is tested and working

    Zend_Registry::set("db", $dbAdapter);

    $config = array(
                    'name'           => 'sessions',
                    'primary'        => 'id',
                    'modifiedColumn' => 'modified',
                    'dataColumn'     => 'data',
                    'lifetimeColumn' => 'lifetime',
                    'db'             => $dbAdapter
                    );
    Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
    Zend_Session::start();

如果有人能对此有所了解,我将永远感激不尽...

4

1 回答 1

1

好吧,我很困惑。我将表类型更改为 InnoDB,现在它可以工作了。

在我的辩护中 - 在主要文档中它没有指定 InnoDB: http: //framework.zend.com/manual/en/zend.session.savehandler.dbtable.html

而在这里它确实: http: //framework.zend.com/wiki/display/ZFPROP/Zend_Session_SaveHandler_DbTable?showComments=false

我祈祷这就是修复它的原因。也许是我的 Apache 中的一个本地错误?

于 2010-02-08T15:19:59.253 回答