J'ai des pages sécurisées qui vérifient toutes la présence d'une variable de session définie pour déterminer les utilisateurs connectés, ce qui est assez courant. Lorsque je rencontre des problèmes, c'est lorsque je soumets des informations de formulaire à une page principale qui traite ces données et redirige ensuite vers une page de confirmation de réussite/échec. En ce moment la session se perd, au moins la session avec la variable. La session est toujours là parce que je peux manuellement naviguer vers une page sécurisée après et cela fonctionne. Les redirections automatiques à partir d'une page principale vers une page sécurisée ou un lien sur l'une des pages non sécurisées après une redirection à partir du backend échoueront. Il peut être lié ou non, mais après avoir visité plusieurs pages sécurisées ou effectué l'une des opérations utilisant les pages dorsales problématiques, il existe deux cookies de session sur mon ordinateur, un enregistré sur domain.com et l'autre sur www.domain.com. À la fin de mon esprit à ce sujet, merci.Les sessions PHP ne sont pas transférées après les formulaires et les redirections
Répondre
Je vois deux problèmes ici, mais ils sont liés. Le premier est que vous semblez rebondir entre les pages sécurisées (https://
) et non sécurisées (http://
). Les cookies ne sont pas censés être partagés entre ceux-ci, c'est pourquoi votre session semble casser (PHP met un cookie avec l'ID de session). L'autre est étroitement lié et c'est le partage entre domain.com
et www.domain.com
. Les cookies peuvent partager dans une direction, mais pas dans l'autre. Ne vous inquiétez pas pour lequel: choisissez simplement un nom d'hôte et respectez-le. Vérifiez ensuite que vous définissez le domaine de cookie de la session sur le domaine correct.
Vous devez appeler session_start()
depuis votre page PHP avant de sortir quoi que ce soit, de préférence au début de la page.
Si la session a déjà été créée, elle la reprendra pour cette page.
- 1. Les sessions ColdFusion ne sont pas dépassées
- 2. EF4 - Les modifications ne sont pas capturées entre les sessions
- 3. PHP http ne pas enregistrer les sessions
- 4. Utiliser les sessions PHP
- 5. les sessions en php
- 6. Les sessions Django ne fonctionnent pas
- 7. Rails redirections avec les nouveaux utilisateurs et les connexions
- 8. Les formulaires ne sont pas soumis avec MECHANIZE dans PYTHON!
- 9. Fiddler ne pas afficher les sessions
- 10. Les en-têtes PHP ne sont pas envoyés au navigateur
- 11. les données de lien hypertexte ne sont pas transférées à la table de destination
- 12. Sécuriser les cookies dans les sessions PHP
- 13. Les données après <textarea> ne sont pas affichées
- 14. NHibernate: Les transactions ne sont pas fermées
- 15. Les sessions PHP sont verrouillées avec ajax à longue interrogation
- 16. php - détruire toutes les sessions
- 17. Problème avec les sessions et la redirection php
- 18. jQuery modifier les boîtes et les formulaires
- 19. Les cookies ne sont pas présents après l'utilisation de XMLHttpRequest
- 20. Les utilisateurs de PHP Sessions étant déconnectés
- 21. Pourquoi les enregistrements ne sont pas supprimés après test/spécification
- 22. Comment les sessions PHP sont-elles sauvegardées par défaut?
- 23. Les vidéos IPad ne sont pas lues après plusieurs exécutions
- 24. Les sessions PHP se terminent trop rapidement
- 25. AJAX et les formulaires
- 26. Comment synchroniser l'état entre les sessions PHP?
- 27. Question rapide sur les sessions en PHP
- 28. Problème avec les actions et les redirections Struts
- 29. Les sessions ASP.Net sont-elles partagées entre les iframes?
- 30. les sessions fonctionnent-elles lorsque les cookies sont désactivés?
Je dois souligner que je mispoke quand je disais sécurisé, je ne veux pas dire HTTPS sécurisé, juste que les pages vérifient l'état de la charge de la session de l'utilisateur. Le problème avec les deux sessions est qu'il n'est pas clair pourquoi il y en a deux en premier lieu. Les appels sont tous les mêmes appels session_start(), mais il y a toujours deux cookies différents. – drewster
Peut-être que l'une de vos pages intermédiaires ne fait pas le 'session_start()'. Ou essaie de le faire après que la sortie ait été émise. – staticsan
En prenant un cycle de cinq pages par exemple, toutes les pages démarrent une session. Ce serait la page de connexion -> page principale sécurisée -> page d'action arrière -> page de succès -> retour à la page principale, deux sessions différentes comme mentionné sont créées. Le domain.com sans www semble apparaître autour de l'étape 3, sur la page php que l'utilisateur ne verra jamais et qui ne traite que les données. Ce que j'ai testé en sécurisant l'étape 4 avec le même test pour les variables utilisateur utilisées sur le reste du site. – drewster