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

  FORUM HardWare.fr
  Programmation
  PHP

  problèmes de sessions et de variables [- soucis Mis à Jour -]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problèmes de sessions et de variables [- soucis Mis à Jour -]

n°1781334
xkamui
Their Destiny Was Foreordained
Posté le 02-09-2008 à 11:47:28  profilanswer
 

Bonjour,  
 
voici ce qui se passe :  
J'ai un site avec une adresse du type : http://www.monsite.com/index.php?ville=ma_ville
je récupère alors la var ville et je fais une recherche dans ma base de données, pour récupérer un ID.
 
Je dois ensuite l'enregistrer dans une session pour la passer à $GLOBALS["id"] (note : $GLOBALS["id"] est non négociable, je suis obligé de me servir de ça.)
 
D'une part, celà ne fonctionne pas tout de suite, je dois faire une F5 pour que ma session soit effectivement remplie avec mon id_ville.
D'autre part, lorsque je lance le même site avec une autre ville, j'ai le même id. Je le conçoit aisement car je ne renseigne que $_SESSION['id_ville'] = 'n';
 
J'ai donc essayé de déclarer comme suit : $_SESSION['id_ville_' . $idv[0] . ''] = $idv[0]; mais là, ça fonctionne carémment pas.
 
Si quelqu'un peut maider donc, sur ces sessions, je suis preneur.
 
Merci


Message édité par xkamui le 12-09-2008 à 15:42:07
mood
Publicité
Posté le 02-09-2008 à 11:47:28  profilanswer
 

n°1781341
flo850
moi je
Posté le 02-09-2008 à 11:56:10  profilanswer
 

déjà :  
$_SESSION reste le meme d'un chargement a l'autre
$_GLOBALS est réinitialisé a chaque nouvelle page
 
et pourquoi pas un simple $_SESSION['maVilleAMoiQueJai'] = $id ;  

n°1781350
xkamui
Their Destiny Was Foreordained
Posté le 02-09-2008 à 12:04:29  profilanswer
 

Quand j'arrive sur la première page : index.php, je fais un test sur l'existance de $_SESSION['maVilleAMoiQueJai']. Si elle n'existe pas, alors je la créee et j'affect $GLOBALS["id"].
 
Mais si je reviens sur le même site avec une autre ville, $_SESSION['maVilleAMoiQueJai'] éxiste alors il ne la change pas... Je me retrouve donc avec les informations de l'autre ville en lieu et place de la nouvelle ville passé en argument

n°1781353
flo850
moi je
Posté le 02-09-2008 à 12:06:21  profilanswer
 

alros il faut que tu fasse un tests sur l'existence ET sur le fait que la ville en parametre soit la meme que celle dans la session  
 
( maisje vois aps a quoi sert ton $_globals['id'] ) ?

n°1781363
xkamui
Their Destiny Was Foreordained
Posté le 02-09-2008 à 12:12:33  profilanswer
 

j'ai ça :  
 

Code :
  1. $ville = $_GET['agence'];
  2. $ida = @mysql_fetch_row(@mysql_query("select id_agence from `agence` where nom_agence_url like '" . str_replace(" ", "", $ville) . "';" ));
  3. if (!isset($_SESSION['id_agence']))
  4. {
  5. $_SESSION['id_agence'] = $ida[0];
  6. }
  7. $GLOBALS["id"] = $_SESSION['id_agence'];


 
ça fonctionne sauf deux choses :  
1. Je dois faire un reload de ma page pour que les paramètres passent
2. Si je change quoi que ce soit, genre le code qui suite, ça fonctionne plus :'(
 

Code :
  1. $ville = $_GET['agence'];
  2. $ida = @mysql_fetch_row(@mysql_query("select id_agence from `agence` where nom_agence_url like '" . str_replace(" ", "", $ville) . "';" ));
  3. if (!isset($_SESSION['id_agence']) || $_SESSION['id_agence'] != $ida[0])
  4. {
  5. $_SESSION['id_agence'] = $ida[0];
  6. }
  7. $GLOBALS["id"] = $_SESSION['id_agence'];

n°1781399
Profil sup​primé
Posté le 02-09-2008 à 12:45:34  answer
 

xkamui a écrit :

j'ai ça :  
 

Code :
  1. $ville = $_GET['agence'];
  2. $ida = @mysql_fetch_row(@mysql_query("select id_agence from `agence` where nom_agence_url like '" . str_replace(" ", "", $ville) . "';" ));
  3. if (!isset($_SESSION['id_agence']))
  4. {
  5. $_SESSION['id_agence'] = $ida[0];
  6. }
  7. $GLOBALS["id"] = $_SESSION['id_agence'];


 
ça fonctionne sauf deux choses :  
1. Je dois faire un reload de ma page pour que les paramètres passent
2. Si je change quoi que ce soit, genre le code qui suite, ça fonctionne plus :'(
 

Code :
  1. $ville = $_GET['agence'];
  2. $ida = @mysql_fetch_row(@mysql_query("select id_agence from `agence` where nom_agence_url like '" . str_replace(" ", "", $ville) . "';" ));
  3. if (!isset($_SESSION['id_agence']) || $_SESSION['id_agence'] != $ida[0])
  4. {
  5. $_SESSION['id_agence'] = $ida[0];
  6. }
  7. $GLOBALS["id"] = $_SESSION['id_agence'];



 
1-Échappe tes données dépendantes du client avant de les placer dans tes requêtes avec mysql_real_escape_string
2-Pas besoin de rendre ta variable de session globale elle l'est déjà...
Utilise directement $_SESSION
 
Ce qui donne :

Code :
  1. <?php
  2. $ville  = mysql_real_escape_string($_GET['agence']);
  3. $sql    = "select id_agence from `agence` where nom_agence_url like '" . str_replace(" ", "", $ville) . "';";
  4. $result = mysql_query($sql);
  5. $ida    = mysql_fetch_row($result);
  6.  
  7. if (!isset($_SESSION['id_agence']))
  8. {
  9.     $_SESSION['id_agence'] = $ida[0];
  10. }
  11.  
  12. echo "Id => {$_SESSION['id_agence']}";
  13. ?>


Message édité par Profil supprimé le 02-09-2008 à 12:46:39
n°1781501
xkamui
Their Destiny Was Foreordained
Posté le 02-09-2008 à 16:11:31  profilanswer
 

Merci Luc@s, mais celà ne corrige pas ce que je dois faire.
 
Comme je l'ai dit plus haut, je me dois d'utiliser $GLOBALS["id"].
 
De plus, si je change de ville, le problème reste le même, il me garde la session en cours, avec l'id de la ville précédente.

n°1781503
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 02-09-2008 à 16:13:18  profilanswer
 

t'as qu'a adapter le code qu'il t'a donné. A priori, il te reste 2 choses à ajouter: le test d'égalité entre $_SESSION et $ida[0] d'une part, et l'affectation de GLOBALS['id']...


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1781506
xkamui
Their Destiny Was Foreordained
Posté le 02-09-2008 à 16:19:46  profilanswer
 

bah, oui, c'est bien ce que j'ai fait, mais, comme plus haut, dès que je change un truc, ça fonctionne même plus pour la première ville.
 
J'ai bien ajouté un 'ou session != id en cours' ainsi qu'une affectation de la Globale id, mais rien de nouveau...
 
vraiment, je patauge...

n°1783264
Profil sup​primé
Posté le 05-09-2008 à 18:48:29  answer
 

$GLOBALS est inutile si tu passes par des SESSION car $_SESSION est accessible partout (comme $GLOBALS).
Alors pourquoi as tu besoin de $GLOBALS ???

mood
Publicité
Posté le 05-09-2008 à 18:48:29  profilanswer
 

n°1783280
xkamui
Their Destiny Was Foreordained
Posté le 05-09-2008 à 19:56:18  profilanswer
 

prennons le problème dans l'autre sens, alors.
 
Disons que j'ai $GLOBALS et que je veux que cette globale change dès que on change de ville.

n°1783281
flo850
moi je
Posté le 05-09-2008 à 19:57:53  profilanswer
 

a chaque nouveau chargement de page $_globals est vidé [:proy]

n°1783285
xkamui
Their Destiny Was Foreordained
Posté le 05-09-2008 à 20:11:59  profilanswer
 

ok, je crois que je commence à discerner la différence entre $_SESSIONS et $_GLOBALS.
 
En application à mon soucis :  
Lorsque je suis sur la page index, j'y accède avec une variable $ville. De là, je récupère l'id correspondant en BDD, le stock dans $_GLOBALS["id"] et je m'en sers dans un fichier Flash.
Ce fichier Flash vient, automatiquement, faire un getLocation vers la page accueil.php, cependant, il n'envoi pas la variable $ville, donc, dans la page accueil, je peux pas récupérer l'id, et les données ne sont pas à jour.
 
J'avais donc pensé, pour ça les mettre dans une variable de session.
Maintenant, jai aussi essayé de mettre ça comme ça :  

Code :
  1. if (!isset($_SESSION['id_agence_' . $ida[0] . '']))
  2. {
  3.   $_SESSION['id_agence_' . $ida[0] . ''] = $ida[0];
  4. }


 
Mais ça ne fonctionne pas mieux, voir pas du tout... :'( :'( :'(

n°1783291
flo850
moi je
Posté le 05-09-2008 à 20:26:50  profilanswer
 

deja , pourquoi tu las mets dans $_SESSION['id_agence_' . $ida[0] . ''
 
pourquoi ne pas mettre tout simplement qq chose comme ca
$_SESSION['idVille'] = $idVille;
$_SESSION['idAgence'] =$idAgence  
 
et ainsi de suite ?

n°1787541
xkamui
Their Destiny Was Foreordained
Posté le 16-09-2008 à 11:44:27  profilanswer
 

Re-Bonjour
 
Petite mise à jour de mon soucis :  
 
J'ai maintenant une frame, appellé sur mon site parent, genre : http://www.parent.com qui contient le code suivant :

Code :
  1. <HTML>
  2. <HEAD>
  3. <FRAMESET rows="100%" FRAMESPACING="0" FRAMEBORDER="0">
  4. <FRAME SRC="http://www.monsite.fr/index.php?agence=mon_agence" NAME="corps" FRAMEBORDER="0" SCROLLING="Auto" NORESIZE MARGINWIDTH="0" MARGINHEIGHT="0">
  5. </FRAMESET>
  6. <noframes>
  7. <BODY BGCOLOR="#FFFFFF" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
  8. </BODY>
  9. </noframes>
  10. </HTML>

Maintenant, dans la page PHP, je fait un appel de session dans index.php, puis je redirige vers index2.php qui lui, va afficher les données correspondantes aux valeurs dans la variable de session.
 
Cependant, sous IE ça fonctionne que si on fait un F5, et pas toujours du premier coup.
sous Firefox pas de soucis, mais mon client utilise IE, donc faut que j'arrive à le faire fonctionner dessus.
 
Quelqu'un pourrait m'aider, je déséspère...  :cry:

n°1787545
flo850
moi je
Posté le 16-09-2008 à 11:48:15  profilanswer
 

tu comprends maintenant pourquoi les frames sont abandonnées ?

n°1787547
xkamui
Their Destiny Was Foreordained
Posté le 16-09-2008 à 11:50:46  profilanswer
 

sans doute, mais c'est une contraint technique à laquelle je ne peux couper...


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

  problèmes de sessions et de variables [- soucis Mis à Jour -]

 

Sujets relatifs
transfert variables flash->phpRequete pour mettre à jour une partie d'un champ
Soucis au niveau de l'image du titre d'un menu.[Résolu] - Sessions bizarres, pertes des variables
Soucis CSS IE/Mozillasoucis preg_match sur contenu html
Soucis de form dans un form - help svpDes soucis smarty pour intégrer mon menu sous cms made simple
Mise à jour cube multidimensionnelle 
Plus de sujets relatifs à : problèmes de sessions et de variables [- soucis Mis à Jour -]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)