Кто-нибудь может попробовать zf2? Я не могу понять новый механизм использования сессий в zf2. Как я могу писать и читать в/из сеанса в новой структуре zend?
Также я не могу найти примеры в Интернете.
Кто-нибудь может попробовать 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
и SaveHandler
, и он настроен с помощью ConfigInterface
, чтобы сохранить данные сеанса на сервере БД или 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