Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1034 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème avec une variable $_SESSION

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec une variable $_SESSION

n°1973014
Goldy
Posté le 11-03-2010 à 15:34:16  profilanswer
 

Bonjour,
 
Je suis en train de travailler sur un système de captcha, et j'ai un soucis avec la variable $_SESSION contenant le code généré par le script dédié à la génération du captcha, la variable est vide après avoir envoyé la requête au script s'occupant de vérifier si le code saisie est bien le même que celui affiché par l'image du captcha.
 
Je vais pas copier tout mon code car ça ferait long, mais je vais vous le schématiser.
 
 


 
index.html=> POST => page.php => POST => verif.php
                        | affiche
                        > captcha.php (génère le code et affiche une image)
 
 
page.php contient
 
   session_start() ;
   {code vérifiant les $_POST}
   {variables hmtl contenant entre autre
   <img src="captcha.php" alt="image de protection" />
   }
   {code définissant $_SESSION[message] entre autre}
 
 
captcha.php contient
 
   session_start();
   {code générant le captcha dans $code}
   $_SESSION[code_captcha] = $code;  
   {code générant l'image du captcha}
 
verif.php contient
   session_start();
   {code vérifiant si le captcha est bon}
   $code_verif = strtoupper($_POST[verif]) ;
   if ($code_verif != $_SESSION[code_captcha]) {
   $error = 1 ;
   }
   {code d'affichage}
 


 
Les variables $_SESSION définit par la page page.php comme $_SESSION[message] sont disponibles et peuvent être affichées dans verif.php, mais $_SESSION[code_captcha] généré par captcha.php est vide, le fait de confirmer le captcha avec un champs vide le valide donc.
 
Je ne sais pas si cela vient du faire que captcha.php est affiché dans la page comme étant une image, et qu'il faut peut-être utiliser autre chose que session_start () dans le script captcha.php ?
 
Merci d'avance si vous pouvez m'aider, car j'ai un peu de mal à comprendre pourquoi cette variable n'est pas sauvée avec les autres variables $_SESSION.
 
 
 

mood
Publicité
Posté le 11-03-2010 à 15:34:16  profilanswer
 

n°1973034
Tirkyth
Posté le 11-03-2010 à 16:48:10  profilanswer
 

Mhhhh, moi le truc qui me chiffonne c'est les $_SESSION[code_captcha] au lieu de $_SESSION['code_captcha'] mais de là à dire que c'est ça qui pose problème quand même pas, il me semble que si les constantes sont indéfinies il les utilise comme des chaînes de caractères.
 
Tu peux toujours essayer de les remplacer mais bon, j'y crois moyen.

n°1973055
Goldy
Posté le 11-03-2010 à 17:57:15  profilanswer
 

Tirkyth a écrit :

Mhhhh, moi le truc qui me chiffonne c'est les $_SESSION[code_captcha] au lieu de $_SESSION['code_captcha'] mais de là à dire que c'est ça qui pose problème quand même pas, il me semble que si les constantes sont indéfinies il les utilise comme des chaînes de caractères.
 
Tu peux toujours essayer de les remplacer mais bon, j'y crois moyen.


 
 
Ils y étaient dans un premier temps, mais j'ai finit par les enlever pour facilité le debug avec echo "$_SESSION[truc] <br />" qui posait problème à cause des apostrophes. Ça ne marchait pas mieux avant, et pour les autres variables ça marche très bien sans, donc ce n'est pas ça.
 
J'ai lu sur un topic consacré au captcha la fonction session_register("code" ); je me demande s'il elle serait utile dans le cas présent.

n°1973132
Goldy
Posté le 11-03-2010 à 21:52:02  profilanswer
 

Je crois que j'ai compris, une même session ne peut pas être utilisée par deux script différent en même temps. Mais je n'ai pas trouvé comment passer outre cette limitation de php5.

n°1973147
Goldy
Posté le 11-03-2010 à 22:35:30  profilanswer
 

J'ai contourné le problème en enregistrant le fichier image plutôt qu'en l'affichant dans le script. Le script captcha.php est ensuite inclue dans page.php avec include(), et la variable est ainsi bien sauvegardé et disponible dans le script suivant.
 
J'ai néanmoins peur que ça pose des problèmes le fait d'enregistrer l'image du captcha sur le disque pour ensuite l'afficher.

n°1973227
Tirkyth
Posté le 12-03-2010 à 11:05:05  profilanswer
 

Goldy a écrit :

Je crois que j'ai compris, une même session ne peut pas être utilisée par deux script différent en même temps. Mais je n'ai pas trouvé comment passer outre cette limitation de php5.


Cette phrase m'intéresse beaucoup, que veux-tu dire par "en même temps" ?

n°1973232
Goldy
Posté le 12-03-2010 à 11:11:53  profilanswer
 

Tirkyth a écrit :


Cette phrase m'intéresse beaucoup, que veux-tu dire par "en même temps" ?


 
PHP verrouille l'accès aux données d'une session à un seul script. Donc tant que le premier script n'a pas été entièrement exécuté, ceux qui sont éventuellement appelé dans la page pendant son exécution ne peuvent pas avoir un accès en écriture à la session en cours.
 
Voilà donc pourquoi la variable $_SESSION n'était pas enregistrée.

n°2172955
m_jaz3
Posté le 28-01-2013 à 17:40:26  profilanswer
 

Bonjour,
j'ai exactement le meme probleme que toi.
J'aimerais savoir si tu as trouvé une solution hors enregistrer l'image.
Je te remercie.

n°2173027
sh_kyra
Entre nous c'est Kyra
Posté le 29-01-2013 à 10:18:55  profilanswer
 

Pourquoi tu fais un session_start() par page?!
Enfin normalement ça pose pas de souci, mais c'est inutile.
 
Utilise session_write_close() pour forcer la fermeture de ta session en cours de script.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème avec une variable $_SESSION

 

Sujets relatifs
OpenLaszlo/Glassfish Probleme de chargement de mediaprobleme de SSH2
problème avec une variable de sessionproblème de boucle/session : envoi de doublons en nombre variable ?!
Probleme variable de session et requete sqlProblème de récupération de variable de session.
probleme avec une variable de session[ASP.NET] Problème pour accéder à une variable Session
probleme avec variable de session (sou oracle)[PHP] Probleme pour supprimer une variable de session
Plus de sujets relatifs à : Problème avec une variable $_SESSION


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR