Session perdue après redirection dans Codeigniter
J'utilise codeigniter comme un cadre.
Tout d'abord, j'utilise localhost
mais quand j'ai changer mon adresse IP la fonction de connexion ne fonctionne plus. J'ai trouvé que la session est perdue après une redirection vers un autre contrôleur.
Ici est le résultat de print_r($this->session->all_userdata());
[session_id] => 7b00fa0f8790f48d24446f9eb4e6aab2
[ip_address] => 10.42.68.71
[user_agent] => Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1
[last_activity] => 1285962398
[user_data] =>
Comme vous pouvez le voir il n'a pas toutes les données transmises à user_data
mais il a été mis en avant de rediriger quand je test.
J'ai séparé le contrôleur à deux dont la première est l'utilisateur -> gestionnaire de la fonction de login et un autre est planificateur de gestionnaire du lien que j'ai rediriger les utilisateurs contrôleur.
users.php
(première commande):
$this->load->model('users_model');
$this->load->model('mymodel');
$this->load->database();
$email = $this->input->post('email');
$pass = $this->input->post('password');
$type = $this->input->post('type');
//Authenticate the user
$userdata = $this->users_model->auth_user($email,$pass,$type);
if($userdata)
{
$data = array('FIRSTNAME' => $userdata->FIRSTNAME,
'LASTNAME' => $userdata->LASTNAME,
'EMAIL' => $userdata->EMAIL,
'LOGIN' =>TRUE, 'TYPE' => $type);
$this->session->set_userdata($data);
redirect('planner/view_system','refresh');
}
planner.php
(deuxième contrôleur):
function __construct() {
parent::__construct();
if ( ! ($this->session->userdata('LOGIN')))
{
print_r (var_dump($this->session->userdata('FIRSTNAME')));
print_r($this->session->all_userdata());
}
$this->load->helper(array('form','html','url'));
Et voici ma config
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update'] = 300;
source d'informationauteur Zatanna
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devez vous assurer qu'il n'y a pas de caractères spéciaux dans la session éléments comme '\n' ou '\v'. Ces caractères peuvent mener votre chaîne à la rupture dans le milieu. Essayez (garniture) pour obtenir de l'aide.
Si c'est pas de l'utiliser, peut-être que c'est un problème d'encodage. Essayez de chiffrer la session de l'élément avant de la définir, et de les décrypter lorsque vous avez besoin de l'utiliser.
J'ai résolu ce problème en configurant le $config['cookie_domain'] localhost
j'ai d'abord eu cette variable nom de domaine pleinement qualifié comme http://www.exampledomain.com mais en attendant, j'ai été en utilisant un serveur local.
Le domaine que votre script est en cours d'exécution en vertu doit être le même que le domaine est défini en vertu de $config['cookie_domain] pour éviter l'échec inattendu avec codeigniter classe session.
Je suis ont le même problème, et il est avéré que le problème est très banale ...
racine du mal de mes problèmes étaient les noms contenant le caractère "_"
exemple, avant de a été
après est devenu
Mon problème est résolu
Merci homme avec cette ressource http://biostall.com/losing-codeigniter-sessions/
Dans mon cas, après quelques tests (avec https et http en localhost) l'erreur vient de ce problème et de ne pas avoir correctement réglé de $config['cookie_secure'], de sorte que vous pouvez essayer de modifier en config.php:
Cheers!
De mon expérience, les problèmes peuvent être:
Même problème avec moi.
Veuillez cocher avez-vous chargement d'une session de la bibliothèque dans le contrôleur.
Veuillez vérifier vos liens et assurez-vous qu'ils sont correctement écrits. Lors de l'écriture des URLs absolues, assurez-vous d'ajouter le 'www'. C'était le problème dans mon cas. J'espère que cela aide quelqu'un.
Bon:
header("location: http://www.yourdomain.com/controller/page");
Mauvais (les pauses de votre session):
header("location: http://yourdomain.com/controller/page");
J'ai été choqué au début, quand j'ai rencontré ce problème. Il m'est arrivé parce que mes données de session avait un signe@.
La solution est tout simplement de coder les données à l'aide de base64_encode.
Par exemple:
Et de la réutiliser, il suffit de faire ceci:
Espère que cette aide.
Vous devez ajouter quelque chose à votre autoload.php fichier.
cela permettra de résoudre votre session de re-direction de problème
C'est trop tard mais j'étais en face d'un même problème, heureusement, je résoudre ce problème par le changement peu sur les configurations ci-dessous.
Espère que cela fonctionnera pour vous aussi.
Session perdu après rediriger dans Codeigniter
J'ai trouvé le problème.
Vous encore rencontré le problème. Veuillez noter que la session de la direction de la codeigniter. Lorsque votre navigateur visité votre site web et d'actualiser un peu de temps, le codeigniter généré plus de fichiers de session en vertu de la session de la direction de la codeigniter.
Vous en détention provisoire du chargement de la bibliothèque de session sur votre contrôleur de fichier.
Veuillez consulter la suite config.php le réglage.
Lorsque vous changez le sujet de configuration, veuillez supprimer ou effacer toutes les données en mode hors connexion de votre navigateur et de toutes les sessions de fichier de la codeigniter. Ensuite, vous essayez de le faire à nouveau. C'est peut-être à réparer le problème.
Si vous ne pouvez pas encore à réparer le problème. Vous pouvez télécharger le paquet de codeigniter codeigniter.org de nouveau, puis extrayez le package pour l'environnement de test.