login  Naam:   Wachtwoord: 
Registreer je!
 Forum

MD5 probleem (Opgelost)

Offline ArcanA - 10/07/2009 02:43 (laatste wijziging 10/07/2009 02:45)
Avatar van ArcanAPHP beginner Hallo,

Ik zit met het volgend probleem.
Ik heb een wachtwoord vergeet scriptje gemaakt.
Een query laat alle gegevens van die gebruiker overeen komen door get gegevens etc...

Dan gaat hij een random cijfer aanmaken als wachtwoord, heb ook nog een functie voor uitgebreidere wachtwoorden aan te maken, maar omdat het script op zich niet werkt, hou ik het bij een gewoon cijfer. Ik zet het cijfer om in MD5 naar de database en echo het cijfer zodat de gebruiker weet wat zijn/haar nieuw wachtwoord is. Het probleem is dat ik ermee niet kan inloggen. Heb database gecontroleerd en daar verandert het, in MD5.

  1. <?php
  2. //als je op de link klikt in de mail voor je ww te veranderen
  3. if(isset($_GET['id'],$_GET['code']))
  4. {
  5. $id = $_GET['id'];
  6. $code = stripslashes(urldecode(stripslashes($_GET['code'])));
  7. $dbres = mysql_query("SELECT * FROM `wwaanvragen` WHERE `id`='$id' AND `code`='$code'");
  8.  
  9. if($data = mysql_fetch_assoc($dbres))
  10. {
  11. $nWW = rand(100000,900000);
  12. $nW = MD5($nWW);
  13. $query = "SELECT * FROM wwaanvragen WHERE id = '".$id."'";
  14. $naam = mysql_fetch_assoc(mysql_query($query));
  15.  
  16. mysql_query("UPDATE `gebruikers` SET `usr_pass`='{$nW}' WHERE `usr_login`='".$naam['login']."'");
  17. echo " <p>Je wachtwoord is succesvol gewijzigd.</p>
  18. <p>Je nieuwe wachtwoord is: <b>".$nWW."</b></p>
  19. ";
  20.  
  21. mysql_query("DELETE FROM `wwaanvragen` WHERE `id`='$id'");
  22. }
  23. //als de aangemaakte gegevens niet juist zijn in db
  24. else
  25. {
  26. echo "Er is iets mis gelopen. De link is mogelijk vervallen. Probeer opnieuw of neem contact op.";
  27. }
  28. }
  29. ?>



Alvast Bedankt,
Niels

3 antwoorden

Gesponsorde links
Offline Martijn - 10/07/2009 10:34
Avatar van Martijn Crew PHP is je databasekolom lang genoeg? daar heb ik ook wel eens naar gezocht 

verder zou je het even kunnen testen door zelf aan te vragen, dan te checken of
-de waarde die je dan echoed in je script hetzelfde is als je mailtje
-de stripslashes urldecode $_GET hetzelfde is als je hebt ingetypt
-die waarde in md5 hetzelfde is als md5 uit je database

En anders is t je script 
Offline Rik - 10/07/2009 10:39 (laatste wijziging 10/07/2009 10:39)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Kun je ook de code laten zien van hoe je controleert op geldige login?
Offline ArcanA - 10/07/2009 16:05 (laatste wijziging 10/07/2009 19:01)
Avatar van ArcanA PHP beginner Het veld van usr_pass is varchar(40)..
Heb de md5 echoed en de echo komt overeen met de database.


Login:
  1. <?php
  2. $aError = array ();
  3. $bError = false;
  4. if (isset ($_POST['login-submit']))
  5. {
  6. $sUser = $_POST['user'];
  7. $sPass = $_POST['pass'];
  8.  
  9. if (empty ($sUser))
  10. {
  11. $aError[] = "Oeps! Je bent vergeten je gebruikersnaam in te vullen.";
  12. $bError = true;
  13. }
  14. if (empty ($sPass))
  15. {
  16. $aError[] = "Oeps! Je bent vergeten je wachtwoord in te vullen.";
  17. $bError = true;
  18. }
  19.  
  20. if (!$bError)
  21. {
  22. $sQuery = "SELECT `usr_id` FROM `gebruikers` ";
  23. $sQuery .= "WHERE ";
  24. $sQuery .= " ( `usr_login` = '". mysql_real_escape_string ($sUser) ."' ";
  25. $sQuery .= " AND `usr_pass` = MD5(SHA1('". mysql_real_escape_string ($sPass) ."')) ";
  26. $sQuery .= " AND `usr_geactiveerd` = '1' ";
  27. $sQuery .= " )";
  28. $iResult = mysql_query ($sQuery, $iDB);
  29.  
  30. if (mysql_num_rows ($iResult) > 0)
  31. {
  32. // voor de Gegevens op te halen :)
  33. $aLogin = mysql_fetch_assoc ($iResult);
  34. $_SESSION['login'] = $aLogin['usr_id'];
  35.  
  36.  
  37. $sQuery = "UPDATE `gebruikers` ";
  38. $sQuery .= "SET `usr_laatst_ingelogd` = NOW() ";
  39. $sQuery .= "WHERE `usr_id` = '". $_SESSION['login'] ."'";
  40. mysql_query ($sQuery, $iDB);
  41. header("Location: spel/index.php");
  42. }
  43. else
  44. {
  45. $aError[] = "Sorry, de gegevens die je invulde zijn niet correct.";
  46. $bError = true;
  47. }
  48. }
  49. }
  50.  
  51. if ($bError)
  52. {
  53. $iCountError = count ($aError);
  54. print ("<br /><br /><h3>Inlogfout". (($iCountError > 1) ? "en" : "") ."</h3>");
  55. print ("\n<ul>");
  56. foreach ($aError as $sError)
  57. print ("\n <li>". $sError ."</li>");
  58. print ("\n</ul>\n");
  59. }
  60. ?>




Bij het registratie wachtwoord dat de gebruikers zelf kiezen in een POST kun je wel direct inloggen met het wachtwoord:

  1. <?php
  2.  
  3. $sQuery = "INSERT INTO `gebruikers`(`usr_login`,`usr_geld`,`usr_credits`,`usr_voornaam`,
  4. `usr_achternaam`,`usr_reg_datum`,`usr_geslacht`,`usr_land`,`usr_email`,`usr_pass`,
  5. `usr_geactiveerd`,`usr_bday_dag`,`usr_bday_maand`,`usr_bday_jaar`,`usr_ip`) ";
  6. $sQuery .= "VALUES(
  7. '". mysql_real_escape_string ($sLogin) ."',
  8. '". mysql_real_escape_string ($sGeld) ."',
  9. '". mysql_real_escape_string ($sCredits)."',
  10. '". mysql_real_escape_string ($sVoornaam) ."',
  11. '". mysql_real_escape_string ($sAchternaam) ."',
  12. NOW() ,
  13. '". mysql_real_escape_string ($sGeslacht) ."',
  14. '". mysql_real_escape_string ($sLand) ."',
  15. '". mysql_real_escape_string ($sEmail) ."',
  16. MD5(SHA1('". $sWachtwoord ."')) ,
  17. '". mysql_real_escape_string ($sRand) ."',
  18. '". mysql_real_escape_string ($sBday_dag) ."',
  19. '". mysql_real_escape_string ($sBday_maand) ."',
  20. '". mysql_real_escape_string ($sBday_jaar) ."',
  21. '".$ip."'
  22. )";
  23. mysql_query ($sQuery, $iDB);
  24. ?>




Edit: Het is opgelost! Ik heb die random voor een nieuw wachtwoord aan te maken vervangen door een functie die uitgebreidere wachtwoorden aanmaakt, nu lukt het wel.

Niels
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.205s