comment crypter mon mot de passe

Eléphant du PHP | 162 Messages

06 mars 2012, 13:08

salut . j'ai un code qui marche mais mon problème est que le mot de passe n'est pas crypté . je suis débutant en php je sais pas comment m'y prendre.
j'ai vu des sujet sur MD5 . mais j'arrive pas a l'utiliser.

ma table :

--
-- Structure de la table `members`
--

CREATE TABLE IF NOT EXISTS `members` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`username` varchar(65) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`password` varchar(65) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=18 ;


INSERT INTO `members` (`id`, `username`, `password`) VALUES
(1, 'msi79', 'cool75sool')
);

inscription.php
<?php
$date = date("d-m-Y");
$heure = date("H:i");
echo 'Nous sommes le '.$date.' et il est '.$heure;
?>

<?php
if (isset($_POST["valider"])) {
    
      /*IMPORTANT*/ 

include("connection.php"); 

/*faut securiser*/ 
foreach($_POST as $k => $v){ 
$v=mysql_real_escape_string(strip_tags($v)); 
$_POST[$k]=$v; 
} 

/*faut securiser*/ 
foreach($_GET as $k => $v){ 
$v=mysql_real_escape_string(strip_tags($v)); 
$_POST[$k]=$v; 
}
   $username=trim($_POST["username"]);
   $password=trim($_POST["password"]);
   
   
   
	// on regarde si l'url existe déjà 
  // on regarde si l'url existe déjà 
    $sql = "SELECT username FROM members WHERE username='$username'"; 
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());  
     
    // on compte le nombre de résultats 
    $res = mysql_num_rows($req); 

      if($res!=0)  // l'url existe déjà, on affiche un message d'erreur 
        { 
             $msg = 'Désolé, mais ce nom  existe déjà dans notre base.'; 
             echo '<script>alert(\' '.$msg.' \');</script>' ;
        } 
     else  // L'url n'existe pas, on insère les informations du formulaire dans la table 
        { 

      $sql = "INSERT INTO members(id,username,password) VALUES('','".$username."','".$password."')";																																																																																																																																																																						
      // on insère les informations du formulaire dans la table  
      mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
      $msg =  'Les informations sur l inscription  ont été ajoutées dans la base de données.</br>';
      
      ///echo '<font color="red">'.$msg.'</font>'; 
      echo '<script>alert(\' '.$msg.' \');</script>';
	  
	  session_start();
				$_SESSION['username'] = $_POST['username'];
				header('Location: login_success.php');
				exit();
      }

}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style1 {	color: #FFFFFF;
	font-weight: bold;
}
-->
</style>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <table width="524" border="0" align="center" bgcolor="#FF00FF">
    <tr>
      <td colspan="2"><div align="center" class="Style1">
          <h1>Inscription &agrave; l'espace membre :</h1>
      </div></td>
    </tr>
    <tr>
      <td width="228"><span class="Style1">Login : </span></td>
      <td width="286"><input type="text" name="username" value="" /></td>
    </tr>
    <tr>
      <td><span class="Style1">Mot de passe : </span></td>
      <td><input type="password" name="password" value="" /></td>
    </tr>
    <tr>
      <td colspan="2"><table width="83" border="0" align="center">
          <tr>
            <td width="77"><input type="submit" name="valider" value="Inscription" /></td>
          </tr>
      </table></td>
    </tr>
  </table>
</form>
</body>
</html>
index.php
<style type="text/css">
<!--
.Style8 {
	color: #FF00FF;
	font-style: italic;
}
.Style11 {color: #FFFFFF; font-style: italic; }
-->
</style>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="checklogin.php">
<td>
<table width="100%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#0A5B79">
<tr>
<td colspan="3"><table width="512" border="0" align="center">
  <tr>
    <td width="395"><h1 align="center" class="Style8">Identifiez-vouz !! </h1></td>
    <td width="101"><img src="images/logo3.jpg" alt="dfghj" width="100" height="70" /></td>
  </tr>
</table></td>
</tr>
<tr>
<td width="69"><span class="Style11">Username</span></td>
<td width="7"><span class="Style11">:</span></td>
<td width="422"><input name="myusername" type="text" id="myusername" ></td>
</tr>
<tr>
<td><span class="Style11">Password</span></td>
<td><span class="Style11">:</span></td>
<td><input name="mypassword" type="text" id="mypassword" ></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input name="Submit" type="submit" value="Login">
  <table width="78" border="0" align="right">
    <tr>
      <td><a href="inscription2.php" class="Style11">Inscription!!</a></td>
    </tr>
  </table></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
deconnexion.php
<?php
session_start();
session_unset();
session_destroy();
header('Location: index.php');
exit();
?>

ViPHP
xTG
ViPHP | 7331 Messages

06 mars 2012, 13:45

md5() ne crypte pas, cela créé un hash.
Le principe du cryptage c'est de pouvoir crypter et décrypter un mot.
Le hashage ne permet que d'aller dans un sens (d'autant plus que certains mots peuvent donne le même hash).

Pour utiliser md5() il faut que dans ta table cela ne soit pas le mot de passe en clair mais son hash...
Ensuite il suffit d'utiliser md5() sur ta variable reçue du formulaire pour la comparer à celle en bdd.

Pour utiliser le cryptage regardes dans la documentation le module mcrypt.

Eléphant du PHP | 162 Messages

06 mars 2012, 13:51

au faite mon scripte marche mais je veut que dans le champs mot de passe , le mot de passe sorte en pointillé or c 'est pas le cas . le mot de passe que je veux mettre en textuellement.

Eléphanteau du PHP | 17 Messages

06 mars 2012, 13:58

Bonjour

Simplement, remplace :
<td><input name="mypassword" type="text" id="mypassword" ></td>
par :
<td><input name="mypassword" type="password" id="mypassword" ></td>
Modifié en dernier par Switi le 06 mars 2012, 14:08, modifié 1 fois.

Eléphant du PHP | 162 Messages

06 mars 2012, 14:05

oui merci ça marche . ta réponse est précise est bien . merci beaucoup .
ça marche très bien .

mais est ce que tu trouve mon code parfait ???
qu'est que je pourrai ajouter pour parfaire ??

ViPHP
xTG
ViPHP | 7331 Messages

06 mars 2012, 14:37

Ne pas stocker les mots de passe en clair dans la bdd. ;)

Eléphant du PHP | 162 Messages

06 mars 2012, 14:41

oui je voulais utiliser MD5 mais je me suis perdu en route donc j'ai abandonné et je sais plus comment faire

Mammouth du PHP | 2278 Messages

06 mars 2012, 15:50

Si tu as les mots de passe en clair dans ta table, tu dois pouvoir faire un update de tes mots de passe avec
update clients set passe = md5(passe) where 1;
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 162 Messages

06 mars 2012, 15:55

vraiment je vois pas comment écrire ce code la (update)

Mammouth du PHP | 2278 Messages

06 mars 2012, 17:58

Tu te sers de PHPMYADMIN, de Wamp, Xamp, ou autre chose?,
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 162 Messages

06 mars 2012, 21:29

je me sert de wamp

ViPHP
AB
ViPHP | 5818 Messages

06 mars 2012, 22:03

Sinon md5 ne devrait plus être utilisé, utilise au minimum sha256 ou mieux sha512. Tu peux avoir la liste des algo de hash supportés en faisant :
<?php
print_r(hash_algos());
?>
Pour hasher ton mdp en sha512 tu peux faire :
$mdp = $_POST['mdp'];

$hash_mdp = hash('sha512', $mdp);

Mammouth du PHP | 2278 Messages

06 mars 2012, 23:15

je me sert de wamp
Dans l'interface de wamp, il y a un accès à phpmyadmin, si je me souviens bien, et dans phpmyadmin, une fois qu'on a ouvert la bonne table, il y a une option sql où on peut rentrer sa commande.
Sinon, il est plus commode de se servir de heidisql à la place de phpmyadmin, plus convivial que phpmyadmin et aussi performant.
Aspropos, la remarque sur sha12 est à appliquer avant toute autre chose....
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD