Codeigniter session des données perdues après la redirection
J'utilise codeigniter 2.1.0.
Je suis en train de faire une inscription/connexion fonction à l'aide de la session de la bibliothèque dans le codeigniter.
L'inscription/connexion à la session de la bibliothèque a bien fonctionné pour localhost, mais quand je l'ai mis direct et il a essayé, la session ne fonctionne pas.
Mon contrôleur de connexion fonctionne de cette façon. J'ai vérifier les informations d'identification, une fois ok, j'ai mis mon les données de session et de les rediriger vers une autre page.
$user_data = array(
'username' => $result->user_name,
'email' => $result->user_email,
'userid' => $result->user_id,
'role' => $result->user_role,
'login_state' => TRUE,
'lastlogin' => time(),
);
$this->session->set_userdata($user_data);
print_r( $this->session->all_userdata());
redirect(base_url('dashboard'));
à ce point là quand j'ai l'impression de toutes mes données de session, ils ne imprimer. Mais dans le tableau de bord contrôleur de côté, quand j'essaye d'imprimer les données de la session, ils n'y sont plus.
Aucune idée pourquoi? Merci d'avance pour l'aide.
- avez-vous résolu ? u peut poster la réponse
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas quel est exactement le problème. Récemment, j'ai du faire face à ce trop..
Il travaillait avant dans mon développement en cours d'exécution php7.0.
Actuellement, il est seulement de travailler dans mon serveur de production de course de nginx et php 5.6. Mon serveur de développement semble être pas de travail et ne cesse de se régénérer nouvelle ligne dans la table des sessions. Mon serveur de développement est à l'aide de php7.1, sur homestead virtualbox environnement de développement, habituellement utilisé pour Laravel projets.
J'ai réussi à obtenir au cours de cette prise de cette étape.
1) Aller à system/libraries/Session/Session.php
2) Commentaire session_start() en ajoutant //. Nous voulons déménager le sessionn_start().
3) descendez jusqu'à la ligne 315 où il est dit que la Sécurité est roi, et en commentaire jusqu'à ce que la ligne 351
4) Ensuite, allez à votre principal index.php ( la racine index.php )
5) Ajout de la fonction session_start() en haut à la fois.
6) Bien essayer de nouveau. Espérons que cela fonctionne. Ma conjecture est qu'il ne fonctionne pas avec php 7.1 et une mise à jour doivent être faites dans ce Session.php fichier.
si vous travaillez dans IC 3.x et juste mis à niveau votre serveur php version de php 7.x
Aller à system/libraries/Session/session.php à la Ligne n ° 281 et remplacer
ini_set('session.name', $params['cookie_name']);
parini_set('session.id', $params['cookie_name']);
C'est un plus "edelweiss" réponse mais je pense que ça nécessite plus d'attention et donc l'affichage de réponse.
2.1 CI est tristement célèbre pour avoir de la session de problèmes connexes. Il est préférable de nous remplacer le Sessions.php fichier avec celui-ci.
Le lien donné par "edelweiss" est cassé. L'Session.php fichier il mentionne, c'est:
Peut-être que vous n'automatique du chargement de la bibliothèque de la session.
Avez-vous essayez ceci dans le contrôleur de tableau de bord:
PHP 7 Mise à niveau - * Connu SESSION /COOKIE Bug
Cette réponse adresses connues session/cookie bug lors de la mise à niveau vers PHP7 à partir de PHP 5.
Si votre version de CodeIgniter est @ 3.1.0 ou ci-dessous - et vous mettez à niveau à la version 7.1 - Vous devrez mettre à jour CodeIgniter.
Il y a un bug avec
$this->session->set_userdata();
- qui peut être assez ennuyeux. Il permettra de remplacer votre session dès que vous réorienter ou de visiter une autre page à l'intérieur de la structure de votre site.Certains autres discussions concernant le bug:
https://github.com/bcit-ci/CodeIgniter/issues/4830
*Gagner du temps et de voir le post de par Voir le post "dyanakiev a commenté le 23 octobre, 2016" -
"Juste pour confirmer: Tout fonctionne parfaitement avec 3.1.1, pas plus de problèmes avec les sessions.
Bon travail! "
Voir instructions de mise à jour ici:
https://www.codeigniter.com/use.../installation/upgrading.html
Dernière CodeIgniter Télécharger ici:
https://codeigniter.com/download
*Je peux aussi confirmer ceci:
La mise à jour de codeigniter pour 3.1.6 fixe la session problème immédiatement - qui a eu lieu après j'ai mis à jour serveur PHP 7.1.*
Assurez-vous que votre application dispose des autorisations nécessaires pour créer les fichiers de session /tmp (où le fichier de sessions sont stockées) si vous n'êtes pas à l'aide d'une base de données pour les sessions.
Plus que probablement vous avez besoin de regarder php.ini sur le serveur de production et de vérifier la session gestionnaire de sauvegarde est défini http://devzone.zend.com/413/trick-out-your-session-handler/ l'explique plutôt bien.
Je me rends compte que vous essayez de déboguer votre question; mais avez-vous essayé de supprimer les echo/print avant de rediriger?
Je ne suis pas une 'session' expert, mais j'ai eu des problèmes similaires où l'impression les informations de débogage avant de rediriger causerait des données de session à l'mourir sur la page suivante.
Aussi, @edelweiss se trouve sur l'argent 🙂
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!
J'ai vu un poste similaire et a été réalisé ici est d'essayer en utilisant son sessions.php
Et ça marche pour moi!
http://www.philsbury.co.uk/blog/code-igniter-sessions
Assurez-vous de la fonction session_start() avant d'utiliser $_SESSION. J'ai eu ce problème, j'ai bêtement supposé que
va le faire pour moi, mais non.
J'ai été confrontée au même problème et après une longue recherche, j'ai trouvé la solution.
Ma session est stocké dans la bd pas dans les fichiers, mais même base de données est également réservé pour stocker la taille, je pense..
Ce n'est pas une question de noyau de codeigniter ou quelque chose qui est de la session automatiquement détruits ou autre chose..
C'est fait, le chargement de données dans la session, si nous sauver le plus d' & plus de données à l'intérieur de session avec Codeigniter("je ne suis pas sûr à propos de native session mais pour codeigniter je peux vous le confirmer"), il va détruire la session automatiquement.
Donc, ce que vous avez à faire est d'aller pour que le code que vous écrivez pour obtenir les données de la db ou quelque part d'autre et puis l'enregistrer en session dans userdata, essayez de réduire la charge de la sauvegarde des données à l'intérieur de la session et exclure que des données n'est pas nécessaire sur la page de session à chaque fois.
Laissez-moi savoir si il ya encore un problème..
Ce pourrait être la fin. Mais j'ai senti que je devrais laisser tomber. Eu le même problème aussi. Je m à l'aide de codeigniter et wiredesignz hmvc et j'ai remarqué l'erreur a été de le htaccess. Essayez d'ajouter une barre oblique inverse après la réécriture d'url de base
Au cas où quelqu'un coincé à l'aide de Homestead (comme je l'ai été), c'est un CodeIgniter bug et n'est pas présent sur les versions plus récentes (j'ai lu), vous pouvez mettre à niveau votre version CI ou de réduire votre version PHP "par projet" avec Homestead 6+, comme dans l'exemple:
et puis course simple
homestead provision
.J'ai résolu ce problème par la mise à jour de mon codeigniter.
Aller à Codeigniter télécharger
Télécharger et remplacer votre système de projet de dossier nouvellement téléchargé un.
Vérifier sur le
$config['base_url'] = 'http://localhost/';
si vous travaillez sur le localhost, et de le modifier pour$config['base_url'] = 'http://localhost';
sans le dernier/