Variable de session dans Codeigniter Not Working
Salut j'ai créé une session dans Codeigniter, j'ai mis la variable de session dans mon modèle. Mais après le réglage de la valeur de la variable de session quand je l'appelle variable de session dans mon point de vue par le Contrôleur de la variable de session valeur devient nulle. Toute aide???
Mise à jour
C'est mon Modèle où j'ai mis ma variable de session
function login ($username, $password)
{
$this->db->where('username' , $username);
$this->db->where('password', $password);
$query = $this->db->get('users');
if ($query->num_rows()>0)
{
foreach ($query->result() as $rows)
{
$data = array(
'user_name' => $rows->username,
'logged_in' => TRUE,
'validated' => true
);
}
$this->session->set_userdata($data);
//$user = $rows->username;
//$this->session->set_userdata('user_name', $user);
return true;
}
else
{
return false;
}
}
Voici mon contrôleur d'où je redirige à la vue
public function verification()
{
$username = $this->input->post('username');
$password = $this->input->post('password');
$result = $this->site_model->login($username, $password);
//$result = $this->session->set_userdata('validated');
if ($result)
{
//$this->admin();
//$this->session->set_userdata('login_state', TRUE);
redirect ('site/index');
}
else
{
redirect ('site/login');
//$this->load->view('login');
}
}
j'ai appelé le session_start();
dans le contrôleur en vertu de construct();
et c'est de cette façon-je accéder à la variable de session à mon avis
<?php if ($this->session->userdata('user_name') != "") { ?>
.....
source d'informationauteur Abbasi
Vous devez vous connecter pour publier un commentaire.
Tout d'abord dans CI vous n'avez pas besoin d'utiliser la fonction session_start() n'importe où. seulement autoload session en config/autoload.php fichier.
Supprimer la fonction session_start().
Essayez d'utiliser flashdata. Flashdata est de session temporaire, utilisé principalement dans le type de cas où Nous avons besoin de rediriger l'utilisateur vers une autre page et d'afficher un certain succès ou un message d'erreur.
Ensemble flashdata:
$this->session->set_flashdata('item', 'valeur');
obtenir flashdata:
$this->session->flashdata('item');
Voici le lien de la documentation http://www.codeigniter.com/user_guide/libraries/sessions.html#flashdata
utilisation de chargement automatique applications/config/autoload.php, pour ajouter une session liblary et de supprimer la fonction session_start();
Modèle de transmettre des données post vithout varibles, vous pouvez le faire comme ça:
contrôleur:
Modèle:
définir la variable de session dans le contrôleur..cela fonctionne pour moi nice
modèle
Contrôleur :
maintenant, si vous l'écho
<?php echo $this->session->userdata('user_name');?>
il va montrer la session nom d'utilisateur. vous pouvez écho de n'importe où, même dans la vue.espérons que cela vous aideraVous n'avez pas besoin d'utiliser la base de php
session_start();
Assurez-vous que vous Avez chargé session de la bibliothèque dans autoload.php
:
ou vous pouvez charger session de la bibliothèque manuellement : comme
Pour une Documentation plus Complète, Vous pouvez consulter : Lire La Documentation
veuillez utilisez ce code pour jeu de session dans codeigniter
J'ai eu le même problème et il s'est résolu à l'aide de ce code.Espérons que cela fonctionne pour vous aussi!.
Réglage des variables de session dans le Modèle, n'est pas une bonne idée pour tout le CMV cadre (comme codeigniter). Modifier votre Modèle
login()
fonction de sorte qu'il renvoie une belle série d'infos ...... et manipuler la session à partir du Contrôleur.
Aussi, afin d'avoir une session de données disponibles pour le fichier de vue, vous avez besoin de passer par l'intermédiaire de votre contrôleur
et puis vous pouvez faire ce que dans votre fichier de vue:
Bonjour je pense que vous avez besoin de changer votre modèle de code
Vous êtes paramètre de tableau dans la session et l'accès direct user_name en session
Je pense que code ci-dessous va travailler pour vous,
veuillez suivre les instructions ci-dessous.
assurez-vous d'avoir addedd session lib dans autoload.php fichier afin de session sera automatiquement chargé.
Lorsque vous utilisez la session en codigniter vous n'avez pas d'ajouter la fonction session_start() au début du fichier, car codigniter système de base sera traitée automatiquement.
C'est une bonne idée de définir des variables de session dans le contrôleur au lieu de modèle.
J'espère que cela vous aide dans la résolution de votre problème.
grâce.
Voici ma solution, espérons, aidera.. 😀
dans votre modèle.. j'ai copier coller le code dans le soufflet, mais j'ai changer un peu..
supprimer votre session_start() dans le contrôleur, et puis dans votre application/config/autoload.php
dans ce $autoload['bibliothèques'] = array(); => ajouter une session comme ceci
$autoload['bibliothèques'] = array('session');
Merci.. 😀
par défaut de l'utilisateur de session php, comme
session_start()
et$_SESSION
c'est de travailler pour moi. en php codeignatore