ww terugsturen

Status
Niet open voor verdere reacties.

karimbizid

Gebruiker
Lid geworden
19 dec 2006
Berichten
557
Hallo Allemaal,

Ik heb pas met een tutorial een ledensysteem in elkaar geflanst.
Nu wil ik daar iets aan toevoegen:
Ik wil functie wachtwoord vergeten toevoegen.

Ik heb in de my sql tabel o.a. "$username, $password en $email" staan.
Hoe kan ik nu met gegevens die ingevoerd worden ( $username ) andere gegevens ($password) naar $email laten sturen??

Alvast Bedankt :thumb: ,

Karim
 
Ten eerste, belangrijk om te weten: wordt het wachtwoord gecodeerd (met md5() of zo)?

Zo ja, dan is het wachtwoord niet op te vragen, maar moet er een nieuw random wachtwoord aangemaakt worden en dat die dan geë-maild wordt.
 
RE : ww terugsturen

Ja het wachtwoord wordt gecodeerd dmv md5.:confused:

Hoe krijg ik het dan voor elkaar om zo'n nieuw w8woord te laten genereren en te laten mailen??

Alvasy Bedankt :thumb:,

Karim
 
Je kunt ergens een formulier maken waar het e-mailadres ingevuld moet worden om het wachtwoord te vernieuwen:

PHP:
<form action="sendpassword.php" method="post">
E-mailadres: <input type="text" name="emailaddress" /><br />
<input type="submit" value="Verzenden" />
</form>

Dan moet er gecontroleerd worden of de e-mailadres in de database staat en welke gebruikersnaam erbij hoort. Daarnaast moet je even een extra tabel aanmaken waar tijdelijk de nieuwe wachtwoorden opgeslagen worden totdat ze geactiveerd worden, bijvoorbeeld met de volgende SQL-code:

Code:
CREATE TABLE `temporarypasswords` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`userid` INT NOT NULL ,
`password` VARCHAR( 32 ) NOT NULL ,
`activatecode` VARCHAR( 32 ) NOT NULL 
);

Dan hier de PHP-code om het wachtwoord op te sturen in sendpassword.php:
PHP:
<?php

if(isset($_POST["emailaddress"])){
	$result = mysql_query("SELECT id, username FROM users WHERE email = '" . $_POST["emailaddress"] . "'");
	if(mysql_num_rows($result) == 1){
		$data = mysql_fetch_object($result);
		$newpassword = substr(md5(mktime() . $data->username), 0, 6);
		$activatecode = md5($data->username . mktime());
		mysql_query("INSERT INTO temporarypasswords (userid, password, activatecode) VALUES ('" . $data->id . "', '" . md5($newpassword) . "', '" . $activatecode . "')");
		mail($_POST["emailaddress"], "Wachtwoord opvragen", "
Hallo,

Je hebt zojuist je wachtwoord opgevraagd. Hieronder staat je gebruikersnaam en je nieuwe wachtwoord. Je moet nog even op de link hieronder klikken om het nieuwe wachtwoord te activeren. Doe je dat niet, dan behoud je je oude wachtwoord. Negeer deze e-mail als je niet je wachtwoord hebt opgevraagd.

Klik hier om te activeren: http://www.[website].nl/activatepassword.php?userid=" . $data->id . "&activatecode=" . $activatecode . "

Gebruikersnaam: " . $data->username . "
Nieuwe wachtwoord: " . $newpassword . "
");
	} else {
		print "Het e-mailadres dat je invulde is niet gekoppeld aan een account. Vul a.u.b. een correct e-mailadres in. Klik <a href="javascipt:history.back()">hier</a> om terug te gaan.";
	};
};

?>

Nu moet je activatepassword.php nog maken:

PHP:
<?php

$activated = false;
if(isset($_GET["userid"], $_GET["activatecode"]) && is_numeric($_GET["userid"]) && strlen($_GET["activatecode"]) == 32){
	$result = mysql_query("SELECT password FROM temporarypasswords WHERE userid = '" . $_GET["userid"] . "' AND activatecode = '" . $_GET["activatecode"] . "'");
	if(mysql_num_rows($result) == 1){
		$data = mysql_fetch_object($result);
		mysql_query("UPDATE users SET password = '" . $data->password . "' WHERE id = '" . $_GET["userid"] . "'");
		print "Je nieuwe wachtwoord is geactiveerd, je kunt nu inloggen met je nieuwe wachtwoord.";
		$activated = true;
	};
};
if($activated){
	print "De activatiecode klopt niet.";
};

?>

Ik hoop dat het lukt. Succes! :thumb:
 
Dan moet er gecontroleerd worden of de e-mailadres in de database staat en welke gebruikersnaam erbij hoort.

Hoe doe ik dit? Ben nogal nieuw met PHP.

In ieder geval onwijs bedankt alvast:thumb:

Karim
 
Dat doe je zo:

PHP:
$result = mysql_query("SELECT id, username FROM users WHERE email = '" . $_POST["emailaddress"] . "'"); 
if(mysql_num_rows($result) == 1){ 
    // E-mailadres klopt
};

Maar dit staat gewoon in sendpassword.php hoor, kijk maar eens goed. ;) Je hoeft eigenlijk geen code meer zelf te schrijven, alles staat in mijn bovenstaande bericht. Als je iets niet snapt, zeg je het maar. :thumb:
 
Ben ik nog een keer:p :

In de pagina's (bijvoorbeeld de pagina die gaat kijken welke id bij het mailadres hoort) waar in de database moet worden gekeken.
Moet ik daar m'n config file niet includen??
 
Ja, je moet op elke pagina in ieder geval verbinding met je database hebben, dat zal ook wel in het configuratiebestand staan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan