2010-03-13 3 views
1

J'ai un site qui fait quelques appels ajax sur le chargement de la page. Pour une raison quelconque, CodeIgnitor insère 4 sessions (j'en suppose une pour chaque appel ajax) lorsque vous chargez la page. Je stocke les sessions dans la base de données.CodeIgnitor génère plusieurs sessions dans la base de données. Pourquoi?

Je suis sûr qu'il devrait y avoir seulement une session par navigateur. Firefox semble générer seulement un; d'autres navigateurs semblent créer toute une série de sessions. Plusieurs sessions pour le même utilisateur me posent de sérieux problèmes d'authentification.

Pourquoi cela se produit-il? Comment puis-je l'arrêter?

+0

en raison d'utilisateurs amny est la navigation sur le site –

+0

non - tous les quatre ont la même adresse IP. –

+0

Pouvez-vous énumérer les problèmes réels que vous rencontrez? J'ai vu cela dans le passé, mais généralement en raison d'être déconnecté et visiter le site, il génère une session générique vide. Mettez également à jour votre question et incluez vos paramètres de cookie CONFIG. – Jakub

Répondre

7

Salut les gars,

je sais que la discussion a eu lieu il y a quelque temps, mais quelqu'un pourrait trouver cela utile. Maintenant, j'ai utilisé la session CI sans stocker ses données dans la base de données. Aujourd'hui, j'ai décidé d'essayer et j'ai immédiatement rencontré le même problème: CI générait une nouvelle session dans chaque chargement de page.

J'ai vérifié l'heure de mon serveur, mon fuseau horaire, mon cookie etc. - tout ce que je pouvais trouver comme un conseil sur les forums - sans résultat. Ensuite, j'ai décidé de débugger la classe Session CI moi-même. En bref, il s'est avéré que mon champ user_agent dans ma table de session était trop petit - VARCHAR 50 - qui coupe la chaîne user_agent d'origine - donc CI ne trouve pas ma session et génère une autre. J'ai simplement augmenté la taille du champ user_agent à 200 et tout fonctionne comme un charme.

J'ai oublié de mentionner que j'utilise Mac OS X Lion.

Encore une fois, j'espère que cela aidera quelqu'un.

0

Vérifiez votre fichier config.php et assurez-vous que les options de cookies sont correctement remplies. Si ce n'est pas le cas, il ne peut pas suivre l'utilisateur et il générera une nouvelle session sur chaque chargement de page.

+0

$ config ['sess_cookie_name'] \t = 'ci_session'; $ config ['sess_expiration'] \t = 3600; $ config ['sess_encrypt_cookie'] \t = FAUX; $ config ['sess_use_database'] \t = VRAI; $ config ['sess_table_name'] \t = 'ci_sessions'; $ config ['sess_match_ip'] \t = VRAI; $ config ['sess_match_useragent'] \t = VRAI; $ config ['sess_time_to_update'] \t = 300; –

+0

Plusieurs sessions se produisent uniquement dans safari, IE8, n'ont pas encore vérifié avec chrome. FF produit une entrée de session unique. –

1

Vérifiez la date et l'heure sur votre système d'exploitation client et sur votre serveur.

Je sais que trop tard, mais peut-être que quelqu'un trouve cette page en cherchant la réponse ...

Je pense que ce qui se passe parce que CI fixe une date d'expiration sur le cookie contenant l'identifiant de session et si la différence de temps entre le serveur et le client est supérieure à l'heure d'expiration, le cookie devient vieux et le serveur va générer une nouvelle session pour le client à chaque demande. Je n'ai jamais pris le temps de comprendre le mécanisme exact, mais cela m'est arrivé plusieurs fois, et cette solution a toujours fonctionné.

0

Vérifiez la date et l'heure sur votre système d'exploitation client et sur votre serveur.

J'ai eu la même situation et confirmer la solution comme une solution

1

J'ai trouvé ce sujet avec même problème: sur chaque page CI génère nouvelle session. Solution possible: supprimer souligné du nom du site (PAS "my_test_site.com", mais "my-test-site.com"). Au moins, cela a aidé dans ma situation.

-1
$config['cookie_domain'] = "example.com"; 

Utilisez votre nom de domaine dans cet extrait.

+1

Réponse au code uniquement. Aussi, c'est un lien vers un site pornographique là-bas. –

Questions connexes