Beste,
Ik heb een wachtwoordvergeten script, alles werkt ik krijg email met nieuwe wachtwoord, alleen probleem is dat het wachtwoord niet klopt als ik wil inloggen,
Als ik het op een website met een sha1 converter doe dan kan ik wel inloggen, alleen als ik in de database kijk, is de string anders dan als ik op die website kijk..
Wat gaat er fout?
wachtwoordvergeten.php
PHP
<?php
require_once("includes/inc.config.php");
require_once("includes/inc.genpass.php");
require_once("includes/inc.salt.php");
if(isset($_POST['submit']))
{
$email = $_POST['email'];
$login = $_POST['username'];
$sql = mysql_query("SELECT username, email, id FROM `klanten` WHERE `username` ='".SqlInc($login)."' AND `email`='".SqlInc($email)."' AND `verwijderd` = 'Nee' LIMIT 1") or die(mysql_error());
if(mysql_num_rows($sql) == 0)
{
echo'Er is geen combinatie gevonden van de gebruikersnaam en het e-mailadres!';
}
else
{
$res = mysql_fetch_assoc($sql);
$a = mysql_query("SELECT `id` FROM `klanten_wwvergeten` WHERE `klant_id` =".$res['id']." LIMIT 1") or die(mysql_error());
if(mysql_num_rows($a) > 0)
{
echo'Je hebt het afgelopen half uur al je wachtwoord opgevraagd!<br>Probeer het later weer!';
}
else {
echo'De link met de code is naar je email verstuurd!';
$key = substr(md5(sha1(mt_rand(100, 10009192).date("d-m-Y H:i:s"))), 0, 10);
mysql_query("INSERT INTO `klanten_wwvergeten`(`klant_id`, `code`, `time`) VALUES (".$res['id'].", '".$key."', ".time().")") or die(mysql_error());
$link = url.'wachtwoordvergeten.php?code='.$key;
$headers = 'Van: |UGS|_Hosting<[email protected]>' . "\r\n";
$subj = "Wachtwoord Opgevraagd (|UGS|_Hosting)";
$bericht = '
Beste '.$login.',
Er is aanvraag gedaan voor een nieuw wachtwoord op dit account.
Dit is dan ook nog niet geactiveerd heb jij deze mail niet aangevraagd, negeer hem dan gewoon.
heb je toch je wachtwoord opgevraagd klik dan op de onderstaande link.
Werkt deze link niet? Kopieer dan de volgende link naar je adresbalk:
'.$link.'
Met Vriendelijke Groet,
|UGS|_Hosting';
mail($email, $subj, $bericht, $headers);
}
}
}
if(isset($_GET['code']))
{
$sql = mysql_query("SELECT `klant_id` FROM `klanten_wwvergeten` WHERE `code`='".SqlInc($_GET['code'])."' LIMIT 1") or die(mysql_error());
if(mysql_num_rows($sql) == 0)
{
echo'Er is geen wachtwoord opgevraagd onder deze code!';
}
else
{
$res = mysql_fetch_assoc($sql);
$em = mysql_query("SELECT email, username FROM klanten WHERE id = '".$res['klant_id']."'") or die(mysql_error());
$em = mysql_fetch_assoc($em);
$pass = new rndPass(8);
$pass = $pass->PassGen();
mysql_query("UPDATE klanten SET password= '".MaakHash($pass)."' WHERE id = '".$res['klant_id']."'");
mysql_query("DELETE FROM klanten_wwvergeten WHERE klant_id = '".$res['klant_id']."'") or die(mysql_error());
$headers = 'Van: |UGS|_Hosting<[email protected]>' . "\r\n";
$subj = "Wachtwoord Opgevraagd (|UGS|_Hosting)";
$bericht = '
Beste '.$em['username'].',
Er is aanvraag gedaan voor een nieuw wachtwoord op dit account.
Hieronder vindt je de nieuwe gegevens:
Gebruikersnaam: '.$em['username'].'
Wachtwoord: '.$pass.'
Met Vriendelijke Groet,
|UGS|_Hosting';
mail($em['email'], $subj, $bericht, $headers);
echo'Er is een email gestuurd met je nieuw wachtwoord.';
}
}
?>
<form method='post'>
<table border='0' style='margin-top: 5px;'>
<tr class='TBclass'>
<td colspan="2">
<b>Wachtwoord opvragen</b>
</td>
</tr>
<tr class='TBclass'>
<td>
Gebruikersnaam:
</td>
<td style='width: 120px;'>
<input type='text' name='username' maxlength='25' value='' class='veld' />
</td>
</tr>
<tr class='TBclass'>
<td>
E-mailadres:
</td>
<td style='width: 120px;'>
<input type='text' name='email' class='veld' />
</td>
</tr>
<tr class='TBclass'>
<td colspan='2' style='text-align: right; padding-top: 5px;'>
<input type='submit' name='submit' value='Opvragen!' class='button2'/>
</td>
</tr>
</table>
</form>
Toon Meer
inc.salt.php
PHP
<?php
define('SALT_LENGTH', 32);
function MaakHash($plainText, $salt = null)
{
if ($salt === null)
{
$salt = substr(sha1(uniqid(rand(), true)), 0, SALT_LENGTH);
}
else
{
$salt = substr($salt, 0, SALT_LENGTH);
}
return $salt . sha1($salt . $plainText);
}
?>
Toon Meer
inc.genpass.php
PHP
<?
class rndPass
{
var $chars;
var $PasswordLength;
function rndPass($passLen)
{
$this->chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstufwxyz0123456789";
$this->PasswordLength = $passLen;
}
function PassGen()
{
if($this->PasswordLength > 4)
{
$i = 0;
$password = "";
while (strlen($password) < $this->PasswordLength)
{
mt_getrandmax();
$num = rand() % strlen($this->chars);
$tmp = $this->chars[$num];
$password = $password . $tmp;
$tmp = "";
}
return $password;
}
}
}
?>
Toon Meer
wachtwoord dat ik krijg via de mail is: Wachtwoord: y7IPoB0i
als ik in de database kijk is de hash: ec26861701655effffd96f09eecd5266ff238161c0755fe2b9a1ba039657f4cc9a707d52
en op die website: c55524a0fb1d7106776e756b28446dc242d422a0
Met vriendelijke groet,
Mick