Werkzaamheden:
Ik ben opzoek naar iemand die een script kan schrijven waarmee klanten hun wachtwoord kunnen opvragen.

Om een wachtwoord te kunnen opvragen heeft men het juiste emailadres nodig. Het emailadres is al bij ons bekend dus moet uit de db worden gehaald. Het wachtwoord moet worden verstuurd naar dat emailadres.

Het wachtwoord staat in de DB door middel van MD5.


Prijsopgave gevraagd Het gaat hier om een eenmalige opdracht
Dat is niet zo heel lastig te doen.


<?php

// Als het gaat om bevestigen van het mailtje
if($_GET['actie'] == "bevestigen")
{
	$activatiecode = sqlsafe($_GET['code']);
	$select_code = "SELECT * FROM `".$ledentabel."` WHERE `vergeetcode` = '".$activatiecode."'";
	$query_code = mysql_query($select_code) or die (mysql_error());
	$show_code = mysql_fetch_assoc($query_code);

	if(mysql_num_rows($query_code) == "0")
	{
		echo "<div style=\"color:red;\">U heeft een verkeerde activatiecode ingevuld, of uw heeft reeds een bevestiging gedaan!</div>";
	}
	else
	{
		// Email selecteren
		$res = mysql_query("SELECT * FROM `".$ledentabel."` WHERE `vergeetcode` = '".$activatiecode."'");
		$show = mysql_fetch_assoc($res);
					
		// Password maken
		$pass = randomcode(10);
					
		// Melding geven
		echo "Er is een mail met een nieuw wachtwoord gestuurd.";
					
		// Database updaten
		mysql_query("UPDATE `".$ledentabel."` SET `vergeetcode` = '', password = '".md5($pass)."' WHERE `vergeetcode` = '".$activatiecode."'");
										
		// Mail versturen
		$aan = $show['emailadres'];
		$onderwerp = "Nieuw wachtwoord";
		$bericht = "Beste,<br /><br />Via wachtwoord vergeten op ".$eigen_site." heeft u een nieuw wachtwoord aangevraagd.<br /><br /><strong>U kunt nu inloggen met het wachtwoord:</strong> ".$pass."<br /><br />Met vriendelijke groet,<br /><br />".$eigen_naam;
		$headers = "MIME-Version: 1.0\r\n";
		$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
		$headers .= "From: ".$eigen_naam." <".$eigen_mail.">\r\n";
		mail($aan, $onderwerp, $bericht, $headers); 
	}
}
else
{

	if(($_SERVER['REQUEST_METHOD'] == "POST") && ($_POST['vergeten'])) 
	{
		$que = mysql_query("SELECT * FROM `".$ledentabel."` WHERE emailadres = '".sqlsafe($_POST['emailadres'])."'");
					
		if(mysql_num_rows($que) == 0)
		{
			echo "<p>Het ingevuld emailadres is niet geldig of staat niet in de database!</p>";
		}
		else
		{
			// Code
			$activatiecode = randomcode(10);
						
			// Melding
			echo "<p>Er is een bevestigingsmail naar je e-mailadres gestuurd.</p>";
					
			// Database updaten dus code inserten
			mysql_query("UPDATE `".$ledentabel."` SET `vergeetcode` = '".$activatiecode."' WHERE `emailadres` = '".sqlsafe($_POST['emailadres'])."'");
					
			// Mail versturen
			$aan = sqlsafe($_POST['emailadres']);
			$onderwerp = "Wachtwoord vergeten";
			$bericht = "Beste,<br /><br />Via de website ".$eigen_site." is aangegeven dat u uw wachtwoord vergeten bent.<br /><br />Wanneer dit het geval is, dient u op onderstaande link te klikken. Wanneer dit niet zo is, kunt u deze mail als niet verzonden beschouwen.<br /><br />Link: <a href=\"".$eigen_url."addons/wachtwoordvergeten.php?actie=bevestigen&code=".$activatiecode."\">".$eigen_url."addons/wachtwoordvergeten.php?actie=bevestigen&code=".$activatiecode."</a><br /><br />Met vriendelijke groet,<br /><br />".$eigen_naam;
			$headers = "MIME-Version: 1.0\r\n";
			$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
			$headers .= "From: ".$eigen_naam." <".$eigen_mail.">\r\n";
			mail($aan, $onderwerp, $bericht, $headers); 
		}
	}
	else
	{
		echo "<p>Vul hieronder uw emailadres in. Er zal een link naar je emailadres gestuurd worden. Wanneer u hier op klikt wordt er een nieuw wachtwoord aangemaakt.</p><br />";
		echo "<p><form method=\"post\" action=\"\">E-mailadres:&nbsp;&nbsp;<input type=\"text\" name=\"emailadres\" /><br /><br /><input type=\"submit\" name=\"vergeten\" value=\"Verstuur\" /></form></p>";				
	}
}
?>


Script komt overigens uit MultiSess 'add-ons' overzicht en moet nog ligt worden bijgeschaafd...
En de credits gaan naar M.Poelman
Wauw dat is snel, heel erg bedankt, ik ga er eens mee stoeien.
Ik heb dit bovenin het ebstand gezet:
<?php
$ledentabel = "kl_overzicht";
$eigen_site = "www.jcsl.nl/klanten";
$eigen_naam = "J.S. Coolen";
$eigen_mail = "[email protected]";
?>

En waar nodig de QRY aangepast.

Ik krijg nu als foutmelding:
Fatal error: Call to undefined function sqlsafe() in /home/jcsl/public_html/klanten/includes/wachtwoord_vergeten.php on line 51

regel 50 t/m 52:
<?php
{
$que = mysql_query("SELECT * FROM `".$ledentabel."` WHERE kl_overzicht_email = '".sqlsafe($_POST['emailadres'])."'");

?>
Daarom zeg ik ook: Zelf even bijschaven.
het script gebruikt een functie sqlsafe() die gelijk staat aan mysql_real_escape_string()
Kan je net zo goed even opnieuw scripten, dit lijkt natuurlijk nergens op.
@AAR
Dus ik moet een functie maken waarin ik aangeef dat sqlsafe() gelijk is aan
mysql_real_escape_string() ?

@ Mr.Ark
Ik ben blij met wat ik aangeboden krijg. Ik vind het zelf nog een beetje te moeilijk.

Ik heb ook nog een probleem met het script
Warning: Cannot modify header information - headers already sent by (output started at /home/jcsl/public_html/klanten/includes/wachtwoord_vergeten.php:85) in /home/jcsl/public_html/klanten/inlog/func.toegang.php on line 72

Warning: Cannot modify header information - headers already sent by (output started at /home/jcsl/public_html/klanten/includes/wachtwoord_vergeten.php:85) in /home/jcsl/public_html/klanten/inlog/func.toegang.php on line 73

Warning: Cannot modify header information - headers already sent by (output started at /home/jcsl/public_html/klanten/includes/wachtwoord_vergeten.php:85) in /home/jcsl/public_html/klanten/inlog/func.toegang.php on line 74

Warning: Cannot modify header information - headers already sent by (output started at /home/jcsl/public_html/klanten/includes/wachtwoord_vergeten.php:85) in /home/jcsl/public_html/klanten/inlog/func.toegang.php on line 75

Warning: Cannot modify header information - headers already sent by (output started at /home/jcsl/public_html/klanten/includes/wachtwoord_vergeten.php:85) in /home/jcsl/public_html/klanten/inlog/func.toegang.php on line 76

72 t/m 76 (func.toegang
<?php
setcookie ("SKL_id", 0, $time, "/");
setcookie ("SKL_klnr", 0, $time, "/");
setcookie ("SKL_pass", 0, $time, "/");
setcookie ("SKL_key", 0, $time, "/");
setcookie ("SKL_time", 0, $time, "/");
?>

Dit is het script zover:

<?php

$ledentabel = "kl_overzicht";
$eigen_site = "www.jcsl.nl/klanten";
$eigen_naam = "J.S. Coolen";
$eigen_mail = "[email protected]";
$eigen_url = "http://www.jcsl.nl/klanten/index.php";;


// Als het gaat om bevestigen van het mailtje
if($_GET['actie'] == "bevestigen")
{
$activatiecode = sqlsafe($_GET['code']);
$select_code = "SELECT * FROM `".$ledentabel."` WHERE `kl_overzicht_vergeetcode` = '".$activatiecode."'";
$query_code = mysql_query($select_code) or die (mysql_error());
$show_code = mysql_fetch_assoc($query_code);

if(mysql_num_rows($query_code) == "0")
{
$main .= "<div style=\"color:red;\">U heeft een verkeerde activatiecode ingevuld, of uw heeft reeds een bevestiging gedaan!</div>";
}
else
{
// Email selecteren
$res = mysql_query("SELECT * FROM `".$ledentabel."` WHERE `kl_overzicht_vergeetcode` = '".$activatiecode."'");
$show = mysql_fetch_assoc($res);

// Password maken
$pass = randomcode(10);

// Melding geven
$main .= "Er is een mail met een nieuw wachtwoord gestuurd.";

// Database updaten
mysql_query("UPDATE `".$ledentabel."` SET `kl_overzicht_vergeetcode` = '', kl_overzicht_password = '".md5($pass)."' WHERE `kl_overzicht_vergeetcode` = '".$activatiecode."'");

// Mail versturen
$aan = $show['emailadres'];
$onderwerp = "Nieuw wachtwoord";
$bericht = "Beste,<br /><br />Via wachtwoord vergeten op ".$eigen_site." heeft u een nieuw wachtwoord aangevraagd.<br /><br /><strong>U kunt nu inloggen met het wachtwoord:</strong> ".$pass."<br /><br />Met vriendelijke groet,<br /><br />".$eigen_naam;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ".$eigen_naam." <".$eigen_mail.">\r\n";
mail($aan, $onderwerp, $bericht, $headers);
}
}
else
{

if(($_SERVER['REQUEST_METHOD'] == "POST") && ($_POST['vergeten']))
{
$que = mysql_query("SELECT * FROM `".$ledentabel."` WHERE kl_overzicht_email = '".sqlsafe($_POST['emailadres'])."'");

if(mysql_num_rows($que) == 0)
{
$main .= "<p>Het ingevuld emailadres is niet geldig of staat niet in de database!</p>";
}
else
{
// Code
$activatiecode = randomcode(10);

// Melding
$main .= "<p>Er is een bevestigingsmail naar je e-mailadres gestuurd.</p>";

// Database updaten dus code inserten
mysql_query("UPDATE `".$ledentabel."` SET `kl_overzicht_vergeetcode` = '".$activatiecode."' WHERE `emailadres` = '".sqlsafe($_POST['emailadres'])."'");

// Mail versturen
$aan = sqlsafe($_POST['emailadres']);
$onderwerp = "Wachtwoord vergeten";
$bericht = "Beste,<br /><br />Via de website ".$eigen_site." is aangegeven dat u uw wachtwoord vergeten bent.<br /><br />Wanneer dit het geval is, dient u op onderstaande link te klikken. Wanneer dit niet zo is, kunt u deze mail als niet verzonden beschouwen.<br /><br />Link: <a href=\"".$eigen_url."klantenpagnia=ww_vergeten&actie=bevestigen&code=".$activatiecode."\">".$eigen_url."klantenpagnia=ww_vergeten&actie=bevestigen&code=".$activatiecode."</a><br /><br />Met vriendelijke groet,<br /><br />".$eigen_naam;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ".$eigen_naam." <".$eigen_mail.">\r\n";
mail($aan, $onderwerp, $bericht, $headers);
}
}
else
{
$main .= "<p>Vul hieronder uw emailadres in. Er zal een link naar je emailadres gestuurd worden. Wanneer u hier op klikt wordt er een nieuw wachtwoord aangemaakt.</p><br />";
$main .= "<p><form method=\"post\" action=\"\">E-mailadres:&nbsp;&nbsp;<input type=\"text\" name=\"emailadres\" /><br /><br /><input type=\"submit\" name=\"vergeten\" value=\"Verstuur\" /></form></p>";
}
}
?>
Mr.Ark schreef op 03.02.2010 00:27
Kan je net zo goed even opnieuw scripten, dit lijkt natuurlijk nergens op.

Be my guest.... :-)

@ J.S Coolen:
Je kan oof sqlsafe() hernoemen naar mysql_real_escape_string().
Die errors komen waarschijnlik omdat er HTML of whitespace voor of na je wachtwoordvergeten.php-script staan.
Soms helpt het om het even opnieuw op te slaan met notepad (vanwege de B-O-M).

Hm, kutbump hier :/
Bedankt.

Ik ben nu al een heel stuk verder.

Ik kan de mail versturen en hij komt ook aan,
Alleen als ik de link aanklik geeft hij aan dat de code fout is. eens kijken hoe dat komt.

Ik snap de header foutmelding al want ik include dit bestand in deze index.php.

Waarbij het script in de main komt.

http://www.jcsl.nl/klanten/index.txt (indexscript)
Even een goede tip. Sla NOOIT passwoorden op in een cookie. Dat doe je namelijk in jouw eigen login-systeem.

Reageren