A voir également:
- [PHP] Déconnexion de Session non voulue
- Easy php - Télécharger - Divers Web & Internet
- Déconnexion intempestive wifi - Guide
- Estelle vient de verrouiller sa session d'ordinateur. que peut-on dire ? ✓ - Forum Windows 7
- Verrouiller la session - Forum Windows
- Retour a la ligne php ✓ - Forum PHP
10 réponses
Bonjour
Que ça vienne ou non de l'hébergeur, c'est un peu tôt pour le dire.
Peux-tu montrer le code d'une page qui a un lien ou un formulaire vers un sous-répertoire où on perd la session, ainsi que celui de la page où la session est perdue ?
Eventuellement, ne donne que les partie utiles du code et surtout pense à cacher les mots de passe s'il y en a.
Que ça vienne ou non de l'hébergeur, c'est un peu tôt pour le dire.
Peux-tu montrer le code d'une page qui a un lien ou un formulaire vers un sous-répertoire où on perd la session, ainsi que celui de la page où la session est perdue ?
Eventuellement, ne donne que les partie utiles du code et surtout pense à cacher les mots de passe s'il y en a.
Peux-tu montrer la génération d'un lien qui fais référence à une page dans un sous-répertoire ?
Sinon, parmi les classiques, es-tu sûr du respect des majuscules/minuscules dans les noms de sous-répertoires ?
Sinon, parmi les classiques, es-tu sûr du respect des majuscules/minuscules dans les noms de sous-répertoires ?
Par exemple :
Sinon oui, c'est ok pour les min/maj, et j'ai vérifié que les liens sont ok sur les pages générées...
if ($origin == 0){ $pre = ""; $pre2 = "pages/"; } else { $pre = "../"; $pre2 = ""; } .... println(" <div class=\"Body\">"); println(" <a href=\"${pre}lien1.php\">Lien 1</a>"); // Lien vers une page juste en dessous de www/ println(" <a href=\"${pre2}lien2.php\">Lien 2</a>"); // Lien (correct) vers une page du sous-rep "www/pages/", qui provoque la déconnexion println(" </div>");
Sinon oui, c'est ok pour les min/maj, et j'ai vérifié que les liens sont ok sur les pages générées...
je suppose que le [..] ci-dessous est présent ou non selon le niveau de sous-répertoire dans lequel on est.
include_once("[../]fonctions.php");
Il est possible qu'il y ait là quelque chose qui se passe mal. As-tu essayé de remettre le session_start(); AVANT le include_once ?
include_once("[../]fonctions.php");
Il est possible qu'il y ait là quelque chose qui se passe mal. As-tu essayé de remettre le session_start(); AVANT le include_once ?
Ajoute var_dump ($_SESSION); juste après le session_start(); d'une page où, selon toi, la session se déconnecte.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ta variable $_SESSION est effectivement vide ...
Peux-tu retirer ce var_dump ($_SESSION); et en remettre un à la fin de la page où il y a les liens qui ne fonctionnent pas ? Peut-être la session est-elle détruite par autre chose avant la fin de ta page.
Peux-tu retirer ce var_dump ($_SESSION); et en remettre un à la fin de la page où il y a les liens qui ne fonctionnent pas ? Peut-être la session est-elle détruite par autre chose avant la fin de ta page.
ça aurait été surprenant De toutes façons, c'est surprenant.
J'ai beaucoup de mal à croire que les sessions marchent sur certaines pages et pas sur d'autres seulement pour une question de répertoire.
Le fichier directement pointé par <a href=\"${pre2}lien2.php\"> commence -t-il bien par :
<?php
session_start();
var_dump($_SESSION);
(sans oublier le php après le <? et sans intercaler de include avant le session_start ?
J'ai beaucoup de mal à croire que les sessions marchent sur certaines pages et pas sur d'autres seulement pour une question de répertoire.
Le fichier directement pointé par <a href=\"${pre2}lien2.php\"> commence -t-il bien par :
<?php
session_start();
var_dump($_SESSION);
(sans oublier le php après le <? et sans intercaler de include avant le session_start ?
Désolé, je dois avouer que je n'ai plus d'idée de manips à faire pour coincer le problème.
Il reste la piste de l'hébergeur dont tu parlais au départ, mais je n'y crois guère.
Peux-tu recréer provisoirement un petit sous-ensemble avec une page principale et deux pages cibles, une dans le même répertoire et l'autre dans un sous-répertoire, et , s'il y a le même problème, mettre le lien ici ?
Soit le défaut disparait quand tu simplifies, et il faudra reconstruire la vraie application progressivement pour voir quel est l'élément qui provoque le problème
oui bien le problème subsiste et là .. ben je ne sais pas
Il reste la piste de l'hébergeur dont tu parlais au départ, mais je n'y crois guère.
Peux-tu recréer provisoirement un petit sous-ensemble avec une page principale et deux pages cibles, une dans le même répertoire et l'autre dans un sous-répertoire, et , s'il y a le même problème, mettre le lien ici ?
Soit le défaut disparait quand tu simplifies, et il faudra reconstruire la vraie application progressivement pour voir quel est l'élément qui provoque le problème
oui bien le problème subsiste et là .. ben je ne sais pas
Voilà, j'ai recréé un mini-test (c'est peut-être par ça que j'aurais dû commencer). 4 fichiers :
- connexion.php
- test_connexion.php
- sousrep/test_connexion.php
- deconnexion.php
l'adresse d'upload est http://www.goldeneye.fr/connexion.php
Ceci étant dit, y'a un truc curieux, c'est que j'ai essayé de mettre tous ces fichiers dans un sous-répertoire et non à la racine, et là ça marche...
Je vais écrire à mon host ; merci quand même pour l'aide.
- connexion.php
<?php session_start(); print("<html><body>\n"); if (!isset($_SESSION['test'])){ print("Vous n'étiez pas connecté<br>\n"); $_SESSION['test'] = 1; print("Vous êtes désormais connecté<br>\n"); } else { print("Vous étiez connecté<br>\n"); } print("<a href=\"test_connexion.php\">Lien</a> vers une page du même répertoire.<br>\n"); print("<a href=\"sousrep/test_connexion.php\">Lien</a> vers cette même page dans un sous répertoire.<br>\n"); print("<br><a href=\"deconnexion.php\">Se déconnecter</a><br>\n"); print("</body></html>\n"); ?>
- test_connexion.php
<?php session_start(); print("<html><body>\n"); if (!isset($_SESSION['test'])){ print("Vous n'étiez pas connecté<br>\n"); } else { print("Vous étiez connecté<br>\n"); } print("<a href=\"connexion.php\">Se reconnecter</a><br>\n"); print("</body></html>\n"); ?>
- sousrep/test_connexion.php
<?php session_start(); print("<html><body>\n"); if (!isset($_SESSION['test'])){ print("Vous n'étiez pas connecté<br>\n"); } else { print("Vous étiez connecté<br>\n"); } print("<a href=\"../connexion.php\">Se reconnecter</a><br>\n"); print("</body></html>\n"); ?>
- deconnexion.php
<?php session_start(); session_destroy(); print("<html><body>\n"); print("Vous êtes déconnecté<br>\n"); print("<br><a href=\"connexion.php\">Se reconnecter</a><br>\n"); print("<br><a href=\"test_connexion.php\">Lien</a> vers test<br>\n"); print("</body></html>\n"); ?>
l'adresse d'upload est http://www.goldeneye.fr/connexion.php
Ceci étant dit, y'a un truc curieux, c'est que j'ai essayé de mettre tous ces fichiers dans un sous-répertoire et non à la racine, et là ça marche...
Je vais écrire à mon host ; merci quand même pour l'aide.
bonjour silver angel
Et bonne année.
Je trouve qu'aucun de tes liens ne conserve la session, pas seulement les liens qui font changer de répertoire.
Mais ce qu'il y a de bizarre, et qui viendrait de ton hébergeur, ce sont les liens eux-mêmes : si je tape une adresse
http://www.goldeneye.fr/connexion.php le lien vers la même page est http://xx.xx.xx.xx/~goldeney//test_connexion.php.
1 - le double slash dans l'URL ne me semble pas normal
2 - on a changé de domaine.
En tapant directement l'URL avec l'adresse IP, je retrouve bien que la session est conservée quand on reste dans le même répertoire, et perdue quand on en change. J'ai fait une série de manips dont je ne tire malheureusement aucune conclusion cohérente.
Si un jour tu as le fin mot de l'histoire, peux-tu le mettre ici ? je serais curieux de comprendre.
Et bonne année.
Je trouve qu'aucun de tes liens ne conserve la session, pas seulement les liens qui font changer de répertoire.
Mais ce qu'il y a de bizarre, et qui viendrait de ton hébergeur, ce sont les liens eux-mêmes : si je tape une adresse
http://www.goldeneye.fr/connexion.php le lien vers la même page est http://xx.xx.xx.xx/~goldeney//test_connexion.php.
1 - le double slash dans l'URL ne me semble pas normal
2 - on a changé de domaine.
En tapant directement l'URL avec l'adresse IP, je retrouve bien que la session est conservée quand on reste dans le même répertoire, et perdue quand on en change. J'ai fait une série de manips dont je ne tire malheureusement aucune conclusion cohérente.
Si un jour tu as le fin mot de l'histoire, peux-tu le mettre ici ? je serais curieux de comprendre.
27 déc. 2008 à 15:15
toutes les pages commencent plus ou moins de la même manière :
la fonction "debut($public,$db,$origin)" affiche les en-têtes et les liens en fonction du niveau de protection de la page (public, privé, protégé, admin), du type du compte et de la connexion (non-connecté, connecté - type 1, 2 ou admin), et $origin sert à définir le niveau de profondeur pour les liens (les pages du répertoire courant sont ensuite préfixées de "", les pages au-dessus de ".." et les pages en dessous du nom du répertoire qui va bien.
En fait, la fonction debut commence comme suit :
Le cas 1 correspond à un utilisateur non connecté, le cas 4 à un utilisateur déjà connecté. En affichant des traces de debug, je vois bien que pour les pages du même répertoire (qu'elles soient privées ou publiques), la session reste ouverte (cas = 4), et pour les pages situées dans un répertoire en-dessous, la session est déconnectée (cas = 1, du haut).
Je rappelle que le code marche en local et marchait sur le serveur il y a quelques temps. Je pense que le problème ne vient du code lui-même mais plutôt d'un fichier de configuration quelconque de php...
Merci,
silver angel