Posez votre question Signaler

PB $_SESSION quand je passe de php4 a php5

RDB77 66Messages postés 22 février 2008Date d'inscription - Dernière réponse le 30 août 2008 à 22:39
Bonjour,
Je suis entrain d'essayer de reglé un problème sur un site qui fonctionnait très bien en php4 et lorsque l'on a passer le site en php5 le $_SESSION ne me retourne rien. J'ai rajouté en haut du le page:
foreach($_GET as $key => $value)
${$key} = $value;
foreach($_POST as $key => $value)
${$key} = $value;
foreach($_FILES as $key => $value)
${$key} = $value;
pour les problème que j'avais pour les $_GET... mais apres quang je fait:
$maintenant = date("Y-m-d");
if(isset($_SESSION['Stest']) && $_SESSION['Stest'] == 1)
{
$maintenant = $date;
echo $maintenant;
}
quoi qu'il arrive le programme ne rentre jamais dans le if. Je voudrais savoir si je peux par remplacer:
if(isset($_SESSION['Stest']) && $_SESSION['Stest'] == 1)
par autre chose.
Lire la suite 

PB $_SESSION quand je passe de php4 a php5 »

9 réponses
Réponse
+0
moins plus
Bonjour

if(isset($_SESSION['Stest']) && $_SESSION['Stest'] == 1) devrat fonctionner en php5.
essaye
if(isset($_SESSION['Stest']))
echo $_SESSION['Stest'];
else
echo 'Stest pas défini';

juste pour vérifier

D'autre part, ne refais jamais ça :

foreach($_GET as $key => $value) 
${$key} = $value; 

foreach($_POST as $key => $value) 
${$key} = $value; 

foreach($_FILES as $key => $value) 
${$key} = $value;



ça permet à n'importe qui de créer les variables qu'il veut dans ton script et donc éventuellement de faire croire qu'il s'est identifié, qu'il est un admin ...
Ne récupère que les variables que tu as effectivement créées, et par la méthode (GET ou POST) correspondante. C'est (un peu) plus laborieux, mais indispensable
RDB77- 22 févr. 2008 à 11:14
J'ai essayer:
if(isset($_SESSION['Stest']))
echo $_SESSION['Stest'];
else
echo 'Stest pas défini';
et il m'affiche Stest pas défini

Mais le problème c'est que s'est pas moi qui est programmer le site en question et
foreach($_GET as $key => $value)
${$key} = $value;

foreach($_POST as $key => $value)
${$key} = $value;

foreach($_FILES as $key => $value)
${$key} = $value;
c'est encore une autre personne qui l'a mis a cause des problèmes entre php4 et php5 et elle m'as dit que sans cela sa marchais pas donc j'ai laisser comme c'était et j'ai été au problème suivant et je comprend pas pk il va pas cherché Stest et rentre dans la boucle. La page qui est avant celle la c'est:

<?php
foreach($_GET as $key => $value)
${$key} = $value;

foreach($_POST as $key => $value)
${$key} = $value;

foreach($_FILES as $key => $value)
${$key} = $value;

include("../../../connexion.php");
session_start();
session_unregister("Sid");
session_unregister("Snom");
session_unregister("Sprenom");
session_destroy();
session_start();

//on vide les bonnes réponses de TEST
$sqldelete="DELETE FROM etatJoueurtemp WHERE idJoueur='1'";
mysql_query($sqldelete) or die("Erreur : ".mysql_error()." sur ".$sqldelete);
$sqldelete2="DELETE FROM reponsestemp WHERE idJoueur='1'";
mysql_query($sqldelete2) or die("Erreur : ".mysql_error()." sur ".$sqldelete2);
$sqljoueur="SELECT id,nom,prenom FROM joueur WHERE password='02bd08' AND login='test'";
$appjoueur=mysql_query($sqljoueur) or die("Erreur : ".mysql_error()." sur ".$sqljoueur);
if (mysql_num_rows($appjoueur)=='1')
{
$joueur=mysql_fetch_array($appjoueur);
session_register("Sid");
session_register("Snom");
session_register("Sprenom");
session_register("Sdatetest");
session_register("Stest");
$Stest=1;
$Sid=$joueur["id"];
$Snom=$joueur["nom"];
$Sprenom=$joueur["prenom"];
$Sdatetest=$date;
$compteur="UPDATE joueur SET compteurconn=compteurconn+1 WHERE id='".$Sid."'";
mysql_query($compteur);
//redirection :
?><script language="JavaScript">
window.location="http://.../jeu2/jeu.php?date=<?php echo $Sdatetest; ?>";
</script><?php
}
else
{
//redirection vers l'index [refus=1 permet de mettre le message de mauvais loggage ?>
<script language="JavaScript">
window.location="http://.../jeu2/index.php?msg=erreur";
</script><?php
}
?>

(Elle a mis
foreach($_GET as $key => $value)
${$key} = $value;

foreach($_POST as $key => $value)
${$key} = $value;

foreach($_FILES as $key => $value)
${$key} = $value;
dans tout les .php)
sa fait depuis le debut de la semaine que je suis dessus et je vais pété un cable :s
Merci pour ta réponse
Ajouter un commentaire
Réponse
+0
moins plus
juste avant le
if (mysql_num_rows($appjoueur)=='1')
peux-tu insérer
echo 'mysql_num_rows : ',mysql_num_rows($appjoueur),'<BR>';
toujours pour diagnostiquer

Pour ce qui est des foreach, ça marche sûrement mais c'est très dangereux. On en reparlera quand le problème de session sera réglé, si tu veux.
Ajouter un commentaire
Réponse
+0
moins plus
Il me retourne bien 1 donc il fait rentre bien dans le if le problème c'est qu'il envoi pas le Stest et donc rentre pas dans
$maintenant = date("Y-m-d");
if(isset($_SESSION['Stest']) && $_SESSION['Stest'] == 1)
{
$maintenant = $date;
echo $maintenant;
}

je désespère T_T.
Ajouter un commentaire
Réponse
+0
moins plus
Il faut remplacer tous les session_register("Sid"); par des $_SESSION['Sid']=$Sid;
idem pour toutes les variables de session
parceque register_globals vaut off (même problème qui a obligé à ajouter les foreach)
comme il est dit dans la doc PHP à la rubrique 'sessions'
Ajouter un commentaire
Réponse
+0
moins plus
Il y a de l'amélioration merci même si il y a toujours quelque chose qui ne va pas par contre pour les foreach si je l'ai met pas la manip' ne fonction pas donc j'ai été de les laisser c'est bizarre.
Merci de m'avoir un peu fais avancé ^^.
Ajouter un commentaire
Réponse
+0
moins plus
En faite j'ai mal posé le truc parce que le programme fonctionnait avant en php4 et quand on est passer en php5 il y avai quelque piti truc mais facile a arranger donc c'est pas normal que sa fonctionne pas non?
Ajouter un commentaire
Réponse
+0
moins plus
Qu'est ce qu'il faut que je rajoute a mon programme en php4 si je veux le passer en php5?
smilingutopie - 30 août 2008 à 22:39
J'ai le même problème avez vous trouvé une solution ?
Ajouter un commentaire
Ce document intitulé « PB $_SESSION quand je passe de php4 a php5 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?