в Zend, как проверить по идентификатору, что сеанс существует? - PullRequest
0 голосов
/ 28 февраля 2011

Я использую карты Google с данными XML, Google Maps работает так, что он вызывает мой сервер, чтобы получить XML (я должен передать ему URL, я не могу передать XML в Google),

, так как все мои страницы защищены паролем пользователя, Мне нужно реализовать какую-то аутентификацию для карт Google, поэтому я думал передать ей текущий идентификатор сеанса пользователя (каким-то образом зашифрованный), чтобы при вызове Google моего скрипта я мог проверить, существует ли сеанс с таким идентификатором, таким образом Google звонит мне от имени этого пользователя

Ответы [ 3 ]

1 голос
/ 14 марта 2012

Я закончил тем, что использовал свою собственную таблицу, чтобы сохранить сеанс и затем выполнить запросы к нему

в bootstrap.php

protected function _initSession()
    {

         $this->bootstrap('cache')
        $config = array(
            'name'              => 'session', //table name as per Zend_Db_Table
            'primary'           => array(
                'session_id',   //the sessionID given by PHP
                'save_path',    //session.save_path
                'name',         //session name
                //'cols' => array('session_id', 'save_path', 'name', 'modified', 'lifetime', 'session_data')
            ),
            'primaryAssignment' => array(
                //you must tell the save handler which columns you
                //are using as the primary key. ORDER IS IMPORTANT
                'sessionId', //first column of the primary key is of the sessionID
                'sessionSavePath', //second column of the primary key is the save path
                'sessionName', //third column of the primary key is the session name
            ),
            'modifiedColumn'    => 'modified',     //time the session should expire
            'dataColumn'        => 'session_data', //serialized data
            'lifetimeColumn'    => 'lifetime',     //end of life for a specific record
            'user_id' => 'user_id'
        );
        //Tell Zend_Session to use your Save Handler
        $savehandler = new Zend_Session_SaveHandler_DbTable($config);


        //http://framework.zend.com/wiki/display/ZFPROP/Zend_Session_SaveHandler_DbTable
        //cookie persist for 30 min
        $config = Zend_Registry::get('config');


        $seconds = $config->session->seconds_life;
        //Zend_Session::rememberMe($seconds = ($config->session->seconds_life));
        //make the session persist for 30 min
        $savehandler->setLifetime($seconds)
            ->setOverrideLifetime(true);

        Zend_Session::setSaveHandler($savehandler);

        Zend_Session::start();
    }
0 голосов
/ 01 марта 2011

Я бы предложил использовать метод класса Zend Session.

$sessionId = Zend_Session::getId();
0 голосов
/ 28 февраля 2011

session_id() даст вам идентификатор сессии текущего запроса. Вы можете попытаться отправить это в Google как файл cookie, помните, что для этого Google должен будет принять ваши файлы cookie. Если этого не произойдет, вам придется искать другой способ

...