Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/03/2006, 14h01   #1
Invité de passage
 
Inscription : mars 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 22
Points : 2
Points : 2
Par défaut [Sécurité] Perte de variables de session dans formulaire

Bonjour à tous
Je suis encore 'newbie' et je cherche à développer un petit espace membres sur mon site.
J'ai donc fait des pages d'accès, création de compte...ça fonctionne.
Mais j'ai un souci lorsque je rentre dans la page moncompte.php et ModifMembre.php
Je faisais les tests en local, tout fonctionnait, j'ai transféré mes pages chez l'hébergeur FREE, et là, misère, plus rien ne passait.
J'ai bien un dossier 'session' à la racine de mon site
J'ai essayé chez un autre hébergeur, et effectivement, le souci est le même, je crois que je n'ai pas bien initialisé les variables de session dans la page de modifs.
Est-ce que vous pourriez me dire où ça cloche ?
Merci de votre aide !!!!
moncompte.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php require_once('includes/connexion.php'); ?><?php
// initialisation
session_start() ;
if (isset($_POST['login'])) // on verifie que la variable existe
{
$login = htmlentities($_POST['login']); //on recupere les données du formulaire
$_SESSION['login'] = $login;
}
 
if (isset($_SESSION['login'])) {
  $login = (get_magic_quotes_gpc()) ? $_SESSION['login'] : addslashes($_SESSION['login']);
}
mysql_select_db($database, $connexion);
$query_Membres = sprintf("SELECT * FROM membres WHERE login = '$login'");
$Membres = mysql_query($query_Membres, $connexion) or die(mysql_error());
$row_Membres = mysql_fetch_assoc($Membres);
$totalRows_Membres = mysql_num_rows($Membres);
 
if ($row=mysql_fetch_array($Membres)) {
$nom=$_SESSION['nom']; ///
$prenom=$_SESSION['prenom'];
$login=$_SESSION['login'];
$pass=$_SESSION['pass'];
$pass2=$_SESSION['pass2'];
$adresse=$_SESSION['adresse'];
$code_postal=$_SESSION['code_postal'];
$ville=$_SESSION['ville'];
$email=$_SESSION['email'];
$tel=$_SESSION['tel'];
$naissance=$_SESSION['naissance'];
}
//----------------------------
?>
Plus bas le formulaire
Code :
1
2
3
4
5
<form id="form" name="form" method="post" action="modifMembre.php" >
../...
<input name="modif" type="hidden" id="modif" value="1" />
                  <input type="submit" name="Submit" value="Modifier" />
</form>
Et la page ModifMembre.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// initialisation
session_start() ;
require_once('includes/connexion.php');
if (isset($_SESSION['login'])) {
  $login = (get_magic_quotes_gpc()) ? $_SESSION['login'] : addslashes($_SESSION['login']);
}
mysql_select_db($database, $connexion);
$query_Membres = sprintf("SELECT * FROM membres WHERE login = '$login'");
$Membres = mysql_query($query_Membres, $connexion) or die(mysql_error());
$row_Membres = mysql_fetch_assoc($Membres);
$totalRows_Membres = mysql_num_rows($Membres);
 
if ($ModifMembre=="1")
{
//---Mise à jour dans la base
mysql_select_db($database, $connexion);
$updateMembres = "UPDATE membres SET nom='$nom', prenom='$prenom', login='$login', pass='$pass', pass2='$pass2', adresse='$adresse', code_postal='$code_postal', ville='$ville', email='$email', tel='$tel', naissance='$naissance'";
$updateMembres .= "WHERE login='$login'";
mysql_query($updateMembres, $connexion) or die(mysql_error()); 
header("Location: moncompte.php");
}
?>
Plus bas le formulaire
Code :
1
2
3
4
5
6
<form id="form" name="form" method="post" action="modifMembre.php">
<input name="nom" type="text" class="form" onblur="if(!this.value)alert('vous n\'avez pas saisi \nvotre nom');" value="<?php echo $row_Membres['nom']; ?>"  />
.../...
<input type="submit" name="Submit" value="Valider" />
                  <input name="ModifMembre" type="hidden" id="ModifMembre" value="1" />
</form>
Merci de m'aider à me corriger !!!
:-)
coxine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 14h24   #2
Membre confirmé
 
Avatar de allyson
 
Inscription : août 2003
Messages : 248
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 248
Points : 232
Points : 232
Envoyer un message via Yahoo à allyson
salut et bienvenue à toi dans cette communauté
je t'invite à lire les règles du forum (voir ma signature plus bas )
pour ce qui est de ton problème:
1- session_start() doit être mis au tout début de la page!!!!
2- je crois bien que free propose un répertoire spécifique pour les sessions que tu devras bien configurer (mais bon je n'en suis pas sûre)!
je crois que ce problème a déjà été traité je te conseille donc de faire une petite recherche... (j'allais le faire mais j'ai des soucis avec ma connexion )
__________________
.: and Justice for all :.
------------------------------------------------------------
Membre du jury de l'élection de Mister DVP.com
les règles du forum
de penser au tag
allyson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 14h26   #3
Invité de passage
 
Inscription : mars 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 22
Points : 2
Points : 2
Par défaut merci de ta réponse

Comme je l'ai précisé dans ma requête, j'ai bien un répertoire 'sessions' à la racine de mon site.
j'ai mis les pages chez un autre hébergeur temporairement, et le pb est le même, donc ça vient de mon code...je n'ai pas du initialiser les variables de session correctement !
coxine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 14h27   #4
Membre confirmé
 
Avatar de allyson
 
Inscription : août 2003
Messages : 248
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 248
Points : 232
Points : 232
Envoyer un message via Yahoo à allyson
j'ai édité mon message
__________________
.: and Justice for all :.
------------------------------------------------------------
Membre du jury de l'élection de Mister DVP.com
les règles du forum
de penser au tag
allyson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 14h32   #5
Invité de passage
 
Inscription : mars 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 22
Points : 2
Points : 2
Par défaut ben oui

j'ai le session_start() en haut de ma page modifMembres, puisque le pb vient de cette page....
don ce n'est pas ça, mais plutôt, l'init de variables....et je ne vois pas où j'ai fait l'erreur !!!!! je débute
coxine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 14h36   #6
Membre confirmé
 
Avatar de allyson
 
Inscription : août 2003
Messages : 248
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 248
Points : 232
Points : 232
Envoyer un message via Yahoo à allyson
bah ton code se base sur $_SESSION['login'] ... que tu initialises à la page moncompte.php hors sur cette page ton session_start() est après le require_once()!!!!
__________________
.: and Justice for all :.
------------------------------------------------------------
Membre du jury de l'élection de Mister DVP.com
les règles du forum
de penser au tag
allyson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 14h44   #7
Invité de passage
 
Inscription : mars 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 22
Points : 2
Points : 2
Par défaut ok

je l'ai modifié, j'ai mis le session_start(); tout en haut de la page, avant l'appel des identifiants de connexion ... ça ne change rien du tout

Dans ma page modifMembres....j'ai du faire un oubli ou une erreur ?
J'ai modifié entre temps le code....
Maintenant, je récupère TOUT sauf le nom et prénom !
Vraiment bizzare cette histoire
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php session_start() ; // initialisation
require_once('includes/connexion.php');
if (isset($_SESSION['login'])) {
  $login = (get_magic_quotes_gpc()) ? $_SESSION['login'] : addslashes($_SESSION['login']);
}
mysql_select_db($database, $connexion);
$query_Membres = sprintf("SELECT nom, prenom, pass, pass2, adresse, code_postal, ville, email, tel, naissance FROM membres WHERE login = '$login'");
$Membres = mysql_query($query_Membres, $connexion) or die(mysql_error());
$row_Membres = mysql_fetch_assoc($Membres);
$totalRows_Membres = mysql_num_rows($Membres);
 
if ($row=mysql_fetch_array($Membres)) {
$_SESSION['login'] = $login;
$_SESSION['nom']= $row['nom'];
$_SESSION['prenom']= $row['prenom'];
$_SESSION['pass']= $row['pass'];
$_SESSION['pass2']= $row['pass2'];
$_SESSION['adresse']= $row['adresse'];
$_SESSION['code_postal']= $row['code_postal'];
$_SESSION['ville']= $row['ville'];
$_SESSION['email']= $row['email'];
$_SESSION['tel']= $row['tel'];
$_SESSION['naissance']= $row['naissance'];
}
if ($ModifMembre=="1")
{
//---Mise à jour dans la base
mysql_select_db($database, $connexion);
$updateMembres = "UPDATE membres SET login='$login', nom='$nom', prenom='$prenom', pass='$pass', pass2='$pass2', adresse='$adresse', code_postal='$code_postal', ville='$ville', email='$email', tel='$tel', naissance='$naissance'";
$updateMembres .= "WHERE login='$login'";
mysql_query($updateMembres, $connexion) or die(mysql_error()); 
header("Location: moncompte.php");
}
?>
: :
coxine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 14h48   #8
Membre confirmé
 
Avatar de allyson
 
Inscription : août 2003
Messages : 248
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 248
Points : 232
Points : 232
Envoyer un message via Yahoo à allyson
fais un echo de ta requête pour voir!
sinon d'où sors-tu $email et cie?!
__________________
.: and Justice for all :.
------------------------------------------------------------
Membre du jury de l'élection de Mister DVP.com
les règles du forum
de penser au tag
allyson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 14h49   #9
Invité de passage
 
Inscription : mars 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 22
Points : 2
Points : 2
Par défaut tu peux m'expliquer

comment faire un écho de la requete ?^
t'as lu mon code ou pas ?
:
je "sors" le $email et compagnie, après la requete dans la base.....
CF. :
Code :
1
2
3
4
5
6
7
8
9
10
mysql_select_db($database, $connexion); 
$query_Membres = sprintf("SELECT nom, prenom, pass, pass2, adresse, code_postal, ville, email, tel, naissance FROM membres WHERE login = '$login'"); 
$Membres = mysql_query($query_Membres, $connexion) or die(mysql_error()); 
$row_Membres = mysql_fetch_assoc($Membres); 
$totalRows_Membres = mysql_num_rows($Membres); 
 
if ($row=mysql_fetch_array($Membres)) { 
$_SESSION['login'] = $login; 
$_SESSION['nom']= $row['nom']; 
$_SESSION['prenom']= $row['prenom'
coxine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 14h53   #10
Membre confirmé
 
Avatar de allyson
 
Inscription : août 2003
Messages : 248
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 248
Points : 232
Points : 232
Envoyer un message via Yahoo à allyson
heu je crois que tu devrais faire comme ça:
Code :
1
2
$updateMembres = "UPDATE membres SET login='".$_SESSION['login']."', nom='".$_SESSION['nom']."', prenom='".$_SESSION['prenom']."', pass='".$_SESSION['pass']."', pass2='".$_SESSION['pass2']."', adresse='".$_SESSION['adresse']."', code_postal='".$_SESSION['code_postal']."', ville='".$_SESSION['ville']."', email='".$_SESSION['email']."', tel='".$_SESSION['tel']."', naissance='".$_SESSION['naissance']."'";
$updateMembres .= "WHERE login='".$_SESSION['login']."'";
__________________
.: and Justice for all :.
------------------------------------------------------------
Membre du jury de l'élection de Mister DVP.com
les règles du forum
de penser au tag
allyson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 15h08   #11
Invité de passage
 
Inscription : mars 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 22
Points : 2
Points : 2
Par défaut je l'ai fait

il me met :
You have an error in your SQL syntax near 'WHERE login='coxine'' at line 1

edit : Autant pour moi, j'avais mis deux fois qqch...
Ca ne marche tjs pas, je perds TOUTES les infos sauf le login quand je clique sur modifier.....
coxine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 15h10   #12
Membre confirmé
 
Avatar de allyson
 
Inscription : août 2003
Messages : 248
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 248
Points : 232
Points : 232
Envoyer un message via Yahoo à allyson
bizarre!
alors remplace $_SESSION['login'] pas $login pour voir!
dis moi exactement ce qui ne marche pas (donne des exemples ce serait mieux...)!
__________________
.: and Justice for all :.
------------------------------------------------------------
Membre du jury de l'élection de Mister DVP.com
les règles du forum
de penser au tag
allyson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 15h13   #13
Invité de passage
 
Inscription : mars 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 22
Points : 2
Points : 2
Par défaut alors là je

Depuis lla page mon compte, où mes données de compte sont affichées....je peux cliquer sur modifier pour changer ou ajouter des infos supp.
Qd je clique sur modifier....je récupère tout SAUF le nom et le prénom !!

C'est une histoire de dingue ce truc !!!

Pffff, je crois qu'il faudrait recommencer ma page...mais j'ai déjà tellement passé d'heures dessus...que je craque et j'ai pas envie d'installer un script tout fait
coxine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 15h38   #14
Membre confirmé
 
Avatar de allyson
 
Inscription : août 2003
Messages : 248
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 248
Points : 232
Points : 232
Envoyer un message via Yahoo à allyson
tu dois récupérer toutes les $_POST[] pour pouvoir les manipuler!
__________________
.: and Justice for all :.
------------------------------------------------------------
Membre du jury de l'élection de Mister DVP.com
les règles du forum
de penser au tag
allyson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 15h41   #15
Invité de passage
 
Inscription : mars 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 22
Points : 2
Points : 2
Par défaut je vais essayer comme ça

mais pourquoi les autres valeurs restent ???? alors que je ne les récupère pas ?
coxine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 15h42   #16
Membre confirmé
 
Avatar de allyson
 
Inscription : août 2003
Messages : 248
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 248
Points : 232
Points : 232
Envoyer un message via Yahoo à allyson
je ne comprends pas! tu parles des valeurs récupérées via le formulaire ou celles résultant de la requête select?!
__________________
.: and Justice for all :.
------------------------------------------------------------
Membre du jury de l'élection de Mister DVP.com
les règles du forum
de penser au tag
allyson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 15h47   #17
Invité de passage
 
Inscription : mars 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 22
Points : 2
Points : 2
Par défaut nope

ça ne marche pas.....
coxine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 15h55   #18
Invité de passage
 
Inscription : mars 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 22
Points : 2
Points : 2
Par défaut pfff je ne sais plus comment expliquer

cela......
Mon compte : reprend les données dans la base du membre qui a le login 'truc', ok ?
Sur la page mon compte, en bas du formulaire, un bouton modif (avec champ caché : ModifMembre, valeur 1
ok ?
Je suis donc redirigée vers la page ModifMembre.php
La variable de référence pour la session est le login, pas besoin de toutes les balader ? puisque après je fais un sélect en fonction de lavariable login.
Puis la condition :
Code :
1
2
3
if ($ModifMembre=="1")
{
//---Mise à jour dans la base
Je mets à jour la base où le login = $login....

Il doit y avoir une erreur ENORME dans mes deux pages...Mais je ne parviens à trouver quoi
[/quote]
coxine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 16h04   #19
Membre confirmé
 
Avatar de allyson
 
Inscription : août 2003
Messages : 248
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 248
Points : 232
Points : 232
Envoyer un message via Yahoo à allyson
alors si je suis bien ton code, le nom et le prénom qui te manquent tu les récupères de la base de données et non du formulaire!
fais un echo de ta requête:sinon fais un print_r($row)
__________________
.: and Justice for all :.
------------------------------------------------------------
Membre du jury de l'élection de Mister DVP.com
les règles du forum
de penser au tag
allyson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2006, 16h15   #20
Invité de passage
 
Inscription : mars 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 22
Points : 2
Points : 2
oui c'est ça...mais le reste aussi !! à savoir date de naissance, ville etc !
Suite aux tests que tu me demandes :
le <?php print_r($row_Membres);?> me donne toutes les infos, sauf le nom et prénom....normal
et le <?php echo $Membres;?> me dit : "Resource id # 2"
coxine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h11.


 
 
 
 
Partenaires

Hébergement Web