IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] Perte de variables de session dans formulaire


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 5
    Points
    5
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !!!
    :-)

  2. #2
    Membre actif Avatar de allyson
    Inscrit en
    Août 2003
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 261
    Points : 272
    Points
    272
    Par défaut
    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

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 5
    Points
    5
    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 !

  4. #4
    Membre actif Avatar de allyson
    Inscrit en
    Août 2003
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 261
    Points : 272
    Points
    272
    Par défaut
    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

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 5
    Points
    5
    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

  6. #6
    Membre actif Avatar de allyson
    Inscrit en
    Août 2003
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 261
    Points : 272
    Points
    272
    Par défaut
    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

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 5
    Points
    5
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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");
    }
    ?>
    : :

  8. #8
    Membre actif Avatar de allyson
    Inscrit en
    Août 2003
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 261
    Points : 272
    Points
    272
    Par défaut
    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

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 5
    Points
    5
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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'

  10. #10
    Membre actif Avatar de allyson
    Inscrit en
    Août 2003
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 261
    Points : 272
    Points
    272
    Par défaut
    heu je crois que tu devrais faire comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 5
    Points
    5
    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.....

  12. #12
    Membre actif Avatar de allyson
    Inscrit en
    Août 2003
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 261
    Points : 272
    Points
    272
    Par défaut
    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

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 5
    Points
    5
    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

  14. #14
    Membre actif Avatar de allyson
    Inscrit en
    Août 2003
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 261
    Points : 272
    Points
    272
    Par défaut
    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

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 5
    Points
    5
    Par défaut je vais essayer comme ça
    mais pourquoi les autres valeurs restent ???? alors que je ne les récupère pas ?

  16. #16
    Membre actif Avatar de allyson
    Inscrit en
    Août 2003
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 261
    Points : 272
    Points
    272
    Par défaut
    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

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 5
    Points
    5
    Par défaut nope
    ça ne marche pas.....

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 5
    Points
    5
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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]

  19. #19
    Membre actif Avatar de allyson
    Inscrit en
    Août 2003
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 261
    Points : 272
    Points
    272
    Par défaut
    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

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    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"

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Perte de variables de session + projets
    Par papawemba dans le forum C#
    Réponses: 2
    Dernier message: 19/06/2007, 17h55
  2. Réponses: 5
    Dernier message: 01/05/2007, 14h22
  3. Bloquer page précédente car perte de variable de session
    Par phoenix3011 dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2006, 17h39
  4. Perte des variables de sessions
    Par Dayom dans le forum Langage
    Réponses: 12
    Dernier message: 17/07/2006, 11h04
  5. Réponses: 11
    Dernier message: 11/05/2006, 10h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo