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

PHP & Base de données Discussion :

Parcours de table + Mise à jour [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Points : 66
    Points
    66
    Par défaut Parcours de table + Mise à jour
    Je voudrais faire un parcours de table et mettre à jour le mot de passe des membres inscris en le cryptant en md5.

    mais je retrouve avec un erreur: Erreur de syntaxe près de ''9' à la ligne 1
    que je n'arrive pas à corriger.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $sql = "SELECT * FROM membre";
       $sql = mysql_query($sql) or die(mysql_error());
       $num = mysql_num_rows($sql);
     
     
    	   while($num > 0){
    		 $row = mysql_fetch_array($sql);
     
                     $q = ("UPDATE membre SET password='".md5($row['idmembre'])."'WHERE  
                             password ='".$row['idmembre']);
    		 $sql = mysql_query("$q") or die(mysql_error());
    	   }

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pour l'erreur je ne sais pas, mais est-ce que la condition where ne devrait pas plutôt être sur la colonne id_membre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $q = "UPDATE membre SET password='".md5($row['idmembre'])."'
    WHERE idmembre='".$row['idmembre']."' ";
    Et au passage, ce genre de choses peut être fait directement en une seule requête sans avoir besoin de tout lire d'abord :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE SET password = MD5(idmembre)

  3. #3
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Points : 66
    Points
    66
    Par défaut
    c'est bien idmembre et non password.
    maintenant le souci, tous les idmembre à part celui du premier enregistrement sont à NULL.
    Une seule ligne est mise à jour pourtant les id dans la BDD sont non null.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while($num > 0) { 
      $row = mysql_fetch_array($sql);
      $q = ("UPDATE membre SET password='".md5($row['idmembre'])."' WHERE idmembre ='".$row['idmembre']."'");
       $sql = mysql_query($q) or die(mysql_error());
    	   }

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu boucles sur while ($num > 0) mais tu ne décrmentes pas $num... Donc normalement, tu devrais te manger une boucle infinie.
    Heureusement, ta 2e erreur te bloque
    Tu écrases le retour $sql de la 1ere requête par l'exécution de la 2e requête

  5. #5
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Points : 66
    Points
    66
    Par défaut
    C'est bon. Merci
    Code finale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $sql = "SELECT * FROM membre";
    $sql = mysql_query($sql) or die(mysql_error());
    $num = mysql_num_rows($sql);
     
     
    	   while($num > 0) { 
    		$row = mysql_fetch_array($sql);
            $q = ("UPDATE membre SET password='".md5($row['idmembre'])."' WHERE idmembre ='".$row['idmembre']."'");
    		$sql2 = mysql_query($q) or die(mysql_error());
    		 $num--;
    	   }
    Une question: quel est le meilleur moyen de protéger son site contre les injection.
    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_real_escape_string
    lors de mes postes mais mon site a été piraté ce matin.
    Le pirate a réussi à injecter de fausse info dans ma BDD.

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    mysql_real_escape_string échappe les caractère spéciaux. ça permet de bloquer les injections SQL.
    Maintenant la question est : qu'appelles-tu de "fausses infos" ?

  7. #7
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Points : 66
    Points
    66
    Par défaut
    il a mi :
    Hacker by
    We are anominous avec une photo
    comme une mise à jour faite par l'administrateur.

  8. #8
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Points : 66
    Points
    66
    Par défaut
    J'ai trouvé une faille dans une rédirection dans mon espace admin.
    ce qui permettait d'afficher tous le contenu de mes dossiers internes.

    Merci pour d'aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise à jour d'une Table-Sqlite pendant son parcours
    Par fadsys dans le forum PureBasic
    Réponses: 1
    Dernier message: 02/10/2009, 13h34
  2. Dernière ligne ajoutée à une table + mise à jour
    Par belsuncette dans le forum Windows Forms
    Réponses: 6
    Dernier message: 01/10/2007, 12h25
  3. Dataset (tri table, mise à jour)
    Par skysee dans le forum C#
    Réponses: 1
    Dernier message: 27/09/2007, 09h40
  4. [Oracle 9i ou 10G] Tracer Table mise à jour
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 5
    Dernier message: 24/10/2006, 09h39
  5. [TQuery][DBGRID] pb de mise à jour: table en lecture seule
    Par Chrystèle Carré dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/11/2003, 09h36

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