Ik heb een member systeempje maar ik wil als mensen hun wachtwoord zijn vergeten dat ze dan hun email in kunnen voeren dat ze wachtwoord krijgen toegestuurd.

dus die herkend het email adres en bijpassende w8woord uit de MySQL database, en stuurt het naar dat email adres! Als dat email adres niet bestaat gebeurd er nix.. ( wel een error melding, dit account bestaat niet.. blabla! )

maar nu beetje het probleem het wachtwoord is encrypted ( in database ).. dus misschien is het beter om dan een nieuw wachtwoord toe te sturen zou iemand mij hierbij kunnen helpen?!

thanks!
Je laat de gebruiker opzoeken in de database,
als deze bestaat zijn emailadres opzoeken,
als deze niet bestaat niets doen.

Deze gebruiker bestaat ->
veld : 'paswoord' (of hoe het ook noemt bij u) vervangen door een nieuw, een willekeurig woord, en hem dan mailen met het nieuwe wachtwoord.

Vrij simpel toch?
@Rafael
Dit gaat natuurlijk niet helemaal werken, omdat de TS al zegt dat het wachtwoord encrypted opgeslagen is.

Oplossing:
Mak een extra kolom aan in de tabel met de gebruikers. Noem deze 'sleutel' of iets dergelijks. Maak een pagina waar men een e-mailadres invoerd. Post het naar een script dat zoiets is:

<?php
// MySQL Connectie

// Kijken of gebruiker bestaat
$query = mysql_query("SELECT id FROM gebruikers WHERE email = '$_POST[email]'");

$num = mysql_num_rows($query);

if (empty($num))
{
// De gebruiker bestaat niet, geef een melding
} else {
// De gebruiker bestaat wel. Genereer een sleutel.
$result = mysql_fetch_row($query);

$sleutel = md5("vergeten".$id."password"); // Of maak er wat anders leuks van...

// Zet de sleutel bij de gebruiker in de DB
mysql_query("UPDATE gebruikers SET sleutel = '$sleutel' WHERE id = '$result[0]'");

// Mail de gebruiker een mooi verhaal inclusief een 'unlock' adres. Dat wil zeggen een URL waar de sleutel in zit.
mail();
}
?>

Vervolgens moet je een pagina maken waar de sleutel via een $_GET[] binnen komt en kijkt of die in de DB staat. Zo ja, geef je een mogenlijkheid om een nieuw wachtwoord in te voeren, die je dan weer encrypted in je DB zet. Zo nee, dan zeg je dat de sleutel niet geldig is.

Elwin
Sorry... Ik dacht dat het zo ook zou gegaan hebben... Sorry voor de verkeerde info dan :)
Heel erg bedankt alvast, ik snap er nog niet zo veel van, maar de 1e 2 gedeeltes heb ik wel OK gedaan ...

alleen het mail() gedeelte
en dan die $_GET[] functie pagina heb ik niet
dat laatste volg ik ook niet helemaal..

ben ook nog maar een php noobje
als ik een niet bestaand email adres invul geeft
die dus goed weer dat die niet bestaat!

maar zodra ik een bestaand email adres uit de DB
invul krijg ik deze error:

Warning: mail() expects at least 3 parameters, 0 given in /home/sites/1602/http/passwordrequest.php on line 22

dat is wel duidelijk omdat ik natuurlijk niet snap wat ik bij die mail() functie moet doen!
Jup het werkt tot nu toe wel.. het mailen enzo
ook word er de $sleutel gemailt, maar de DB
word helemaal niet geupdate :S
en ik verstuur nu een encrypted ww op :S

Dit heb ik nu:

<?php
include("db.php");

$query = mysql_query("SELECT id FROM user WHERE email = '$_POST[email]'");
$num = mysql_num_rows($query);

if (empty($num))
{
echo "Dit email adres bestaat niet!";
} else {

$result = mysql_fetch_row($query);

$sleutel = md5("vergeten".$id."password");

mysql_query("UPDATE user SET sleutel = '$sleutel' WHERE id = '$result[0]'");

mail("$_POST[email]", "Uw nieuwe wachtwoord", $sleutel,
"From: [email protected]");

}
?>

en moet er niet de table password geupdate worden ipv sleutel?

sowieso geen table password maar field password ipv sleutel ;)

Wat gebruik je als encrypted? password() of md5()?
bij registratie gebruik ik password('password') en sla ik ook zo op in het veld password in de DB
haha LOL idd... sorrie ;)

Bij de passwords creƫren word er password()
gebruikt om de wachtwoorden op te slaan.
maar ik ben er dus nog niet achter hoe ik me wachtwoorden kan toemailen!

Reageren