Door
J C
op 02-02-2010 23:44
gewijzigd op 06-01-2016 20:06
13.071 views
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
Warning: Cannot modify header information - headers already sent by (output started at /home/jcsl/public_html/klanten/includes/wachtwoord_vergeten.php:82) 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:82) 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:82) 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:82) 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:82) in /home/jcsl/public_html/klanten/inlog/func.toegang.php on line 76
[quote='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.... :-)
[/quote]
Ok ^^, maar wel me eigen versie.
Heb er 15 minuutjes over gedaan, dus kunnen paar typo's inzitten. Maar ga daar niet vanuit.
[color=red]Let op[/color]: Code is niet getest.
[color=red]Let op[/color]: Lees de code door en pas het zodanig aan.
[color=red]Let op[/color]: Code kan je zelf nog verder uitbouwen met checks.
<?PHP
# Connectie met de database maken
# Zet hier ook je error_reporting(E_ALL) & ini_set('display_errors', 1) in
require_once '....';
# Error is false
$Error = false;
# Array voor de berichten
$Message = array();
# Kijken of er gepost wordt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
# Kijken of email leeg is
if(empty($_POST['email']))
{
# Geen email adres ingevuld
$Message[] = 'Vul A.U.B een email adres in.';
# Error is true
$Error = true;
}
# Kijken of het email adres geldig is
if(preg_match('/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/', $_POST['email']))
{
# Email adres is niet geldig
$Message[] = 'Vul A.U.B een geldig email adres in.';
# Error is true
$Error = true;
}
# Kijken of error false is
if($Error == false)
{
# Query uitvoeren
$Query =
"
SELECT
id,
email
FROM
gebruikers
WHERE
email = '".mysql_real_escape_string(trim($_POST['email']))."'
";
# Resultaat van de query
$Result = mysql_query($Query);
# Kijken of de query is gelukt
if(!$Result)
{
# Foutje in de query
$Message[] = 'Er is een fout opgetreden, fout is: '.mysql_error();
}
else
{
# Kijken of het email adres voorkomt
if(mysql_num_rows($Result) == 0)
{
# Email adres komt niet voor in de database
$Message[] = 'Dit email adres komt niet voor in onze database.';
}
else
{
# Rij fetchen
$Row = mysql_fetch_assoc($Result);
# Nieuw wachtwoord aanmaken
$Nieuw_ww = mt_srand((double)microtime()*100000);
while(strlen($Nieuw_ww) <= 6) # Aantal tekens/cijfers dat wordt gebruikt
{
$i = chr(mt_rand(0,255));
if(preg_match('/^[a-z0-9]$/', $i)) # Alleen letters en cijfers
{
$Nieuw_ww = $Nieuw_ww.$i;
}
}
# Query uitvoeren
$Query =
"
UPDATE
gebruikers
SET
wachtwoord = '".md5($Nieuw_ww)."'
WHERE
id = '".intval($Row['id'])."'
";
# Kijken of de query is gelukt
if(!$Result)
{
# Foutje in de query
$Message[] = 'Er is een fout opgetreden, fout is: '.mysql_error();
}
else
{
# Persoon waar het naartoe gestuurd moet worden
$Receiver = $Row['email'];
# Onderwerp van de mail
$Subject = 'Wachtwoord Reset';
# Headers die we meesturen met de mail
$Headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-Type: text/html; charset=ISO-8859-1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
'X-Priority: 1' . "\r\n" .
$Mail = '<h3>Wachtwoord Reset</h3>
<p>Beste '.$Row['email'].',</p>
<p>U wachtwoord is reeds gereset door: '.$_SERVER['REMOTE_ADDR'].'<br>U nieuwe wachtwoord: '.$Nieuw_ww.'<br/>
Komt u ip adres niet overeen met die in deze email, neem dan zo spoedig mogelijk contact met ons op.</p>
<p>Met vriendelijke groet,</p>
<p>Het Team !</p>';
# Kijken of de mail verstuurd wordt
if(mail($Receiver, $Subject, $Mail, $Headers))
{
# Mail succesvol verstuurd
$Message[] = 'U ontvangt binnen nu en 10 minuten uw nieuwe wachtwoord op het volgende adres: '.$_POST['email'];
}
else
{
# Fout met versturen email
$Message[] = 'Er is een fout opgetreden met het versturen van de mail, neem zo spoedig mogelijk contact met ons op.';
}
}
}
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Wachtwoord Vergeten</title>
</head>
<body>
<h3>Wachtwoord Vergeten</h3>
<?PHP
# Kijken of er berichten zijn
if(!empty($Message))
{
# Berichten laten zien
foreach($Message as $Msg)
{
echo $Msg.'<br/>';
}
}
?>
<form id="form1" name="form1" method="post" action="">
Email adres:
<input type="text" name="email" id="email" />
<input type="submit" name="button" id="button" value="Submit" />
</form>
</body>
</html>
Ik heb nu verschillende adressen gebruikt, maar geen enkel adres is een geldig emailadres.
fout gevonden. Zat het in:
<?php
if(preg_match('/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])*(\.([a-z0-9])([-a-z0-9_-])([a-z0-9])+)*$/i', $_POST['email']))
?>
Het wachtwoord wordt op dit moment nog niet aangepast in de database