vérification d'un mot de passe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : vérification d'un mot de passe

Re: vérification d'un mot de passe

par AB » 29 mai 2015, 22:38

Salut,

Attention !

Il y a un trou de sécurité majeur dans le code ci-dessus : avec la méthode "query" il faut impérativement utiliser la fonction "quote" pour protéger les variables, les guillemets évitent une erreur mais ne protègent rien.

Et particulièrement pour des données utilisateur on préfère faire des requêtes préparées pour assurer une meilleure protection.

Il y a un tuto ici (script d'inscription + script de connexion).

Re: vérification d'un mot de passe

par sarah mb » 22 mai 2015, 14:39

merci beaucoup pour votre aide

Re: vérification d'un mot de passe

par Saian » 22 mai 2015, 13:00

Salut, ce serait plus lisible indenté et avec la balise d'affichage de code PHP.

J'ai repris ton code en corrigeant 2, 3 choses et y ai glissé quelques remarques :
<?php

try {
  /* On se connecte à MySQL */
  $bdd = new PDO('mysql:host=localhost;dbname=projets;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch(Exception $e) {
  die('Erreur : '.$e->getMessage());
}

$nom  = $_POST['textfield'];
$pass = $_POST['textfield2'];

if(empty($nom) || empty($pass)) {
  echo "Veuillez saisir tous les Champs"; 
} else {
  $reponse = $bdd->query("SELECT * FROM password WHERE nomp = '$nom' AND passwd = '$pass'");/* avec des apostrophes autour des champs textes */
  /* pourquoi cette ligne ? la requête est exécutée juste au dessus. $req->execute(array($nom, $pass)); */

  $donnees = $reponse->fetch();

  if(!$donnees)
    die ("Le nom d'Utilisateur $nom n'existe pas !!");
	
  $pw = $donnees['passwd'];
  if(trim($pw) == trim($pass)) {/* pourquoi ce test étant donnée que dans la requête on a passwd = '$pass', si une ligne est retournée c'est forcément le bon mot de passe... */
    echo "le nom est <br>";
    echo $pw ;/* nom n'est pas égal à $pw, ça c'est passwd */
    include('sarah.html');
  } else {
    echo "mot de passe erronner";
  }
	
  $reponse->closeCursor();
}

vérification d'un mot de passe

par sarah mb » 22 mai 2015, 11:36

bonjour :) ,
j'ai un problème de versification de mot de passe d'un utilisateur mais j'arrive pas faire
voici mon programme et aidez moi a corriger merci
<?php

try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=projets;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}


$nom=$_POST['textfield'];
$pass=$_POST['textfield2'];
if(empty($nom)||empty($pass)){
echo"Veuillez saisir tous les Champs"; }
else {

$reponse = $bdd->query('SELECT * FROM password where nomp = $nom AND passwd= $pass ');
$req->execute(array($_POST['textfield'], $_POST['textfield2']));


$donnees = $reponse->fetch() ;

if(!$donnees)
die (" Le nom d'Utilisateur $nom n'existe pas !!");
$pw=$donnees['passwd'];
if(trim($pw)==trim($pass)){
echo "le nom est <br>";
echo $pw ;
include('sarah.html');
}
else {
echo" mot de passe erronner";}


}
$reponse->closeCursor();









?>