gestione sessioni

Ciao, ho trovato un sessionwrapper che sembra ben funzionare (classe esterna) ma mi perdo in alcuni dettagli

primo dubbio:

$myUser = SessionWrapper::getInstance();

//set

$myUser->setSessVar("example", $passwordmodificata);

//altra soluzione: $_SESSION["Default"]["example"] = "my value";

echo $myUser->getSessVar("example", "VUOTO");

perchè funziona solo con "example"??

io volevo fare

$myUser->setSessVar("password", $passwordmodificata);

$myUser->setSessVar("mail", $mail);

ma memorizza valori sono se uso example (io vorrei usare la stessa sessione per differenti valori)

secondo dubbio:

esiste un modo per gestire l'istanza della classe una sola volta (e non in tutti i controller)?? devo inserire il valore nel bootstrap?

Allego il codice della classe che gestisce le sessioni

require_once("Zend/Session.php");

class SessionWrapper {
    protected static $_instance;
    public $namespace = null;

   private function __construct() {
         /* Explicitly start the session */
         Zend_Session::start();

         /* Create our Session namespace - using 'Default' namespace */
         $this->namespace = new Zend_Session_Namespace();

         /** Check that our namespace has been initialized - if not, regenerate the session id
          * Makes Session fixation more difficult to achieve
           */
         if (!isset($this->namespace->initialized)) {
             Zend_Session::regenerateId();
             $this->namespace->initialized = true;
         }
   }

   /**
    * Implementation of the singleton design pattern
    * See http://www.talkphp.com/advanced-php-programming/1304-how-use-singleton-design-pattern.html
    */
   public static function getInstance() {
        if (null === self::$_instance) {
            self::$_instance = new self();
        }

        return self::$_instance;
    }

    /**
     * Public method to retrieve a value stored in the session
     * return $default if $var not found in session namespace
     * @param $var string
     * @param $default string
     * @return string
     */
    public function getSessVar($var, $default=null){
       return (isset($this->namespace->$var)) ? $this->namespace->$var : $default;
    }

    /**
     * Public function to save a value to the session
     * @param $var string
     * @param $value
     */
    public function setSessVar($var, $value){
       if (!empty($var) && !empty($value)){
          $this->namespace->$var = $value;
       }
    }
}
inviato 6 anni fa
il_dandi
X 0 X

Perchè non usi direttamente zend session?

http://framework.zend.com/manual/en/zend.session.html

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Mi piace questa soluzione perchè teneva la gestione in una classe esterna.... offrendo quindi la possibilità di gestire il tutto in da un unico in caso di modifiche successive nella gestione delle sessioni.

Tu hai qualche idea in merito al mio problema?

Grazie

risposto 6 anni fa
il_dandi
X 0 X

No...non ho capito...

Se sto creando un applicativo con zend framework sceglierei l'uso degli oggetti dello stesso...

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda