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 :

Vérification d'un champ avec la fonction PASSWORD [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Par défaut Vérification d'un champ avec la fonction PASSWORD
    Bonjour,

    Voilà j'ai besoin d'un coup de pouce. J'aimerais vérifier un champ qui a la fonction password. C'est à dire que la valeur de ma variable est automatiquement cryptée avec la fonction password dans ma table mysql. Le problème est que lorsque je veux vérifier le champs, si je tape la valeur du champ crypté ça passe, et en clair ça passe pas. Comment faire ?

    Voici mon code :

    insertion des champs dans la table mysql, seule la variable "mdp" m'intéresse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "INSERT INTO comptes(pseudo, mdp, mode, perso) VALUES('$pseudo',PASSWORD('$mdp'),'$mode','$perso')";
    vérification des champs dans la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = "SELECT * FROM `comptes` WHERE `pseudo` = '$pseudo' AND `mdp` = '$mdp'";
    Je ne sais pas comment faire pour vérifier la variable "mdp" avec la fonction password.

    Merci pour votre aide.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Il suffit de crypter le 2è mot de passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      $requete = "SELECT * 
                  FROM `comptes` 
                  WHERE `pseudo` = '$pseudo' 
                  AND `mdp` = PASSWORD('$mdp')";

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Par défaut
    Ca marche toujours pas... pourtant en mettant le mdp en clair ça marche sans problème. Là j'avoue ne rien comprendre...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Note : La fonction PASSWORD() est utilisée durant l'identification au serveur MYSQL. Il est recommandé de ne pas l'utiliser pour vos applications. Utilisez plutôt MD5() ou SHA1().
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Par défaut
    Que ce soit MD5 ou PASSWORD, aucune ne marche. J'ai essayé de changer l'interclassement mais toujours rien. Je comprends pas.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    peux-tu nous montrer ton code actuel ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 132
    Par défaut
    Citation Envoyé par Espion21 Voir le message
    Ca marche toujours pas... pourtant en mettant le mdp en clair ça marche sans problème. Là j'avoue ne rien comprendre...
    As tu vérifié directement dans ta BDD que le mot de passe a bien été crypté lors de l'insertion ?

    Essaie peut être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "INSERT INTO comptes(pseudo, mdp, mode, perso) VALUES('".$pseudo."',PASSWORD('".$mdp."'),'".$mode."','".$perso."')";

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Par défaut
    ok, voici mon code complet

    enregistrement du membre :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    //Récupération des variables
    if(isset($_GET['pseudo']))      $pseudo=$_GET['pseudo'];
    else      $pseudo="";
     
    if(isset($_GET['mdp']))      $mdp=$_GET['mdp'];
    else      $mdp="";
     
    if(isset($_GET['mode']))      $mode=$_GET['mode'];
    else      $mode="";
     
    if(isset($_GET['perso']))      $perso=$_GET['perso'];
    else      $perso="";
     
    //Vérification des champs vides
    if(empty($pseudo) OR empty($mdp) OR empty($mode) OR empty($perso))
        {
        echo '<font color="red">Attention, aucun champ ne peut rester vide !</font>';
    	exit();
        }
     
     
    //Remplacement caractères
    $pseudo = str_replace ("'","''", $pseudo);
    $mdp = str_replace ("'", "''", $mdp);
     
    //Vérification choix mode et perso
    if ($mode < 1) {
    	echo("Le mode de jeu que vous avez saisi est invalide ! <form method =\"post\" action =\"compte.php\"> <input type =\"submit\" value =\"Retour\" size =\"20\" </form> <BR>");
    }
     
    if ($mode > 3) {
    	echo("Le mode de jeu que vous avez saisi est invalide ! <form method =\"post\" action =\"compte.php\"> <input type =\"submit\" value =\"Retour\" size =\"20\" </form> <BR>");
    }
     
    if ($perso < 1) {
    	echo("Le personnage que vous avez saisi est invalide ! <form method =\"post\" action =\"compte.php\"> <input type =\"submit\" value =\"Retour\" size =\"20\" </form> <BR>");
    	exit();
    }
     
    if ($perso > 4) {
    	echo("Le personnage que vous avez saisi est invalide ! <form method =\"post\" action =\"compte.php\"> <input type =\"submit\" value =\"Retour\" size =\"20\" </form> <BR>");
    	exit();
    }
     
    //Enregistrement dans la table
    else
     
    //Connexion à la base
    require ("XXXXX");
     
    //Sélection de la base
    mysql_select_db('XXXX',$idconnect)  or die('Erreur de selection '.mysql_error());
     
    $sql = "INSERT INTO comptes(pseudo, mdp, mode, perso) VALUES('$pseudo',MD5('$mdp'),'$mode','$perso')";
     
    //Insertion des données dans la table
    mysql_query($sql) or die('Pseudo existant ! <BR> <a href ="compte.php"> Retour </a>');
     
     
    connexion du membre une fois inscrit :
     
    // Expiration des cookies et définitions
    $delai = 1*24*3600;
    setcookie("pseudo",$pseudo,time() + $delai);
    setcookie("mdp",$mdp,time() + $delai);
     
     
    // Récupération des variables
    if (isset($_POST['pseudo']))	$pseudo = $_POST['pseudo'];
    	else $pseudo = "";
     
    if (isset($_POST['mdp']))	$mdp = $_POST['mdp'];
    	else $mdp = "";
     
    //Vérification des champs vides
    if (empty($pseudo) OR empty($mdp)) {
    	echo '<font color ="#ff0000"> Identifiants incorrects ! <BR> <a href ="ident.php"> Retour </a> </font>';
    }
     
    else
     
    // Connexion à la base
    require ("XXXX");
     
    // Requête
    $requete = "SELECT * FROM `comptes` WHERE `pseudo` = '$pseudo' AND mdp = '".md5($mdp)."'";
     
    // Envoi de la requête
    $envoi = mysql_query($requete) or die('Erreur de connexion '.mysql_error());
     
    // Boucle de vérification du login
    while ($data = mysql_fetch_assoc($envoi)) {
    	echo "<H2 align =\"center\"> Mon compte </H2>";
    	echo "<BR><BR>";
    	echo "<center>";
    	echo "<table border =\"0\" width =\"100%\">";
    	echo "<TR> <TD =\"33%\" align =\"left\"> liens gauche </TD> <TD width=\"33%\" align =\"center\"> <form method =\"post\" action =\"jeu.php\"> <input type =\"submit\" value =\"Jouer\" size = \"20\"> </form> </TD> <TD width =\"33%\" align =\"right\"> liens droit </TD> </TR>";
    	echo "</table>";
    	echo "</center>";
     
     
    	echo "</form>";
    }
    Voilà, j'en ai sûrement trop mis mais au moins il y a tout lol.

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    On n'injecte jamais dans une requete des données saisies par un utilisateur.
    Il faut utiliser des fonctions comme mysql_real_espace_string() sur les chaines recues.

    Sinon pourquoi tu utilises la fonction md5 mysql pour l'insertion et la fonction md5 php pour la lecture ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Par défaut
    Justement j'ai jamais utilisé les fonctions, je voulais savoir comment faire pour vérifier le champ "mdp" saisi lors de l'identification du membre avec celui de ma table. Je suis pas expert php, je fais avec les moyens du bord.

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Est-ce que tu as regardé comme te l'a dit SPKlls a quoi ressemblait les mot de passe dans ta base ?

    Fais ensuite un echo $requete; pour controler ce que tu envoies comme requete pour la vérification.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. [HTML 5] Vérification d'un champ avec 8 chiffres Incompatible avec un HTA et IE7
    Par hackoofr dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/04/2013, 15h33
  2. [MySQL] Ordre des champs avec la fonction mysql_fetch_array
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 14/12/2009, 23h19
  3. Réponses: 3
    Dernier message: 11/03/2008, 15h10
  4. Initialiser un champ texte avec une fonction javascript
    Par Agoye dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/06/2006, 11h26
  5. Modifier un champs texte avec une fonction PHP (calcul TVA)
    Par Stella2809 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/11/2005, 00h55

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