password aanvragen
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!
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?
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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();
}
?>
// 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 :)
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
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!
onder andere naar wie hij meot en wat er in de mail meot komen te staan..
Kijk eens hier :
http://www.phphulp.nl/php/tutorials/4/148
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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]");
}
?>
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?
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
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!
mail("$_POST", "Uw nieuwe wachtwoord", $sleutel, "From: [email protected]");
In $_POST[email] moeten quotes komen -> $_POST['email'];
----------
Hier ook hetzelfde:
("SELECT id FROM user WHERE email = '$_POST[email]'");
Buiten haakjes halen en ook quotes om het woord 'email':
("SELECT id FROM user WHERE email = '" . $_POST['email'] . "'");
ik krijg nu juist errors !!
het mailen werkt allemaal alleen het password verstuurd die gecodeert op.. en daar kun je als je je ww bent vergeten niks mee