Comment utiliser Zend Session dans ZF2?
-
13-11-2019 - |
Question
Quelqu'un essaie-t-il ZF2? Je ne peux pas comprendre un nouveau mécanisme d'utilisation des sessions dans ZF2. Comment puis-je écrire et lire sur / depuis la session dans New Zend Framework?
Je ne trouve pas non plus d'exemples sur Internet.
La solution
Quelques exemples d'utilisation des sessions ZF2:
Création de session:
use Zend\Session\Container;
$session = new Container('base');
Vérifiez que la clé existe en session:
$session->offsetExists('email')
Obtenir de la valeur de la session par clé:
$email = $session->offsetGet('email');
Définition de la valeur en session:
$session->offsetSet('email', $email);
Valeur non net dans la session:
$session->offsetUnset('email');
Et une autre façon facile d'utiliser la session est:
$session = new Container('foo');
// Ce sont tous des moyens équivalents au même extrémité
$session['bar'] = 'foobar';
$session->bar = 'foobar';
$session->offsetSet('bar', 'foobar');
Autres conseils
Certainement oui, vous devriez utiliser Zend session conteneur
Conteneur étend de ArrayObject et instancie avec ARRAY_AS_PROPS
Flag cela signifie que vous pouvez facilement itéré à travers les propriétés et les lire / les écrire, par exemple
use Zend\Session\Container as SessionContainer;
$this->session = new SessionContainer('post_supply');
$this->session->ex = true;
var_dump($this->session->ex);
Le premier argument est l'espace de noms de session et le deuxième - Gestionnaire. Manager
est une façade pour Storage
et SaveHandler
Et il est configuré avec ConfigInterface
Afin de enregistrer vos données de session dans DB ou Memcache Server.
Je travaille actuellement avec ZF2. J'ai trouvé l'utilisation de sessions dans:
Zend\Authentication\Storage\Session.php
Vous pouvez peut-être y trouver votre réponse.
Si vous essayez d'utiliser la session dans votre action de connexion, vous pouvez utiliser: "Zend\Authentication\AuthenticationService
". Il authentifie également l'utilisateur et le magasin.
getStorage()->write($contents)
stockera la session.
Eh bien, voici le bref exemple. J'ai mis en œuvre concernant le maintien de la session sur l'authentification réussie de l'utilisateur.
<?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');
}
?>
Obtenir des valeurs ou vérifier les données stockées en session liées à l'utilisateur
<?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');
}
?>
J'espère que cela pourrait aider quelqu'un
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.
Pour démarrer une session, vous devez utiliser
zend\session\container