wie kan er mij helpen met een wachtwoord reset script? Ik krijg het niet voor elkaar om een script te vinden welke ik aan kan passen om een member zijn wachtwoord te laten resetten wanneer men deze vergeten is. Het hoeft geen script te zijn welke op basis van emial validatie is....alleen een "ter plaatse" reset is voldoende. Ik heb niet zo veel verstand van PHP dus graag enige uitleg zou erg helpen.
Hoe had je dat dan zelf gedacht zonder dat je iets naar de user mailt? Dan kan iedereen toch resetten.
dat wou ik illustreren in mijn verhaaltje SanThe :-)
Sab Kriksdeegir schreef op 15.07.2007 23:31
uhm...
stel je voor
ik ben een hacker :-))
en weet enkele mensen hun username...

ow wat zie ik daar... Wachtwoord vergeten *klik*
Geef op gebruikernaam : Admin
Geef op nieuw wachtwoord: netjesvandewebmaster
*Submit*

Uw nieuw wachtwoord is "netjesvandewebmaster"
je kan nu opnieuw inloggen...

Joepie kheb Admin gehackt :-/



Ach zo.....ja da's inderdaad niet zo handig. Tjonge...weer veel geleerd vandaag. ik zal je script even analyseren en kijken of ik er wat mee kan. Allen alvast bedankt voor de snelle reactie's en hulp!!!
Sab Kriksdeegir schreef op 15.07.2007 23:36
dat wou ik illustreren in mijn verhaaltje SanThe :-)

Ik had het ook niet tegen jou maar tegen de TS.
Goedeavond! Ik heb het een en ander aangepast in het script en tot zover werkt bijna alles naar behoren. Ik krijg een mooi mailtje met daarin de nieuw ww code alleen krijg ik 1 ding niet voor elkaar = ik krijg na het aanvragen van een nieuw ww d melding dat er een nieuw ww naar mijn mail is verstuurd en dat ik deze aan kan / moet passen in mijn profile.php. Tot zover dus goed alleen.....mijn zojuist aangemaakte ww wordt niet aangepast in mijn database. Deze blijf gewoon in zijn oude staat. Ik heb al diverse pogingen gedaan in het script maar ik krijg het niet voor elkaar dat de oude ww aangepast wordt in de database. Wat doe ik fout?

Hier mijn database gegevens:

id smallint(5) NOT NULL auto_increment,
username varchar(30) NOT NULL default '',
password varchar(32) NOT NULL default '',
name1 varchar(32) NOT NULL default '',
name2 varchar(32) NOT NULL default '',
email varchar(62) NOT NULL default '',
website varchar(250) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY username (username)

en hier de aangepaste forgot_pw.php

<?php
require("config.php");
require("functions.php");
$connect=mysql_connect("$server","$db_user","$db_pass");
$submit = $_POST[submit];


if (!empty($submit)) {

$email = $_POST[email];
$Check_Email = mysql_db_query("$database","select * from $table WHERE email='$email'");
$records = mysql_num_rows($Check_Email);

if ($records == 0) {
echo "Het ingevuld emailadres ($email) zit niet in onze database!<br>Gelieve het formulier opnieuw in te vullen";
exit;
}else{

$res = mysql_fetch_array($Check_Email);
$name = $res[name];
$id = $res[id];
$password = GeneratePassword(8);
$password_md5 = md5($password);
$subject = "Aanvraag van nieuw wachtwoord";
$message = "Beste,\nU heeft op de site http://www.abc.nl een nieuw wachtwoord aangevraagd.\nHieronder vindt u dit nieuwe wachtwoord, het is wel aan te raden dit nieuwe wachtwoord te wijzigen op de pagina : Mijn profiel\nUsername : " . $name . "\nPassword : " . $password;
$message = addslashes($message);
$message = $message . "\n\n\n--\nDeze email werd automatisch verzonden van de website http://www.abc.nl\nGelieve deze email niet te beantwoorden";
$headers = 'From: [email protected]' . "\r\n";
if (mail($email, $subject, $message, $headers)) {
$Update_Stats = mysql_db_query("$database","update admin set password='$password_md5' where id='$id'");
echo("Een nieuw wachtwoord werd naar het emailadres $email verzonden<br \>");

}else {
echo("<b><font color=\"red\">Het nieuwe wachtwoord werd niet naar het emailadres $email verzonden!<br>Aan te raden is om het formulier opnieuw in te vullen...</font></b><br \>");
}
}

}else{
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"5\">";
echo "<form method=\"POST\" action=\"forget_pw.php?titel=Wachtwoord vergeten...\">";
echo "<tr><td>Vul je emailadres in en klik op bevestigen om een nieuw wachtwoord te ontvangen in je mailbox</td></tr>";
echo "<tr><td>Emailadres:</td></tr>";
echo "<tr><td><input type=\"text\" name=\"email\"></td></tr>";
echo "<tr><td></td></tr>";
echo "<tr><td><input type=\"submit\" name=\"submit\" value=\"Bevestigen\"></td></tr>";
echo "</form>";
echo "</table>";

}
require("");
?>


En hier de bijhorende functions.php:

<?php
function GeneratePassword($chars) {
$acceptedChars = 'azertyuiopqsdfghjklmwxcvbn';
$max = strlen($acceptedChars)-1;
$password = null;
for($i=0; $i < $chars; $i++) {
$password = $password . $acceptedChars{mt_rand(0, $max)};
}
return($password);

}
?>


Ik denk dat de fout zit in de $password_md5 maar........??
adhome schreef op 16.07.2007 20:44
Goedeavond! Ik heb het een en ander aangepast in het script en tot zover werkt bijna alles naar behoren. Ik krijg een mooi mailtje met daarin de nieuw ww code alleen krijg ik 1 ding niet voor elkaar = ik krijg na het aanvragen van een nieuw ww d melding dat er een nieuw ww naar mijn mail is verstuurd en dat ik deze aan kan / moet passen in mijn profile.php. Tot zover dus goed alleen.....mijn zojuist aangemaakte ww wordt niet aangepast in mijn database. Deze blijf gewoon in zijn oude staat. Ik heb al diverse pogingen gedaan in het script maar ik krijg het niet voor elkaar dat de oude ww aangepast wordt in de database. Wat doe ik fout?

Hier mijn database gegevens:

id smallint(5) NOT NULL auto_increment,
username varchar(30) NOT NULL default '',
password varchar(32) NOT NULL default '',
name1 varchar(32) NOT NULL default '',
name2 varchar(32) NOT NULL default '',
email varchar(62) NOT NULL default '',
website varchar(250) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY username (username)

en hier de aangepaste forgot_pw.php

<?php
require("config.php");
require("functions.php");
$connect=mysql_connect("$server","$db_user","$db_pass");
$submit = $_POST[submit];


if (!empty($submit)) {

$email = $_POST[email];
$Check_Email = mysql_db_query("$database","select * from $table WHERE email='$email'");
$records = mysql_num_rows($Check_Email);

if ($records == 0) {
echo "Het ingevuld emailadres ($email) zit niet in onze database!<br>Gelieve het formulier opnieuw in te vullen";
exit;
}else{

$res = mysql_fetch_array($Check_Email);
$name = $res[name];
$id = $res[id];
$password = GeneratePassword(8);
$password_md5 = md5($password);
$subject = "Aanvraag van nieuw wachtwoord";
$message = "Beste,\nU heeft op de site http://www.abc.nl een nieuw wachtwoord aangevraagd.\nHieronder vindt u dit nieuwe wachtwoord, het is wel aan te raden dit nieuwe wachtwoord te wijzigen op de pagina : Mijn profiel\nUsername : " . $name . "\nPassword : " . $password;
$message = addslashes($message);
$message = $message . "\n\n\n--\nDeze email werd automatisch verzonden van de website http://www.abc.nl\nGelieve deze email niet te beantwoorden";
$headers = 'From: [email protected]' . "\r\n";
if (mail($email, $subject, $message, $headers)) {
$Update_Stats = mysql_db_query("$database","update admin set password='$password_md5' where id='$id'");
echo("Een nieuw wachtwoord werd naar het emailadres $email verzonden<br \>");

}else {
echo("<b><font color=\"red\">Het nieuwe wachtwoord werd niet naar het emailadres $email verzonden!<br>Aan te raden is om het formulier opnieuw in te vullen...</font></b><br \>");
}
}

}else{
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"5\">";
echo "<form method=\"POST\" action=\"forget_pw.php?titel=Wachtwoord vergeten...\">";
echo "<tr><td>Vul je emailadres in en klik op bevestigen om een nieuw wachtwoord te ontvangen in je mailbox</td></tr>";
echo "<tr><td>Emailadres:</td></tr>";
echo "<tr><td><input type=\"text\" name=\"email\"></td></tr>";
echo "<tr><td></td></tr>";
echo "<tr><td><input type=\"submit\" name=\"submit\" value=\"Bevestigen\"></td></tr>";
echo "</form>";
echo "</table>";

}
require("");
?>


En hier de bijhorende functions.php:

<?php
function GeneratePassword($chars) {
$acceptedChars = 'azertyuiopqsdfghjklmwxcvbn';
$max = strlen($acceptedChars)-1;
$password = null;
for($i=0; $i < $chars; $i++) {
$password = $password . $acceptedChars{mt_rand(0, $max)};
}
return($password);

}
?>


Ik denk dat de fout zit in de $password_md5 maar........??



Ik denk dat de fout zit in de $password_md5 maar........??



Ik heb het eindelkijk voor elkaar gekregen om mijn ww te laten resetten in mijn database alleen is de nieuwe ww geen 8 caracters lang maar 30 (nummers en letter door elkaar). Hierdoor kan ik niet inloggen met mijn zojuist per mail vestrekte nieuwe ww code.

Wat doe ik toch fout???

Hetgeen wat ik aan de code veranderd heb is de update:

oud:
$Update_Stats = mysql_db_query("$database","update admin set password='$password_md5' where id='$id'");

nieuw
$Update_Stats = mysql_db_query("$database","UPDATE $table SET password='$password_md5' WHERE id='$id'");

het is al opgelost! Ik had de update verwezen naar de password_md5. Deze heb ik aangepast naar $password en werkt het perfect.

Sab bedankt voor je code! zonder jou had ik waarschijnlijk nog lopen etteren.

Reageren