Avatar billede almex Mester
02. februar 2012 - 13:35 Der er 5 kommentarer og
1 løsning

Password Recover (md5)

Hey Eksperten

Jeg er igang med at lave en password recovery for mine brugere på min hjemmeside..

Har sådan set lavet en der fungere fint..
Problemet at efter jeg har lavet denne password recover (som sender dit password til ens email)..

Så har jeg lavet om på vores login/opret bruger så det bliver tilsent til mysql databasen via MD5.

Når jeg så bruger min recovery får jeg tilsendt den streng som ligger i databasen efter den har været igennem md5..
Nu er det sådan at jeg skal have den til at tilsende det password som er ens rigtige og ikke det man ser i databasen eftersom du ikke kan logge ind med den streng du ser i databasen


<?php
$email_to = $_POST['email_to'];

$glemtpass_sql = "SELECT * FROM bruger WHERE email='$email_to'";
$glemtpass_result = mysql_query($glemtpass_sql);

$count = mysql_num_rows($glemtpass_result);

if($count==1){

$glemtpass_rows = mysql_fetch_array($glemtpass_result);

$dit_password = $glemtpass_rows['bruger_pas'];
$dit_brugernavn = $glemtpass_rows['bruger_navn'];

$to = $email_to;

$subject = "Dit glemte password for dpanic.dk";

$headers  = "from: Lurra A/S 'Dont Panic' (Password Recover) <trosar1@hotmail.com>";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";

$messages = "
<table style='border:1px groove #000; width:550px; padding:15px; font-family:'Trebuchet MS', Arial, Helvetica, sans-serif; font-size:10px; color a:#FFF;'>
        <tr style='background-color:#000; color:#FFF; text-align:center; font-size:12px; font-weight:bold; line-height:35px;'>
            <td><i>Lurra Entertainment » Automatisk Password Recovery</i></td>
        </tr>
        <tr>
            <td>
            <br />
            <b>Dette er en automatisk meddelse fra lurra.dk</b><br />
            <i>Du kan ikke svare tilbage på denne mail</i>
            </td>
        </tr>
        <tr>
            <td>
            <br />
            Du har anmodet om at få tilsendt nyt password til din bruger på dpanic.dk<br />
            <b>Dit brugernavn:</b> $dit_brugernavn<br />
            <b>Dit password:</b> $dit_password
            </td>
        </tr>
        <tr style='font-size:9px;'>
            <td><br />
            <i>Hvis du ønsker at kontakte lurra entertainment yderligere bedes du benytte vores support center på http://lurra.dk/support</i><br /><br /></td>
        </tr>
        <tr style='background-color:#000; color:#FFF; text-align:center; font-size:9px;'>
            <td>
            <b>
            <a href='http://lurra.dk'>Lurra Entertainment</a>
            </b> <br />
            4220 Korsør<br />

            <b>email.:</b> trosar1@hotmail.com
            </td>
        </tr>
    </table>
";

$sentmail = mail($to,$subject,$messages,$headers);
}

else {
echo "$email_to findes ikke i vores systemer <br />";
}

if($sentmail){
echo "Dit brugernavn og password er blevet sendt til $email_to. <br />
      <b>Bemærk at emailen kan havne i spam filtret så tjek i uønsket post hvis du ikke har modtaget dit password inden for få minutter</b>";
}
else {
echo "<i>Kunne ikke finde en email at sende til</i>";
}
?>

Sådan ser min kode ud..
(Prøvede at lave en quote/code men det virkede ikke.)
Avatar billede michael_stim Ekspert
02. februar 2012 - 13:56 #1
Du kan jo ikke sende det når du HAR krypteret/hashet det. Du skal sende det før du smider det i basen. Altså der hvor du genererer det og før du hasher det.
Avatar billede claes57 Ekspert
02. februar 2012 - 13:56 #2
http://www.phpbuilder.com/columns/tim20000505.php3?page=1
er der en, der har lavet et kommenteret system - php-kode skal lige opgraderes til php5 (der er nogle gamle kald i).
Avatar billede michael_stim Ekspert
02. februar 2012 - 13:59 #3
Hov, som jeg forstår det, er det ikke en recover du har gang i her, men bare tilsendelse af ens eksisterende password, eller? Det bedste ville være at du autogenererer et nyt password som du sender til bruger og database.
Avatar billede almex Mester
03. februar 2012 - 09:49 #4
Ja det rigtigt Michael_Stim..

Hvordan kan lave man sådanne en autogeneret password ting?
Avatar billede olsensweb.dk Ekspert
04. februar 2012 - 17:30 #5
til at lave et nyt password kunne man kunne på php.net/shuffle
citat

tyler at CompLangs dot com 01-Jan-2010 06:59
Here is a quick function I wrote that generates a random password and uses shuffle() to easily shuffle the order.

<?php
function randPass($upper = 3, $lower = 3, $numeric = 3, $other = 2) {
    //we need these vars to create a password string
    $passOrder = Array();
    $passWord = '';

    //generate the contents of the password
    for ($i = 0; $i < $upper; $i++) {
        $passOrder[] = chr(rand(65, 90));
    }
    for ($i = 0; $i < $lower; $i++) {
        $passOrder[] = chr(rand(97, 122));
    }
    for ($i = 0; $i < $numeric; $i++) {
        $passOrder[] = chr(rand(48, 57));
    }
    for ($i = 0; $i < $other; $i++) {
        $passOrder[] = chr(rand(33, 47));
    }

    //randomize the order of characters
    shuffle($passOrder);

    //concatenate into a string
    foreach ($passOrder as $char) {
        $passWord .= $char;
    }

    //we're done
    return $passWord;
}
?>

/citat
$pw = randPass();

brugeren skal bare have en link på login formen med teksten glemt password,
hvorefter han skal indtaste sin mail addresse, og mailaddressen slået op i db, nyt pw generares via kald til ovenstående function, skrives til database i krypteret form, og sendes til brugeren i klartekst form pr mail
Avatar billede almex Mester
17. februar 2012 - 11:38 #6
Jeg takker, Undskyld det sene svar har været en uge væk fra computeren.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester