crypter le password

Eléphanteau du PHP | 11 Messages

28 févr. 2006, 17:45

je debute dans les base de donnée, et j'aurais une question , comment faire pour que mon mot de passe saisie par l'utilisateur dans un formulaire php soit crypter et stocker crypter dans ma base mysql.

Voici une partie du code

Code : Tout sélectionner

$editFormAction = $_SERVER['PHP_SELF']; if (isset($_SERVER['QUERY_STRING'])) { $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); } if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { $insertSQL = sprintf("INSERT INTO inscription (numero, sexe, pseudo, password, date_j, date_m, date_a, pays, code_postal, ville, mail) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", GetSQLValueString($_POST['numero'], "int"), GetSQLValueString($_POST['sexe'], "text"), GetSQLValueString($_POST['pseudo'], "text"), GetSQLValueString($_POST['password'], "text"), GetSQLValueString($_POST['date_j'], "int"), GetSQLValueString($_POST['date_m'], "int"), GetSQLValueString($_POST['date_a'], "int"), GetSQLValueString($_POST['pays'], "text"), GetSQLValueString($_POST['code_postal'], "text"), GetSQLValueString($_POST['ville'], "text"), GetSQLValueString($_POST['mail'], "text"));
Merci d'avance de votre aide

Avatar du membre
ViPHP
ViPHP | 3008 Messages

28 févr. 2006, 17:48

Tu peux utiliser la méthode de cryptage md5() pour crypter les mots de passe. Attention c'est irréversible.

Eléphanteau du PHP | 11 Messages

28 févr. 2006, 18:03

pouvez vous me dire comment mettre la fonction md5 dans mon code ?

et surtout ou ?

meric d'avance

Mammouth du PHP | 19672 Messages

28 févr. 2006, 18:55

Tu as deux méhodes qui ont du reste donné lieu à des débats intéressants :
- Hachage;
- Cryptographie;

Dans le premier cas, ce n'est pas réversible : md5(), sha1()

Dans le second cas, il est possible de retrouver un mot de passe perdu en décryptant : utilisation de la librairie mcrypt, voir le tuto sur le site de PHPFrance, ou encore cryptage directement en SQL avec une fonction intégrée à MySQL : AES_ENCRYPT().

La solution simple, c'est le hachage:
$mdp_chiffre = md5($mdp_en_clair);
C'est tout.

Pour l'authentification, tu récupères le mot de passe de l'internaute, tu le haches de la même manière, tu récupères le mot de passe haché stocké dans la base et tu compares les deux.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 11 Messages

28 févr. 2006, 19:57

merci pour la reponse rapide mais j'ai un petit soucis.. deux insertion deans mes tables (age, sexe, prenom, password) me donne exactement le meme hachage dans ma table (et mes pass d'oruigine sont totalement different)

28 / sexe_F / antoine / d41d8cd98f00b204e9800998ecf8427e
27 / sexe_F / yvan / d41d8cd98f00b204e9800998ecf8427e

la je ne comprend plus rien...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

28 févr. 2006, 21:54

Mmmmhhh très bizarre tout ça. On peut voir un tit bout de code où tu fais cette transformation ?

Eléphanteau du PHP | 11 Messages

28 févr. 2006, 22:25

j'ai changer mon code pour voir, mais pareil.. voila le code :
<?php

$sexe= $_POST['sexe'] ;
$pseudo= $_POST['pseudo']; 
$pass =md5($_POST['$pass']) ;  //<-----
$date_j= $_POST['date_j'];
$date_m= $_POST['date_m'] ;
$date_a= $_POST['date_a'] ;
$pays= $_POST['pays'] ;
$code_postal= $_POST['code_postal'] ;
$ville= $_POST['ville'] ;
$email= $_POST['mail'] ;

echo( "Votre sexe: <b>".$sexe."</b><br>\n" ) ;
echo( "Votre pseudo: <b>".$pseudo."</b><br>\n" ) ;
echo( "Votre pass: <b>".$pass."</b><br>\n" ) ;
echo( "Votre date_j: <b>".$date_j."</b><br>\n" ) ;
echo( "Votre date_m: <b>".$date_m."</b><br>\n" ) ;
echo( "Votre date_a: <b>".$date_a."</b><br>\n" ) ;
echo( "Votre pays: <b>".$pays."</b><br>\n" ) ;
echo( "Votre code: <b>".$code_postal."</b><br>\n" ) ;
echo( "Votre ville: <b>".$ville."</b><br>\n" ) ;
echo( "Votre mail: <b>".$email."</b><br>\n" ) ;



  $dbh = mysql_connect("localhost","******","********") ;

  $sql = "INSERT INTO `inscription` (`numero`,`sexe`,`pseudo`,`password`,`date_j`,`date_m`,`date_a`,`pays`,`code_postal`,`ville`,`email`) VALUES ('','$sexe', '$pseudo','$pass','$date_j','$date_m','$date_a','$pays','$code_postal','$ville','$email')";
  

  $requete = mysql_db_query("******",$sql,$dbh);
	

  if($requete)
  {
    echo "L'inscription s'est bien déroulée";
  }
  
  mysql_close($dbh);
  
?>

<?php

Avatar du membre
ViPHP
ViPHP | 3008 Messages

28 févr. 2006, 22:32

$pass=md5($_POST['pass']);
Tu avais un $ en trop.

Eléphanteau du PHP | 11 Messages

28 févr. 2006, 22:54

merci ,j'ai corrigé , mais le probleme ne change pas... j'ai beau chercher je ne comprend pas..

si je reprend mon ancien code, ou dois-je mettre la fonction md5 ?

(le code fonctione tres biens , mais je ne sai spas ou mettre la fonction..)

Merci encore de votre aide.. c'est tres simpa

<?php require_once('*****_SQL.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}



if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
	
  $insertSQL = sprintf("INSERT INTO inscription (numero, sexe, pseudo, password, date_j, date_m, date_a, pays, code_postal, ville, email) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['numero'], "int"),
                       GetSQLValueString($_POST['sexe'], "text"),
                       GetSQLValueString($_POST['pseudo'], "text"),
                       GetSQLValueString($_POST['password'], "text"),
                       GetSQLValueString($_POST['date_j'], "int"),
                       GetSQLValueString($_POST['date_m'], "int"),
                       GetSQLValueString($_POST['date_a'], "int"),
                       GetSQLValueString($_POST['pays'], "text"),
                       GetSQLValueString($_POST['code_postal'], "text"),
                       GetSQLValueString($_POST['ville'], "text"),
                       GetSQLValueString($_POST['email'], "text"));

  mysql_select_db($database_*****_SQL, $*****_SQL);
  $Result1 = mysql_query($insertSQL, $*****_SQL) or die(mysql_error());
}
?>


ViPHP
ViPHP | 2144 Messages

28 févr. 2006, 23:01

Il faut être méthodique: si le mot de passe qui est dans ta base n'est pas correcte, c'est plus que probablement que tu as une erreur lors de son traitement. Comme par fait un print ou un echo de la valeur récupérer par $_POST et par faire un affichage de la valeur du hash après l'utilisation de md5.

Eléphanteau du PHP | 11 Messages

28 févr. 2006, 23:16

bon, je suis asser debutant, pour mon mot de passe dans ma base


Champ password

Type Varchar

Taille 250

Attribut aucun

Null not null

(je n'ai pas mis d'attribut)

et au sujet de l'affichage de la valeur du hash, pourriez vous me donner un exemple ? apres je vous laisse tranquille

:wink:

Mammouth du PHP | 19672 Messages

28 févr. 2006, 23:25

Affiche avec echo() tout simplement
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 11 Messages

28 févr. 2006, 23:29

mais ce que je ne comprend pas c'est que mon probleme n'est pas a l'affichage, quand je verifie mon password apres la fonction md5 c'est en faisant des commandes sq dans ma base de donnée direct.
Modifié en dernier par ledruid le 28 févr. 2006, 23:34, modifié 1 fois.

Mammouth du PHP | 19672 Messages

28 févr. 2006, 23:31

Faire afficher les variable peut t'aider à repérer des erreurs avant l'insertion vers MySQL : si il n'y a pas de changement dans le hachage malgré le changement de mot de passe, c'est que le premier hachage est conservé en mémoire quelque part : il faut trouver où. En affichant les variables en différents endroits, tu verras un peu mieux ce qui se passe.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 11 Messages

28 févr. 2006, 23:35

ok, j'ai aussi pensé que mes variable reste "stocker" quelque part ...
Je vais essayer un peu de continuer a chercher..


Merci a vous tous