sessioni in zend

Salve qualcuno potrebbe farmi capire meglio come funzionano le sessioni in zend??? dalla guida ho capito tutte le funzioni per inizializzarle :

require_once 'Zend/Session.php';

Zend_Session::start(); 

per istanziarle:

Zend_Session::regenerateId();

$id = Zend_Session::getId();

$s = new Zend_Session_Namespace($id);

$s->username = $username;   

$s->password = $password;

$s->setExpirationSeconds(3600);

ma onestamente non so dove metterle.....io ho provato a mettere quelle per inizializzarle nel file di bootstrap e quelle per istanziarle nell'area di login sotto:

 switch ($result->getCode()){

 //Login riuscito.

 case Zend_Auth_Result::SUCCESS :

Zend_Auth::getInstance()->getStorage()->write($my_auth_adapter->getResultRowObject(array('user_id', 'nome')));

                //inzializzo la sessione 

                require_once 'Zend/Session/Namespace.php';

                Zend_Session::regenerateId();

   $id = Zend_Session::getId();

                $s = new Zend_Session_Namespace($id);

   $s->username = $username;   

   $s->password = $password;

   $s->setExpirationSeconds(3600);

ma non funziona!!! Insomma ci sto capendo poco, qualcuno può aiutarmi????

inviato 8 anni fa
reve
reve
1
X 0 X

In che senso non funziona? Non vengono salvati i dati? Ricevi messaggi di errore? Come controlli se i dati sono stati memorizzati?

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Be credo che i dati non li salvi proprio perche ho inserito il seguente controllo nelle varie pagine:

require_once 'Zend/Session/Namespace.php';

require_once 'Zend/Session.php';

Zend_Session::start();

if (!isset($s->username)) {

      $this->_flashMessenger->addMessage('Per accedere devi essere loggato');

       $this->_redirect('/');

}

e mi riporta sempre alla pagina index con messaggio di errore.

risposto 8 anni fa
reve
reve
1
X 0 X

ma $s da dove viene?

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Scusami per la poca chiarezza, comunque $s è il namespace con cui creo la sessione, ora ho risolto funziona, spiego a tutti coloro che leggeranno questo post come ho fatto (anche se non so è la soluzione giusta):

1) Creo la sessione nel file di bootstrap:

require_once 'Zend/Session.php';

Zend_Session::start();

2) Nel file ove faccio il login ho inserito il seguente codice:

//inzializzo la sessione 

require_once 'Zend/Session/Namespace.php';

Zend_Session::regenerateId();

$id = Zend_Session::getId();

try {

    $s = new Zend_Session_Namespace($id);

    $s->username = $username;   

    $s->password = $password;

    $s->initialized = true;

    //setto il tempo di scadenza

       $s->setExpirationSeconds(1800);

   } catch (Zend_Session_Exception $e) {

       $this->_flashMessenger->addMessage('Non è possible inizializzare la sessione');

       $this->_redirect('/');

   }

e poi in ogni pagina protetta dalla sessione ho inserito:

require_once 'Zend/Session/Namespace.php';      

$id = Zend_Session::getId();

$s = new Zend_Session_Namespace($id);

if (!isset($s->username)) {

     $this->_flashMessenger->addMessage('Per accedere devi essere loggato');

     $this->_redirect('/');

}

Chiedo a Gianni (o chiunque sia più esperto di me) di verificare la validità di quanto detto e di aiutarmi a correggere eventuali errori. Grazie mille CIAO a TUTTI

risposto 8 anni fa
reve
reve
1
modificato 8 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda