Intereting Posts
что является альтернативой password_hash () для (PHP 5 <5.5.0)? Простое шифрование в PHP Как получить счет Google +1 для текущей страницы в PHP? mysql_connect (): расширение mysql устарело и будет удалено в будущем: вместо этого используйте mysqli или PDO Хороший алгоритм аппроксимации максимального совпадения максимального веса в не-двудольных графах? JQuery .val () не возвращает прерывания строки в текстовом поле Объединить несколько строк HTML в одном с PHP? Линейные разрывы, вызванные метками P и BR Графические координаты в PDF, отображаемые в iFrame Маркер с изображением и номером на картах google api Предотвращение повторного выполнения сценария при обновлении страницы Модификатор Smarty preg_match_all – регулярное выражение для поиска полных URL-адресов в строке Есть ли синтаксический анализатор PHP для Notepad ++? Пример учетной записи службы google возвращает «Ошибка обновления токена OAuth2 {« error »:« invalid_grant »}" Как я могу получить последние 7 символов строки PHP?

Лучший способ справиться с обработкой сессии в Zend Framework

Поэтому я начинаю работать в платформе Zend и планирую внедрить сеанс «User» на сайте. Я могу легко получить доступ со всех модулей / контроллеров в приложении.

Я хотел бы, должен ли я создать новое пространство имен в библиотеке и расширить контроллер, например:

class MYCUSTOMLIB_Controller_Action extends Zend_Controller_Action { protected $_userSession; function preDispatch(Zend_Controller_Request_Abstract $req) { $this->_userSession = new Zend_Session_Namespace('user'); } } 

А затем у меня все мои контроллеры / модули / etc?

Или я должен создать плагин или что? Как бы вы решили сделать этот плагин для передачи пользовательского сеанса контроллеру?

Или я делаю это в бутстрапе? Опять как пройти к контроллеру?

Также следует использовать Zend_Session_Namespace или Zend_Http_Cookie, а также как мне шифровать и xss чистить файл cookie или это делается автоматически?

Solutions Collecting From Web of "Лучший способ справиться с обработкой сессии в Zend Framework"

Я бы тоже инициализировал в бутстрапе:

 //Bootstrap.php protected function _initUserSession() { return new Zend_Session_Namespace('user'); } 

Тогда я использовал бы помощник действий:

 // library/App/Controller/Action/Helper/Session.php class App_Controller_Action_Helper_Session extends Zend_Controller_Action_Helper_Abstract { function direct() { return $this->getFrontController()->getParam('userSession'); } } 

Вы получаете доступ к нему в своем контроллере следующим образом:

 function indexAction() { $session = $this->_helper->session; } 

Вы должны инициализировать сеанс в начальной загрузке. Вы можете либо поместить его в Zend_Registry, либо получить доступ к нему таким образом, либо с ваших контроллеров, вы можете получить доступ к вашему загрузочному блоку, вызвав $ this-> getInvokeArg ('bootstrap').

 // in your controllers public function init() { $bootstrap = $this->getInvokeArg('bootstrap'); $this->_session = $bootstrap->getResource('session'); }