Page 1 sur 4

Récupération de mot de passe

Posté : 27 nov. 2011, 09:44
par locos974
Bonjour,

Je souhaite vous proposé mon code pour récupéré sont mot de passe sur mon site :
<?php session_start(); include_once("config.php");?>
<?php include('header.php')?>
   <?php include('menu.php')?>
</div>
<div class="wrap-content">
   <div id="box_758">
          <div class="top"><img src="images/theme/title/contact.png" alt="" /></div>
          <div class="back">
                 <div class="box_top"></div>
                 <div class="box">
                  <h2>Mot de passe oublié</h2>
                 <?php  switch($_GET['etape'])
{
case '1':

                
{
?>      
        <form method="post" action="mdpoublie.php?etape=2">
                <table border=0>
                        <tr>
                                <td>Nom de compte : </td><td><input type="text" name="ndc" /></td>
                        </tr>
                        <tr>
                        </tr>
                </table>
                <input type="submit" value="Continuer" />
        </form>
                
 <?php } ?>
<?php
case '2':
if(isset($_POST['ndc']))
{
        $connect = mysql_connect($serveur, $serveurlogin, $serveurpass) or die(mysql_error());
        mysql_select_db($dbother,$connect) or die(mysql_error());
        $req = mysql_query('SELECT * FROM accounts WHERE account="'.$_POST['ndc'].'"') or die(mysql_error());
        $reponse = mysql_fetch_array($req) or die(mysql_error());
        if(isset($reponse['account']))
        {
                ?> 
                        <center>
                <form method="post" action="mdpoublie.php?etape=3">
                        <table border=0>
                                <tr>
                                        <td>Nom de compte : </td><td><input type="text" name="ndc" value="<?php echo $_POST['ndc']; ?>" /></td>
                                </tr>
                                <tr>
                                        <td>Question secrète : </td><td><input type="text" value="<?php echo $reponse['question']; ?>" /></td>
                                </tr>
                                <tr>
                                        <td>Réponse secrète : </td><td><input type="text" name="reponse" /></td>
                                </tr>
                                <tr>
                                </tr>
                        </table>
                        <input type="submit" value="Continuer" />
                </form>
                </center>                       
                <?php
        }
        else
        {
                echo '
                        <center><font color=red>Erreur : <b>Nom de compte incorrect !</b></font></div></div>';
        }
}
case '3':
if(isset($_POST['ndc'])) {
        $connect = mysql_connect($serveur, $serveurlogin, $serveurpass) or die(mysql_error());
        mysql_select_db($dbother,$connect) or die(mysql_error());
        $req = mysql_query('SELECT * FROM accounts WHERE account="'.$_POST['ndc'].'"') or die(mysql_error());
        $reponse = mysql_fetch_array($req) or die(mysql_error());
if(isset($_POST['reponse']) AND $_POST['reponse'] == $reponse['reponse']) {
        echo 'Votre mot de passe est : "<b>'.$reponse['pass'].'</b>". Merci de le noter quelque part.'; 
} 
}
} 

?>              
                 <?php include('footer.php')?>
Or maintenant je souhaite codé mes mot de passe en MD5 et faire lors de la récupération qui génère un mot de passe aléatoire ?

Cordialement & merci d'avance !

Re: Récupération de mot de passe

Posté : 27 nov. 2011, 11:23
par Aureusms
La stratégie que je conseillerais :

1. Créer un mot de passe aléatoire sur 8 caractères Alphanumériques
2. Envoyer au destinataire
3. Hasher le mot de passe en sha1 car des bases de données md5 existent sur le net
4. Rajouter un p'tit grain de sable dans le mot de passe : inversion de position multiple ou rajout d'une dernière occurrence.
5. Inscrire le mot de passe dans la base de données.

Re: Récupération de mot de passe

Posté : 27 nov. 2011, 13:51
par locos974
Euh oui mais je n'en n'est aucune idée de comment faire..

Re: Récupération de mot de passe

Posté : 27 nov. 2011, 14:08
par moogli
Tu a besoin de :
- La concaténation : http://www.lephpfacile.com/cours/5-conc ... ux-chaines
-la fonction rand
- la fonction mail
- la fonction sha1 ou la fonction la fonction hash qui offre plus de possibilité voir si tu le souhaite mcrypte.

La marche à suivre t'es indiquée par aureusms.
La grain de sable et une chaîne aléatoire (ou non, mais si elle est aléatoire il faut la stocker ;)) que tu ajoute par concaténation au début, à la fin ou les deux du mot de passé avant le hachage via sha1, hash ou autre cela permet d'éviter d'avoir le mot de passé directent en claire si jamais quelqu'un arrive à faire la correspondance avec le hash ;)

Essai quelque chose et si tu n'y arrive pas revient on pourra t'aider ;)


@+

Re: Récupération de mot de passe

Posté : 28 nov. 2011, 21:39
par locos974
Bonjour,

Pour la concaténation, j'ai compris. Pour la fonction rand aussi par contre ce que je ne comprend et que je ne saurais pas faire c'est comment transformer le chiffre + lettre ou quoi en code md5 ou sha1 puis le changer dans ma base de donnée ?

Re: Récupération de mot de passe

Posté : 30 nov. 2011, 20:25
par locos974
Up :?:

Re: Récupération de mot de passe

Posté : 30 nov. 2011, 20:26
par xTG
Tu as regardé le lien sur sha1() ? Il y a des exemples tu sais dans la documentation. ^^

Re: Récupération de mot de passe

Posté : 30 nov. 2011, 23:15
par Aureusms
$motDePasse = "a7G4Rp9";
$motDePasseHashe = sha1($motDePasse);
echo $motDePasseHashe;

Re: Récupération de mot de passe

Posté : 04 déc. 2011, 13:26
par locos974
Si je veux généré un mot de passe aléatoire Hashé ça donne cela ?
<?php
$motDePasse = rand(5, 15);
$motDePasseHashe = sha1($motDePasse);
echo $motDePasseHashe;
?>

Re: Récupération de mot de passe

Posté : 04 déc. 2011, 15:13
par Ryle
C'est bien cela si tu veux que le mot de passe généré soit juste un chiffre compris entre 5 et 15 :) La fonction rand ne te retourne qu'un chiffre au hasard (entre le min et le max précisé), elle ne génère pas des mots de passe.

Il est d'ailleurs préférable d'utiliser mt_rand() à rand().

Et les commentaires postés dans la documentation de la fonction mt_rand() contiennent plusieurs exemples de fonctions permettant de générer des mots de passe ;)

Re: Récupération de mot de passe

Posté : 04 déc. 2011, 20:44
par locos974
<?php
session_start();      include_once("config.php");
if (empty($_GET['action']))
{

$pass = $_POST['password'];
$account = $_POST['username'];
$passconf = $_POST['password_conf'];
$email = $_POST['email'];
$capatcha = $_POST['captcha'];
$capatcha2 = $_POST['captcha2'];
$rule = $_POST['rule'];
function random_str($nbr)
{
    $str = "";
    $chaine = "abcdefghijklmnpqrstuvwxy";
    srand((double)microtime()*1000);

    for($i=0; $i<$nbr; $i++) {
        $str .= $chaine[rand()%strlen($chaine)];
    }

    return $str;
}

// Exemple d'un appel avec 12 caractères
$str = random_str(12);

//capatcha
switch ($capatcha2)
{ 
case 1:
$nombre = "B6BB76";
break;
case 2:
$nombre = "jw62k";
break;
case 3:
$nombre = "DODFUS";
break;
case 4:
$nombre = "UDAQX" ;
break;
case 5:
$nombre = "MOZSQ" ;
break;
case 6:
$nombre = "A13QS" ;
break;
case 7:
$nombre = "OP903" ;
break;
case 8:
$nombre = "TYQXP" ;
break;
case 9:
$nombre = "QXUW9" ;
break;
case 10:
$nombre = "B2G9Q" ;
break;
}


//fin capatcha

if ($pass == $passconf)
{
if (strpos($email,'@')== true)
{
if ($_POST['username'] != NULL)
{
if ($nombre == $capatcha)
{
if ($rule == "check")
{
$motpass = sha1($pass)
$db = mysql_connect($serveur, $serveurlogin, $serveurpass);
mysql_select_db($dbother,$db); 
$req = "INSERT INTO accounts (account,pass,email,pseudo) VALUES('$account','$motpass','$email','$str')";
mysql_query($req); 
$_SESSION['account'] = $account;
...

Le problème de ça j'obtiens un erreur au niveau de :
-$db = mysql_connect($serveur, $serveurlogin, $serveurpass);

A la base sans le :
-$motpass = sha1($pass)
Le formulaire remplie ce transfére dans la BDD.

Une solution svp ?

Re: Récupération de mot de passe

Posté : 05 déc. 2011, 19:49
par locos974
Up :?:
J'aimerais enfin pouvoir l'avoir pour mercredi.. Dire que je passe a autre chose en dévelopement :)
Merci

Re: Récupération de mot de passe

Posté : 05 déc. 2011, 22:00
par Ryle
Et qu'est ce qu'on met à la fin d'une instruction pour dire à php qu'elle est terminée ? ;)

Re: Récupération de mot de passe

Posté : 05 déc. 2011, 22:03
par locos974
Ce n'est qu'une partie du script sinon elle est refermé bien sûr mais d'où proviens le problème ?

Re: Récupération de mot de passe

Posté : 05 déc. 2011, 22:09
par Ryle
Hum.. bon alors qu'est ce qu'on met au bout de cette ligne là :
$motpass = sha1($pass)
... pour dire à php que l'instruction est terminée et qu'il peut passer à la suivant sans générer une erreur ;)