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
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()) )
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?
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
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:
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!
<?PHP
if ($_GET['id'] == $databaseID)
{
if ($_GET['code'] == $databaseCode)
{
// Toegang tot het beveiligde stukje code
# hier zal een formulier verscheinen waar je je wachtwoord
# opnieuw kan invullen, en op submit drukken!
}
}
?>
<?PHP
if($_GET['id']==$databaseID)
{
if($_GET['code']==$databaseCode)
{
// Toegang tot het beveiligde stukje code
# hier zal een formulier verscheinen waar je je wachtwoord
# opnieuw kan invullen, en op submit drukken!
}
}
?>
3: Gebruiker heeft op submit gedrukt
- Script zal het nieuwe wachtwoord hashen, en via een query gebruiker 32 zijn wachtwoord gewijzigd in je database.
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..
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.
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
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.