Variable superglobale $_SESSION

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Dormeur74
Arias
Messages : 4
Inscription : 15 juin 2013, 09:14

Variable superglobale $_SESSION

Message par Dormeur74 »

Bonjour tout le monde,
Après une semaine de recherche, je n'arrive pas à régler un problème de sessions sous PHP.
Le site sur lequel je travaille est constitué d'une zone publique, d'un formulaire de connexion pour les personnes inscrites et de pages protégées réservées aux inscrits.
Mon formulaire de connexion (HTML) demande un login et un mot de passe stockés dans une base MySQL. Ces identifiants sont traités dans un fichier traitement.php qui commence par ouvrir une session.

Code : Tout sélectionner

  session_start();
  $newSession = 'blablabla';
  $_SESSION['verif'] = $newSession;

  // Identification
  etc.
Si le login et/ou le mot de passe n'est pas conforme, le visiteur est envoyé vers la page echec.php, sinon il est envoyé vers la page succes.php.

La page succes.php a le contenu suivant :

Code : Tout sélectionner

<?php
  session_start();
  $session=$_SESSION['verif'];
 
  if (!isset($_SESSION['verif'])):
	echo "SUPERGLOBALE NON CREEE";
  else:
	echo "SUPERGLOBALE CREEE";
  endif;
?>
Sous Internet Explorer ma variable superglobale est créée et tout se passe normalement, sous Firefox 21.0, elle n'existe pas.
Mon navigateur est paramétré pour accepter les cookies. Je crois avoir épuisé toutes les solutions (cookies jusqu'à la fin de la session, jusqu'à la fermeture de Firefox, etc.), rien n'y fait. Si je consulte la liste des cookies à supprimer, je trouve pourtant deux PHPSESSID (avec des contenus différents) pour mon site.

Je ne sais plus que faire. C'est un problème très souvent évoqué sur la toile, mais après 8 jours de recherche, je n'ai rien trouvé de satisfaisant. Avez-vous une idée ?
Votre Navigateur : Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Re: Variable superglobale $_SESSION

Message par calimo »

Salut Dormeur74,

Les sessions sont quelque chose de délicat à mettre en place, il y a plein de choses qui peuvent mal se passer et il est très difficile de dire quoi avec deux petits extraits de code comme ça.

Je te recommande de démarrer à partir d'un code déjà tout fait, par exemple sur le site du zéro tu as un exemple qui peut te servir de base. Pour l'authentification aussi je te recommande de partir de quelque chose d'existant pour minimiser le risque de failles de sécurité.

Si tu maitrises l'anglais, tu as un plus grand choix de lectures, par exemple celle-ci qui semble pas mal.

Dernière option, utiliser un framework comme Zend pour ce genre de tâches ingrates
Votre Navigateur : Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0
Dormeur74
Arias
Messages : 4
Inscription : 15 juin 2013, 09:14

Re: Variable superglobale $_SESSION

Message par Dormeur74 »

Merci d'avoir répondu aussi vite.
Je me suis largement inspiré de l'exemple donné sur le site du zéro pour monter mon truc. En fait mon code marchait depuis des années jusqu'à ce que je change mon profil sous Firefox qui prenait 5 bonnes minutes pour s'ouvrir au lancement de Windows. Maintenant il s'ouvre vitesse grand V, mais mes sessions ne fonctionnent plus. Je vais essayer avec la fonction setcookie() et explorer les pistes que tu m'as données.

Ce qui m'étonne, c'est que dans la liste des cookies spécifiques à supprimer, j'en ai 2 qui sont créés portant le même nom (PHPSESSID), mais ayant des ID de session héxadécimaux différents ; probablement dûs aux deux session_start();

En tout cas, merci pour tout.
Votre Navigateur : Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Re: Variable superglobale $_SESSION

Message par calimo »

Dormeur74 a écrit :Merci d'avoir répondu aussi vite.
Je me suis largement inspiré de l'exemple donné sur le site du zéro pour monter mon truc. En fait mon code marchait depuis des années jusqu'à ce que je change mon profil sous Firefox qui prenait 5 bonnes minutes pour s'ouvrir au lancement de Windows. Maintenant il s'ouvre vitesse grand V, mais mes sessions ne fonctionnent plus. Je vais essayer avec la fonction setcookie() et explorer les pistes que tu m'as données.
Ceci indiquerait plutôt un problème avec Firefox qu'avec ton code php... as-tu testé sur un autre ordinateur, ou avec Chrome, Opera, etc. ?
Dormeur74 a écrit :Ce qui m'étonne, c'est que dans la liste des cookies spécifiques à supprimer, j'en ai 2 qui sont créés portant le même nom (PHPSESSID), mais ayant des ID de session héxadécimaux différents ; probablement dûs aux deux session_start();
Et un conflit, et un bug quelque part... supprime ces cookies et réessaye !
Votre Navigateur : Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0
Dormeur74
Arias
Messages : 4
Inscription : 15 juin 2013, 09:14

Re: Variable superglobale $_SESSION

Message par Dormeur74 »

J'ai testé sur un autre ordi sous Firefox et n'ai pas eu ce problème. Mais ce qui m'arrive peut arriver à d'autres et j'aimerais bien comprendre ce qui ne colle pas sous Firefox. Pas de problème sous I.E., pas plus que sous Google Chrome (j'ai dû l'installer pour vérifier :o ). J'ai l'impression que c'est un problème de gestion des cookies, mais n'arrive pas à mettre le doigt sur ce qui cloche.
J'ai réinstallé Firefox, supprimé tous les cookies, inhibé mon firewall, vidé n fois le cache, rien n'y a fait.

Et voilà que maintenant tout marche à nouveau, ce qui est plus qu'inquiétant puisque je n'ai pas touché à mon code depuis que j'ai ouvert ce fil. Tout se passe comme si la durée de vie de mes sessions étaient à durée aléatoire.
Votre Navigateur : Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0
Avatar de l’utilisateur
Abraxas
Animal mythique
Messages : 10180
Inscription : 28 juil. 2011, 14:06

Re: Variable superglobale $_SESSION

Message par Abraxas »

C'est possible de mettre un testcase en ligne super simple pour tester (une page de login qui renvoie sur Google ou une page blanche en cas de succès par ex) ?

On pourra tester de notre côté.
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Re: Variable superglobale $_SESSION

Message par calimo »

Si ce n'est pas reproductible, ça va être difficile. La seule chose que je vois, c'est d'installer Firebug, et de suivre les échanges d'entêtes HTTP étape par étape.
Ouvre le panneau réseau et charge la page. La première ligne est la page HTML. Dans le sous-onglet Entêtes, tu dois voir tes deux cookies dans requête (qui de manière trompeuse se trouve sous réponse, mais la requête a bien lieu avant la réponse). Là dedans tu dois avoir une (ou plusieurs ?) lignes "Cookies". Et au-dessus tu dois voir la réponse du serveur. Elle peut très bien ne pas contenir de ligne Cookie.
Ce n'est pas facile, mais ça devrait t'aider à analyser ce qui se passe en détail.
Refais ça après avoir supprimé les cookies de ton site, et regarde ce qui se passe. S'il y a deux cookies établis, alors tu devrais pouvoir comprendre en détail à quel moment tu as une duplication...

Bon courage ! :wink:
Votre Navigateur : Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0
Dormeur74
Arias
Messages : 4
Inscription : 15 juin 2013, 09:14

[Réglé] Variable superglobale $_SESSION

Message par Dormeur74 »

Je n'arrive malheureusement pas à reproduire cette erreur. J'ai mis en place Firebug (outil remarquable, au passage). Si le problème refait surface, ce plugin me permettra probablement de trouver. A présent je n'ai plus qu'un seul cookie, tout est rentré dans l'ordre. HijackThis ne m'indique rien de suspect, c'est incompréhensible.
Un grand merci à tous les deux.
Votre Navigateur : Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invités