문제

나는 현재 데이터베이스베이스 세션을 통해 인증을 지속하려고 노력하지 않고 머리를 찢고 있습니다. 데이터베이스를 사용하도록 zend_session을 설정하고 검사시 Zend는 데이터베이스에 값을 쓰고 있습니다. 그러나 해당 세션의 ID는 phpsessid와 일치하는 것으로 보이지는 않지만 zend_session이 ID를 반환 할 때 일치하는 값을 반환합니다.

그래서 - 내 DB에는 다음과 같습니다.

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

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

그러나 Zend 세션 자체에서 ID를 호출하면 ...

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

Zend 세션에서 생성 된 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

그게 고정 된 것입니다. 아마도 내 아파치의 로컬 버그일까요?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top