2017-03-16 1 views
2

J'utilise PHP et codeigniter. J'essaie de définir une variable en session.Valeur de session dans codeigniter

Contrôleur

defined('BASEPATH') OR exit('No direct script access allowed'); 

class Welcome extends CI_Controller { 

public function __construct(){ 

     parent::__construct(); 
     $this->config->base_url(); 
     $this->load->library('session'); 

     if(!$this->session->has_userdata('zoo')) 
     { 

     $fooBar = md5(uniqid(rand(), TRUE));//generates random number 
     $newdata = array(
        'username' => 'nirali', 
        'zoo' => $fooBar 
      ); 
     $this->session->set_userdata($newdata);  
     exit; 
     } 
} 

public function read_session(){  

     $array = $this->session->all_userdata(); 
     print_r($array); 
     exit; 
} 

} 

Lors de la première méthode setter du constructeur demande est exécuté et il remplit variable de session. et arrête l'exécution à cause de la sortie; déclaration.

Et quand je l'appelle read_session() il imprime

Array ([__ci_last_regenerate] => 1489646422 [username] => nirali [zoo] => 531d8bfb21ed21b83bc7e3763a04f88c) 

quand je me rappelle read_session() il imprime

Array ([__ci_last_regenerate] => 1489647898 [username] => nirali [zoo] => cb675bee85da672c95166dbc1dbbdfd2) 

Je reçois la valeur du nom d'utilisateur pour nirali qui devrait - tout bon mais pour le zoo, je reçois toujours une valeur différente, j'attends la même valeur pour la même session


Mise à jour

Lors du débogage plus loin je l'ai trouvé. Le serveur ne renvoie aucun cookie en réponse.

enter image description here

ce qui pourrait être mal dans la configuration du serveur qui n'envoie de cookie de session retour en réponse?

+0

essayer $ fooBar = md5 (uniqid (rand(), TRUE)); obtenir cette ligne sur si déclaration. –

+0

@ Shahid comment cela pourrait-il aider? ne va-t-il pas invoquer cela à chaque demande (comme opposé à la définition de ce qui est ce que OP essaie de faire) –

+0

@JigarJoshi Pas sûr. C'est pourquoi j'ai suggéré dans le commentaire et n'a pas posté une réponse –

Répondre

1

essayez ceci:

if(! $this->session->userdata('zoo')) 
{ 
    $fooBar = md5(uniqid(rand(), TRUE));//generates random number 
    $newdata = array(
       'username' => 'nirali', 
       'zoo' => $fooBar 
    ); 
    $this->session->set_userdata($newdata); 
}