Wie verwende ich Zend\Session in zf2?

Lesezeit: 4 Minuten

Benutzer-Avatar
rdo

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

Auch im Internet finde ich keine Beispiele.

  • Hat diese Antwort wirklich geholfen? Was hast du am Ende gefunden?

    Benutzer153275

    12. März 2012 um 23:34 Uhr

  • Ich habe ein Beispiel in Zend\Authentication\Storage\Session.php gefunden. Sie können beispielsweise so an eine Sitzung schreiben $session->offsetSet('email', $email);überprüfen Sie, ob das Feld so existiert $session->offsetExists('email') und Get-Feld mit dieser Codeausführung: $session->offsetGet('email'). Also, es ist das, was ich gesucht habe.

    – rd

    13. März 2012 um 5:17 Uhr

  • Auch Sitzung kann durch gestartet werden $session = new Container('base'); wo Container ist a Zend\Session\Container

    – rd

    13. März 2012 um 5:25 Uhr

  • Ich weiß, dass diese Frage ein bisschen alt ist, aber diese Frage ist aufgrund von Suchmaschinen beliebt, also für diejenigen, die lesen, hier ist ein Artikel, den ich zu diesem Thema geschrieben habe. Es sollte gut für den Einstieg in die Sitzungen in ZF2 sein. encodingexplained.com/coding/php/zend-framework/…

    – ba0708

    27. Dezember 2012 um 14:32 Uhr


Benutzer-Avatar
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 abrufen:

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

Einstellwert in Sitzung:

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

Wert in Sitzung zurücksetzen:

$session->offsetUnset('email');

Und andere einfache Möglichkeiten zur Verwendung von Sitzungen sind:

$session = new Container('foo');

// Dies sind alles gleichwertige Mittel zum selben Zweck

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

$session->bar="foobar";

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

  • Oh, bitte, verwenden Sie keine Methoden von ArrayAccess direkt. Das ist Bewegung. Zend\Session\Container implementiert auch benutzerdefinierte ArrayObject Das bedeutet, dass Sie Eigenschaften wie bei Objekten festlegen, abrufen und überprüfen können. Siehe meine Antwort oben

    – Dmitri

    19. Juli 2013 um 17:23 Uhr

  • Im Falle eines Hinweises oder einer Warnung können Sie dies folgendermaßen verwenden: $session->offsetSet(‘admin’, new \stdClass()); Dann: $session->admin->username = ‘John’;

    – Drk_alien

    15. März 2016 um 11:36 Uhr

Benutzer-Avatar
Dmitri

Definitiv ja, sollten Sie verwenden Zend\Session\Container

Container erstreckt sich von ArrayObject und instanziiert mit ARRAY_AS_PROPS Flag, das bedeutet, dass Sie Eigenschaften einfach durchlaufen und lesen/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 Session-Namespace und das zweite — Manager. Manager ist eine Fassade für Storage und SaveHandler und es ist mit konfiguriert ConfigInterface um Ihre Sitzungsdaten im DB- oder Memcache-Server zu speichern.

  • Die Verwendung von Unterstrichen für geschützte Felder oder Methoden ist nicht mehr im Trend ;). Hauptsächlich, weil moderne IDEs die Praxis obsolet machen und der Unterstrich Dinge hässlich aussehen lässt.

    – Markus

    14. Dezember 2012 um 14:08 Uhr

  • Ich bin Zend-Anfänger. Ich möchte wissen, wie man SessionContainer in zf2 verwendet. Meiner Meinung nach sollte eine Webanwendung nur einen SessionContainer haben, richtig? Wie bekomme ich also den sessionContainer in den Controller und zeige ihn an?

    – inza9hi

    21. September 2013 um 8:06 Uhr

Benutzer-Avatar
ohartl

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

Zend\Authentication\Storage\Session.php

Vielleicht findest du dort deine Antwort.

Benutzer-Avatar
musafar006

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

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

Nun, hier ist das kurze Beispiel. Ich habe die Aufrechterhaltung der Sitzung bei erfolgreicher 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 Überprüfen von Daten, die in der Sitzung gespeichert sind und sich auf den Benutzer beziehen

<?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 konnte jemandem helfen

  • Diese Antwort wurde am 11. Juli 2014 gepostet, nicht im Juli 2011.

    – Leo Galleguillos

    10. Juni 2016 um 2:17 Uhr

Benutzer-Avatar
Hajis Hakkim

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.

  • Diese Antwort wurde am 11. Juli 2014 gepostet, nicht im Juli 2011.

    – Leo Galleguillos

    10. Juni 2016 um 2:17 Uhr

Benutzer-Avatar
michaelbn

Um eine Sitzung zu starten, müssen Sie verwenden

zend\session\container

1138180cookie-checkWie verwende ich Zend\Session in zf2?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy