login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[php] Wachtwoord vergeten (Opgelost)

Offline Simax - 04/09/2008 15:51
Avatar van SimaxOnbekend Ik heb een script geschreven waarmee klanten hun wachtwoord kunnen opvragen. Echter krijg ik het niet werkend..

Iemand die mij wil helpen/advies kan geven?

  1. <h1>Wachtwoord vergeten</h1>
  2.  
  3. <?php
  4. if(isset($_POST["verzenden"]))
  5. {
  6. $onderwerp = "Uw wachtoord";
  7. $gebruiker = $_POST["gebruikersnaam"];
  8. $email = $_POST["email"];
  9.  
  10. if(isset($gebruiker) && isset($email))
  11. {
  12. $select = "SELECT wachtwoord FROM klanten
  13. WHERE gebruikersnaam = {$gebruiker} AND email = {$email}";
  14. $query = mysql_query($select) or die(mysql_error());
  15. $result = mysql_fetch_array($query);
  16.  
  17. if(mysql_num_rows($query) != 0)
  18. {
  19. $bericht = "
  20. Beste {$gebruiker},
  21. Uw wachtwoord is: {$result["wachtwoord"]}
  22. <br/>
  23. Romijnders";
  24.  
  25. mail($email, $onderwerp, $bericht);
  26. }
  27. else
  28. {
  29. print "<p class=\"false\">Deze combinatie bestaat niet.</p>";
  30. }
  31. }
  32. else
  33. {
  34. print "<p class=\"false\">Niet alle velden zijn ingevuld.</p>";
  35. }
  36. }
  37. ?>
  38.  
  39. <form action="" method="post">
  40. <label for="gebruikersnaam">Gebruikersnaam:</label>
  41. <input id="gebruikersnaam" name="gebruikersnaam" type="text"/>
  42. <br/>
  43. <label for="email">Email:</label>
  44. <input id="email" name="email" type="text"/>
  45. <br/>
  46. <input class="submit" name="verzenden" type="submit" value="Verzenden"/>
  47. </form>

14 antwoorden

Gesponsorde links
Offline Ontani - 04/09/2008 15:53
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Wat werkt er niet?
Geef het script fouten?
Hoe zijn de wachtwoorden opgeslagen in de database?

Beetje duidelijkere vragen stellen...
Offline Simax - 04/09/2008 15:57
Avatar van Simax Onbekend Als niets of een van beide velden word ingevuld, krijg ik..
Citaat:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2


Vul ik beide velden in, krijg ik..
Citaat:
Unknown column 'sad' in 'where clause'


Wachtwoorden opgeslagen met md5.

Offline Ontani - 04/09/2008 15:59
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Als ze opgeslagen zijn met md5 zal je nooit hun wachtwoord kunnen terug geven.

Je zal ze enkel de mogelijkheid kunnen gegeven om een nieuw wachtwoord in te stellen.
Offline Simax - 04/09/2008 15:59
Avatar van Simax Onbekend Hoe is het wel mogelijk dan?
Offline Joost - 04/09/2008 16:02 (laatste wijziging 04/09/2008 16:02)
Avatar van Joost PHP expert Zoals hij zegt...

  1. $newpass = randomKey();
  2.  
  3. mysql_query("UPDATE `users` SET `wachtwoord`='".$newpass."' WHERE `username`='".$blabla."' LIMIT 1") or die(mysql_error());
  4.  
  5. mail($newpass);
Offline Ontani - 04/09/2008 16:03
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Door ze in plain text op te slaan in je database.
Maar dit wordt niet aangeraden omdat het gewoon niet veilig is.

Iemand krijgt toegang tot je website en heeft alle wachtwoorden van alle leden (Waarvan de meeste voor alle internetdiensten hetzelfde wachtwoord gebruiken).
Offline Simax - 04/09/2008 16:05
Avatar van Simax Onbekend @Medieval,
Op die manier kun je voor iedereen een nieuw wachtwoord aanmaken zodra je simpel weg zijn gebruikersnaam en email hebt..
Offline Joost - 04/09/2008 16:06
Avatar van Joost PHP expert Dan moet je eerst een mailtje sturen met een link, en dan vanaf die pagina 
Offline Simax - 04/09/2008 16:09
Avatar van Simax Onbekend Heb je misschien een voorbeeldje? Het zou fijn zijn als je mij een beetje op weg zou kunnen helpen..

En hoe zou ik een random wachtwoord kunnen genereren?
Offline Joost - 04/09/2008 16:16 (laatste wijziging 04/09/2008 16:16)
Avatar van Joost PHP expert
  1. function randomKey(){
  2. $code = md5(sha1(time()));
  3. $code = substr($code, 0, 10);
  4. $code .= rand(100000, 99999999999);
  5. $code = md5(sha1($code)));
  6. return substr($code, 0, 12);
  7. }


Dat is wel een oké random key generator.



Met het wachtwoord opvragen, maak je gewoon een tabelletje met username | code.
Daar zet je zon randomkey in met de username, en dan stuur je in een link naar diegene met zoiets als: http://domein.ext/getpassword.php?key=$code;
op getpassword.php kijk je bij welke username die key hoort, en of die key wel bestaat enz, , en dan genereer je opnieuw een key wat dan het wachtwoord word, en die mail je weer aan de username.
Offline Ontani - 04/09/2008 16:25
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Wat een onzin. Wat is er mis met md5(time()) ?
Offline Simax - 04/09/2008 16:27
Avatar van Simax Onbekend Het zou voor de klanten fijn zijn als ze geen nieuw wachtwoord krijgen, maar gewoon hun bestaande wachtwoord toegestuurd krijgen..

Is dit wel mogelijk ondanks deze zijn opgeslagen met md5?
Offline Ontani - 04/09/2008 16:30
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Nee
Offline Joost - 04/09/2008 16:33 (laatste wijziging 04/09/2008 16:34)
Avatar van Joost PHP expert
Ontani schreef:
Wat een onzin. Wat is er mis met md5(time()) ?

Wachtwoord van 40 tekens?
Als key voor in de URL kan die wel zo, maar ook niet wanneer er gelijktijdig wordt opgevraagd door meerdere mensen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.199s