Кто-нибудь пытается zf2? Я не могу понять новый механизм использования сессий в zf2. Как я могу писать и читать в / из сеанса в новой структуре zend?
Также я не могу найти примеров в Интернете.
Некоторые примеры использования сеансов zf2:
Создание сеанса:
use Zend\Session\Container; $session = new Container('base');
Проверьте, существует ли ключ в сеансе:
$session->offsetExists('email')
Получение значения из сеанса по ключу:
$email = $session->offsetGet('email');
Значение настройки в сеансе:
$session->offsetSet('email', $email);
Сброс значения в сеансе:
$session->offsetUnset('email');
И другой простой способ использования сеанса:
$session = new Container('foo');
// это все эквивалентные средства для одного и того же конца
$session['bar'] = 'foobar'; $session->bar = 'foobar'; $session->offsetSet('bar', 'foobar');
Конечно, да, вы должны использовать Zend \ Session \ Container
Контейнер расширяет ArrayObject и создает экземпляр с помощью ARRAY_AS_PROPS
что означает, что вы можете легко перебирать свойства и читать / записывать их, например
use Zend\Session\Container as SessionContainer; $this->session = new SessionContainer('post_supply'); $this->session->ex = true; var_dump($this->session->ex);
Первый аргумент – это пространство имен сеанса, а второе – менеджер . Manager
– это фасад для Storage
and SaveHandler
и он сконфигурирован с помощью ConfigInterface
для сохранения ваших данных сеанса на сервере DB или Memcache.
Сейчас я работаю с zf2. Я нашел использование сеансов в:
Zend\Authentication\Storage\Session.php
Может быть, вы можете найти свой ответ там.
Если вы пытаетесь использовать сеанс в своем действии входа, вы можете использовать: « Zend\Authentication\AuthenticationService
». Он аутентифицирует пользователя и сохраняет сеанс.
getStorage()->write($contents)
будет хранить сеанс.
ну вот краткий пример. я реализовал в отношении поддержания сеанса успешной аутентификации пользователя.
<?php $registry = Zend_Registry::getInstance(); $DB = $registry['DB']; $authAdapter = new Zend_Auth_Adapter_DbTable($DB); $authAdapter->setTableName('user'); $authAdapter->setIdentityColumn("user_name"); $authAdapter->setCredentialColumn("user_password"); //get values $username = $request->getParam('username'); $password = $request->getParam('password'); //set values $authAdapter->setIdentity($username); $authAdapter->setCredential($password); $auth = Zend_Auth::getInstance(); //to store in session $auth->setStorage(new Zend_Auth_Storage_Session('front')); $authResult = $auth->authenticate($authAdapter); if ($authResult->isValid()) { $authAdap = $authAdapter->getResultRowObject(null, "Password"); $auth->getStorage()->write($authAdap); $this->_redirect('/login/controlpannel'); } else { $this->_redirect('/login/login'); } ?>
получение значений или проверка данных, хранящихся в сеансе, связанных с пользователем
<?php $auth = Zend_Auth::getInstance(); $auth->setStorage(new Zend_Auth_Storage_Session('front')); if($auth->hasIdentity()){ $data = $auth->getStorage()->read(); print_r($data); }else{ $this->_redirect('/login/login'); } ?>
надеюсь, это может помочь кому-то
Чтобы начать сеанс, вам необходимо использовать
zend\session\container