2010-09-07 3 views
1

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

4

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.

+0

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

+0

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

+0

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

Questions connexes