質問

私は現在、データベースベースのセッションを介して認証を永続化しようとしているところです。データベースを使用するように Zend_Session を設定しました。調べてみると、Zend はデータベースに値を書き込んでいます。ただし、これらのセッションの ID は PHPSESSID と一致しないようですが、Zend_Session に ID を返させると、一致する値が返されます。

したがって、私のDBには次のものがあります。

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

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

それでも、Zend Session 自体から ID を呼び出すと...

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

Zend Session によって生成された ID は PHPSESSID の ID と一致する必要があると想定していますよね?

これが私のブートストラップです

    $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();

誰かがこれに光を当てることができれば、私は永遠に感謝します...

役に立ちましたか?

解決

うーん、当惑しています。テーブルの種類を 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 のローカルバグでしょうか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top