login  Naam:   Wachtwoord: 
Registreer je!
 Forum

wachtwoord vergeten

Offline kickasgamer - 22/02/2007 21:49
Avatar van kickasgamerPHP ver gevorderde Ik heb mijn ledensysteem voledig werkend gekregen, maar nu wil ik het gaan uit breiden. Nu met een wachtwoord vergeten functie, maar ik weet niet goed hoe ik er aan moet beginnen want ik heb namelijk de passwoorden sha1(md5()) opgeslagen in de DB, en kan ik dus niet zomaar het paswoord toesturen

maar hoe dan wel, alle tips en hulp is welkom 

alvast bedankt

16 antwoorden

Gesponsorde links
Offline vinTage - 22/02/2007 21:54
Avatar van vinTage Nieuw lid Je moet het email adres wat er gebruikt werd om te registreren gebruiken om een mail te sturen met daarin een NIEUW wachtwoord, dit moet dan natuurlijk wel in de ledentabel worden geupdate (ja ook met sha1(md5()) )
Offline Nrzonline - 22/02/2007 21:55 (laatste wijziging 22/02/2007 21:57)
Avatar van Nrzonline PHP ver gevorderde Zodra een gebruiker zijn wachtwoord is vergeten, laat je hem naar
een pagina gaan waar hij zijn e-mail adres kan invullen of zijn gebruikersnaam waar hij zich mee heeft geregistreerd.

Dan wordt er een gegenereerde code in je database geplaatst voor een bepaalde tijd (max 1 uur o.i.d) en een e-mail met deze code naar
hem toe gestuurd. Nu kan hij via deze code de reset pagina bezoeken
die is beveiligd met deze code. Laat hem hier een nieuwe wachtwoord aanmaken en updaten in je database.

@vintage:
Kan ook, maar zorg er dan wel voor dat hij dit eerst via zijn e-mail (waar hij zich mee heeft geregistreerd) laat bevestigen. Anders kan een grappenmaker zijn e-mail invullen, en krijgt hij meteen een nieuw wachtwoord zonder dat te willen? 
Offline kickasgamer - 22/02/2007 22:11
Avatar van kickasgamer PHP ver gevorderde maar hoe genereer ik zo'n code ?
Offline Gerard - 22/02/2007 22:12
Avatar van Gerard Ouwe rakker Zo'n code kan gewoon random zijn. Je zou dus een MD5 hash kunnen pakken van de time() of van een rand()om nummer.
Offline kickasgamer - 22/02/2007 22:15
Avatar van kickasgamer PHP ver gevorderde dus ik maak een pagina aan waar de gebruiker zijn gebruikersnaam en email invult, als deze kloppen dan stuurt het script een code (of wel met time() of rand() of... en md5() gehashed) in de email staat ook een link naar een bestand

maar dan ik kan de gebruiker niet toelaten op een cp want hij kan niet inloggen op zijn account want hij is ook zijn pass vergeten 
Offline Nrzonline - 22/02/2007 22:33 (laatste wijziging 22/02/2007 22:36)
Avatar van Nrzonline PHP ver gevorderde Stappenplan voorbeeld met uitleg

1: Gebruiker vergeet zijn wachtwoord, en bezoekt een pagina waar hij een wachtwoord verandering kan aanvragen
- Op deze pagina moet hij zijn gebruikersnaam of zijn e-mail adres invullen. De pagina zal met een code generator een code genereren.
Laten we een voorbeeld code nemen: "ABC123" is zijn code.
- Zijn gegenereerde code wordt in je database (Table heet ww-reset), samen met zijn gebruikers-ID nummer. Als gebruikerID nemen we even "32". Het tabel zou naar zijn aanvraag er zo uit zien:
  1. +----------+
  2. | ww_reset |
  3. +----------+--+--------+
  4. | gebruikerID | code |
  5. +-------------+--------+
  6. | 32 | ABC123 |
  7. +-------------+--------+

- Het script stuur een e-mail met de volgende url:
http://jouwsite...ode=ABC123

2: De gebruiker ontvang het e-mailtje en klikt op de link
- Het script zal via een (beveiligde) $_GET['id'] en $_GET['code'] de gebruiker zijn ID en de bijbehorende code ophalen. (Mocht degene die een reset heeft aangevraagd niet de eigenaar zijn van dat account, is hij dus ook niet de eigenaar van het bijbehoorende e-mail. De echte eigenaar zal het e-mailtje ontvangen, en kunnen negeren)
- Het script zal ze vergelijken in je database. Hij kijkt of gebruiker 32 een aanvraag heeft gedaan. Ja! Maar klopt de code ook? Ja!

  1. <?PHP
  2. if ($_GET['id'] == $databaseID)
  3. {
  4. if ($_GET['code'] == $databaseCode)
  5. {
  6. // Toegang tot het beveiligde stukje code
  7. # hier zal een formulier verscheinen waar je je wachtwoord
  8. # opnieuw kan invullen, en op submit drukken!
  9. }
  10. }
  11. ?>


3: Gebruiker heeft op submit gedrukt
- Script zal het nieuwe wachtwoord hashen, en via een query gebruiker 32 zijn wachtwoord gewijzigd in je database.
Offline nielsvdwal - 22/02/2007 22:35
Avatar van nielsvdwal PHP gevorderde dan maak je een pagina dat dat wel kan he.. gewoon een pagina maken.. waar hij gebruikersnaam in moet vullen.. en de code.. en klopt het.. dan kan ie wachtwoord veranderen..
Offline Nrzonline - 22/02/2007 22:36 (laatste wijziging 22/02/2007 22:37)
Avatar van Nrzonline PHP ver gevorderde nielsvdwal, via de $_GET[''] is het 10 keer gebruikersvriendelijker Hoeft hij niets meer in te typen, enkel op de link te klikken en zijn wachtwoord wijzigen.
Offline kickasgamer - 22/02/2007 22:37 (laatste wijziging 23/02/2007 17:57)
Avatar van kickasgamer PHP ver gevorderde ah bedankt 

ik ga er straks aan beginnen, ik laat jullie wel iets weten als het lukt of er fouten zijn

maar verder tips en hulp is steeds welkom 

EDIT: Ik heb nu dit als wwvergeten: http://www.plaatscode.be/4354/

en deze werkt gewoon

dit het ik als wwreset: http://www.plaatscode.be/4352/
en daar heb ik deze error:
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /customers/******/******/httpd.www/kickasgamer/php/leden/wwreset.php on line 42

wat doe ik fout ?
Offline Gerard - 23/02/2007 19:47
Avatar van Gerard Ouwe rakker Kijk eens goed naar regel 41 dan. Ook de kleuren geven al aan wat er mis is.

Tip: Een string is roodgekleurd, niet zwart.
Offline kickasgamer - 23/02/2007 20:47
Avatar van kickasgamer PHP ver gevorderde ja ik heb het aan gepast, maar nu heb ik het probleem als ik mijn passwoord komt er te staan u heeft geen directe toegang tot deze pagina

http://www.plaatscode.be/4358/
Offline Nrzonline - 24/02/2007 00:28 (laatste wijziging 24/02/2007 00:38)
Avatar van Nrzonline PHP ver gevorderde Test even wat de inhoud van $id en $code is na de submit:
  1. <?PHP
  2. echo "De wachtwoorden zijn verschillend.";
  3. }else{
  4. die ($id . " - " . $code);
  5. }
  6. ?>


Mocht $id en $code geen inhoud bevatten, probeer dan is sessions te gebruiken voor $id en $code.
Offline Gerard - 24/02/2007 00:31
Avatar van Gerard Ouwe rakker
Citaat:
if(!isset($id) && !isset($code))


Ook al zoiets, wanneer $id en $code geen inhoud bevatten dan is het niet geldig. Het lijkt me beter dat hier is wanneer $id of $code geen inhoud bevatten dat het dan niet geldig is.

Daarnaast kan je beter gewoon met de $_GET variabelen blijven werken. Je voert helemaal geen bewerkingen uit op de variabelen en dus is het niet nodig ze om te zetten naar $id en $code.
Offline kickasgamer - 24/02/2007 13:44
Avatar van kickasgamer PHP ver gevorderde ja maar id en code moeten er zijn want je haalt ze uit de url en als ze er niet zijn krijg je een error
Offline Godlord - 24/02/2007 15:20 (laatste wijziging 24/02/2007 15:20)
Avatar van Godlord PHP gevorderde
  1. echo 'Uw wachtwoord is gewijzigd, u kan <a href="login.php">hier</a> inloggen.';


Edit:
  1. if(!isset($id) || !isset($code))
Offline Gerard - 24/02/2007 18:07
Avatar van Gerard Ouwe rakker
Citaat:
ja maar id en code moeten er zijn want je haalt ze uit de url en als ze er niet zijn krijg je een error

Ja, doh. Maar je benaderd het van de verkeerde kant maatje. Als ik in tekst omzet hoe het er nu staat:

Wanneer $id niet geset is en en $code niet geset is dan tonen we een error.

En wat nu als ik $id wel set maar $code niet? Dan voldoet dat if-statement niet (wordt dus niet true) en denkt het script dat het in orde is.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.235s