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 mot de passe et pseudo (PHP - MySql)


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 151
    Par défaut Vérification mot de passe et pseudo (PHP - MySql)
    Bonjour à tous,
    j'ai créé une page PHP pour inscription visiteur et une page pour identification qui renvoie vers une page de vérification de mot de passe et du pseudo qui compare les identifiants aux ceux stockés dans la base de données MySql .
    Le code de cette dernière est le suivant:
    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
     
    $objetpdo =new PDO('mysql:host=dbXXXXXXXXX.hosting-data.XX;dbname=dbXXXXXXX','XXXXXXXX','XXXXXXXXXXX');
    $pdostat=$objetpdo->prepare('SELECT * FROM inscription');
     
    $executeEstBon=$pdostat->execute();
    $requete=$pdostat->fetchall();
     
     
    foreach($requete as $donnee):
      if ($_POST['pass'] ==$donnee['motpasse'] && $_POST['pseudo']==$donnee['pseudo']){
    				header("location:passBon.php");
    				}
    				else{
    		header("location:passFaux.php");
    				}
    		               endforeach;	
     
     
               ?>
    ce code fonctionne bien sauf qu'il ne prend en compte que la dernière colonne dans la base des données (cad: le dernier inscrit). Si je supprime cette dernière colonne, il prend en compte celle d'avant qui devient la dernière sur la liste.
    Quelqu'un pourrait m'aider svp.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ce n'est pas du tout comme ça qu'on procède.
    Il existe 10 000 questions déjà posées et autant de réponses.
    "script PHP PDO connexion membre"

    Parmi les principes es de base : on n'enregistre JAMAIS un mot de passe EN CLAIR !
    Ni en bdd, ni en session, ni rien.
    Dernière modification par Invité ; 15/08/2019 à 16h05.

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 151
    Par défaut Vérification mot de passe et pseudo (PHP - MySql)
    Merci pour la réponse Jreaux62.

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 151
    Par défaut Vérification mot de passe et pseudo (PHP - MySql)
    Bonjour à tous,
    j'ai un souci avec la récupération du mot de passe haché dans une base de donnée de membres.
    Chaque fois que m'identifie, je reçois un message me disant: "Pseudo ou mot de passe incorrect". Dans la base de données j'ai bien le mot de passe "$hash".

    $2y$10$sYbqY.fVbU2Hz

    Voici le code des 3 pages:

    page1:

    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
     
    <!DOCTYPE html>
    <html>
    	<head>
    	<title>base de données membres</title>
    	</head>
    	<body>
    	<h2>Enregistrement</h2>
    	<form action="connexion.php" method="POST">
    		<label>Identifiant :</label>
    		<input type="text" name="username" required /><br /><br />
    		<label>Mot de passe :</label>
    		<input type="password" name="password1" required /><br /><br />
    		<label>Retapez mot de passe :</label>
    		<input type="password" name="password2" required /><br /><br />
    		<input type="submit" />
    	</form>
    	<br /><hr />
    	<h2>Connexion</h2>
    	<form action="identification.php" method="POST">
    		<label>Identifiant :</label>
    		<input type="text" name="username" required /><br /><br />
    		<label>Mot de passe :</label>
    		<input type="password" name="password1" required /><br /><br />
    		<input type="submit" name="valider" />
    	</form>
    	</body>
    </html>
    page2 qui insère les données dans la base

    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
     
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
     
     $objetpdo =new PDO('mysql:host=dbxxxxxxxxxx.hosting-data.io;dbname=dbsxxxxxxx','dbuxxxx','xxxxxxxx');
    if(isset($_POST["username"]) && isset($_POST["password1"]) && isset($_POST["password2"])){
    if($_POST["password1"] == $_POST["password2"]){
    $hash = password_hash($_POST["password1"],PASSWORD_DEFAULT);
    $pdostat =  $objetpdo->prepare('INSERT INTO basemotpasse (username, password1) VALUES(:username, :password1);');
    $pdostat->bindvalue(':username',$_POST['username'],PDO::PARAM_STR);
    $pdostat->bindvalue(':password1',$hash,PDO::PARAM_STR);
    $pdostat->execute();
    		header('Location: connexion.php');
    		exit();
    	}
    }
    ?>

    page3 qui traite la requête:

    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
     
    <?php
    $objetpdo =new PDO('mysql:host=dbxxxxxxxxx.hosting-data.io;dbname=dbsxxxxxx','dbuxxxxxx','xxxxxxxxx');
    if(isset($_POST['username']) && isset($_POST['password1'])){
    $pdostat = $objetpdo->prepare('SELECT password1 FROM basemotpasse WHERE username = :username');
    $pdostat->bindvalue(':username',$_POST['username'],PDO::PARAM_STR);
    $pdostat->bindvalue(':password1',$hash,PDO::PARAM_STR);	
    $pdostat->execute();	
    $result = $pdostat->fetch();
    $correctPassword = password_verify($_POST['password1'],$hash);
    	echo password_verify($_POST['password1'],$hash);
     
    	if($correctPassword){
    echo "Bienvenue sur le site ".$_POST['username'];
    	}
    else{
    echo "Identifiant et/ou mot de passe incorrect";
    	}
    }
    ?>
    pourriez-vous me dire pourquoi le mot de passe haché ne correspond pas au mot de passe d'identification, svp ?
    Merci par avance.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- page3 (identification.php ?) : cette ligne est en trop :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdostat->bindvalue(':password1',$hash,PDO::PARAM_STR);
    2- quant à la question :
    C'est tout l'intérêt de password_hash.
    Et aussi pourquoi on doit utiliser password_verify.

  6. #6
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 151
    Par défaut Vérification mot de passe et pseudo (PHP - MySql)
    Merci beaucoup pour ta gentillesse et ton attention Jreaux62,
    J'ai cru comprendre que l'on hachait un mot de passe pour le protéger en cas d'intrusion malintentionnée dans la base de données, tout en laissant la possibilité aux membres de s'identifier lors de la connexion. Maintenant je saisi l'esprit de cette démarche. Mais alors comment un visiteur peut-il se connecter avec un mot de passe qu'il a créé si ce même mot de passe est refusé ??!
    Merci encore

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

Discussions similaires

  1. [MySQL] Création d'un login et mot de passe securisé avec PHP/MySQL
    Par NicoMontreal91 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 28/09/2008, 22h01
  2. mot de passe du pseudo oublié
    Par dark&wise dans le forum IRC / mIRC
    Réponses: 5
    Dernier message: 20/09/2007, 22h39
  3. [Système] Changer un mot de passe unix via PHP
    Par gordon00 dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2007, 17h11
  4. dictionnaire vérification mot de passe
    Par philippe281281 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/07/2006, 10h46
  5. [Sécurité] Crypter un mot de passe UNIX avec PHP
    Par dom78 dans le forum Langage
    Réponses: 3
    Dernier message: 15/05/2006, 19h28

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