webentwicklung-frage-antwort-db.com.de

Wie verwende ich Zend\Session in zf2?

Versucht jemand zf2? Ich kann den neuen Mechanismus der Verwendung von Sitzungen in zf2 nicht verstehen. Wie kann ich in einem neuen Zend-Framework schreiben und lesen?

Ich kann auch keine Beispiele im Internet finden.

29
rdo

Einige Beispiele für die Verwendung von zf2-Sitzungen:

Sitzungserstellung:

use Zend\Session\Container;
$session = new Container('base');

Überprüfen Sie, ob der Schlüssel in der Sitzung vorhanden ist:

$session->offsetExists('email')

Wert aus der Sitzung nach Schlüssel holen:

$email = $session->offsetGet('email');

Einstellwert in der Sitzung:

$session->offsetSet('email', $email);

Wert in Sitzung zurücksetzen:

$session->offsetUnset('email');

Eine andere einfache Möglichkeit, die Sitzung zu verwenden, ist: 

$session = new Container('foo');

// Dies sind alle äquivalente Mittel zum selben Zweck

$session['bar'] = 'foobar';

$session->bar = 'foobar';

$session->offsetSet('bar', 'foobar'); 
68
rdo

Auf jeden Fall sollten Sie Zend\Session\Container verwenden.

Container-Erweiterungen von ArrayObject und instantiiert mit ARRAY_AS_PROPS-Flag. Dies bedeutet, dass Sie die Eigenschaften leicht durchlaufen und diese lesen und schreiben können, z.

use Zend\Session\Container as SessionContainer;

$this->session = new SessionContainer('post_supply');
$this->session->ex = true;
var_dump($this->session->ex);

Das erste Argument ist der Sitzungsnamensraum und das zweite - Manager. Manager ist eine Fassade für Storage und SaveHandler und wird mit ConfigInterface konfiguriert, um Ihre Sitzungsdaten in einer Datenbank oder einem Memcache-Server zu speichern. 

17
dVaffection

Ich arbeite derzeit mit zf2. Ich habe Verwendung von Sitzungen in gefunden: 

Zend\Authentication\Storage\Session.php 

Vielleicht findest du dort deine Antwort.

3
ohartl

Wenn Sie versuchen, die Sitzung in Ihrer Anmeldeaktion zu verwenden, können Sie Folgendes verwenden: "Zend\Authentication\AuthenticationService". Es authentifiziert den Benutzer und speichert auch die Sitzung.

getStorage()->write($contents) speichert die Sitzung.

1
musafar006

gut hier ist das kurze Beispiel. Ich habe in Bezug auf die Aufrechterhaltung der Sitzung auf erfolgreiche Authentifizierung des Benutzers implementiert.

<?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');
}
?>

abrufen von Werten oder Prüfen von in der Sitzung gespeicherten Daten in Bezug auf den Benutzer

<?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');
 }
?>

hoffe das kann jemandem helfen

0
zoomi
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.
0
Hajis Hakkim