Czy ktoś próbuje zf2? Nie mogę zrozumieć nowego mechanizmu korzystania z sesji w Zf2. Jak mogę pisać i czytać do/z sesji w nowej strukturze Zend?Jak korzystać z Zend Session w zf2?
Również nie mogę znaleźć żadnych przykładów w Internecie.
Czy ktoś próbuje zf2? Nie mogę zrozumieć nowego mechanizmu korzystania z sesji w Zf2. Jak mogę pisać i czytać do/z sesji w nowej strukturze Zend?Jak korzystać z Zend Session w zf2?
Również nie mogę znaleźć żadnych przykładów w Internecie.
Niektóre przykłady ZF2 sesje użytkowania: utworzenie
Sesja:
use Zend\Session\Container;
$session = new Container('base');
Sprawdź, czy klucz istnieje w sesji:
$session->offsetExists('email')
Uzyskiwanie wartości z sesji przez klucz:
$email = $session->offsetGet('email');
Nastawa w sesji:
$session->offsetSet('email', $email);
wartości wyłączające w sesji:
$session->offsetUnset('email');
i innych łatwy sposób wykorzystać sesji to:
$session = new Container('foo');
// to są odpowiednik ll oznacza w tym samym celu
$session['bar'] = 'foobar';
$session->bar = 'foobar';
$session->offsetSet('bar', 'foobar');
Och, proszę, nie używaj metod ** ArrayAccess ** bezpośrednio. To jest moveton. 'Zend \ Session \ Container' również implementuje niestandardowe ** ArrayObject **, co oznacza, że możesz ustawiać, pobierać i sprawdzać właściwości, tak jak robisz to z obiektem. Zobacz moją odpowiedź powyżej – dVaffection
W przypadku powiadomienia lub ostrzeżenia możesz użyć tego w ten sposób: $ sesja-> offsetSet ('admin', new \ stdClass()); Następnie: $ session-> admin-> username = 'John'; –
Aktualnie pracuję z zf2. Znalazłem wykorzystanie sesje:
Zend\Authentication\Storage\Session.php
Może znajdziesz tam odpowiedź.
Aby rozpocząć sesję trzeba użyć
zend\session\container
Zdecydowanie tak, należy użyć Zend \ Session \ Container
Pojemnik rozciąga się od ArrayObject i wystąpienie z ARRAY_AS_PROPS
flagi, które oznacza, że można łatwo iterację właściwości i czytać/napisz je, np
use Zend\Session\Container as SessionContainer;
$this->session = new SessionContainer('post_supply');
$this->session->ex = true;
var_dump($this->session->ex);
Pierwszy argument jest nazw sesji i drugi - Menedżer. Manager
jest fasadą dla Storage
i SaveHandler
i jest skonfigurowany z ConfigInterface
w celu zapisania danych sesji w DB lub serwerze Memcache.
Używanie podkreśleń w polach lub metodach chronionych nie jest już modne;). Głównie dlatego, że nowoczesne IDE sprawiają, że praktyka jest przestarzała, a podkreślenie sprawia, że rzeczy wyglądają brzydko. – markus
2 markus-tharkun Tak, wiem i już go nie używam;) – dVaffection
Jestem początkującym zendem. Chcę wiedzieć, jak używać SessionContainer w Zf2. Moim zdaniem, jedna aplikacja internetowa powinna mieć tylko jedną sesję sessionContainer, prawda? więc jak zdobyć sessionContainer w kontrolerze i wyświetlić? – inza9hi
Jeśli próbujesz użyć sesji w akcji logowania, możesz użyć: "Zend\Authentication\AuthenticationService
". Uwierzytelnia także sesję użytkownika i przechowywania.
getStorage()->write($contents)
zapisze sesję.
Oto krótki przykład. zaimplementowałem w odniesieniu do utrzymywania sesji po pomyślnym uwierzytelnieniu użytkownika.
<?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');
}
?>
uzyskanie wartości lub sprawdzić dane przechowywane w sesji związane z użytkownikiem
<?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');
}
?>
nadzieja to może pomóc komuś
Ta odpowiedź została wysłana 11 lipca 2014 r., A nie w lipcu 2011 r. –
use Zend\Session\Container;
public function createAction(){
$session = new Container('name');
$session->offsetSet('session_variable', $value);
}
//the above codes are used for create session.
public function take_valuesAction(){
$session = new Container('name');
echo $value = $session->offsetGet('session_variable');
}
//the above codes are used for take values from session.
public function destroyAction(){
$session = new Container('name');
$session->getManager()->destroy();
}
//the above codes are used for destroy the session.
Czy ta odpowiedź naprawdę pomóc? Co znalazłeś? –
Znalazłem przykład w Zend \ Authentication \ Storage \ Session.php. Na przykład możesz napisać do sesji takiej jak ta '$ session-> offsetSet ('email', $ email);', sprawdź, czy plik istnieje tak jak '$ session-> offsetExists ('email')' i pobierz pole z tym kodem wykonanie: '$ session-> offsetGet ('email')'. Tak, to jest to, co szukałem. – rdo
Sesję można również uruchomić za pomocą '$ session = new Container ('base');' gdzie kontener to 'Zend \ Session \ Container' – rdo