Hallo Community,
ich habe ein "Passwort vergessen" skript, was ich gern um ein Sicherheitsfeature erweitern würde. Im Moment muss der User nur seine Email Adresse eintragen, und schon wird ein neues Passwort generiert, in die DB geschrieben und per Email verschickt.
Ich denke es wäre besser wenn ich per email einen link verschicke, der erst nach dem anklicken das neue in der email mitgesendete passwort generiert und in die DB schreibt.
Oder sendet man danach nochmal eine email mit dem passwort? Ich denke es hat sich sicher schonmal jemand den Kopf zerbrochen, wie man das am besten machen sollte.
Ich würde mich freuen wenn mir jemand ein paar Denkanstöße geben kann, und mir vielleicht auch bei der Realisierung unter die Arme greift falls ich nicht weiterkomme.
Hier mein aktuell verwendetes Skript:
Danke und Gruß
Jamest
ich habe ein "Passwort vergessen" skript, was ich gern um ein Sicherheitsfeature erweitern würde. Im Moment muss der User nur seine Email Adresse eintragen, und schon wird ein neues Passwort generiert, in die DB geschrieben und per Email verschickt.
Ich denke es wäre besser wenn ich per email einen link verschicke, der erst nach dem anklicken das neue in der email mitgesendete passwort generiert und in die DB schreibt.
Oder sendet man danach nochmal eine email mit dem passwort? Ich denke es hat sich sicher schonmal jemand den Kopf zerbrochen, wie man das am besten machen sollte.
Ich würde mich freuen wenn mir jemand ein paar Denkanstöße geben kann, und mir vielleicht auch bei der Realisierung unter die Arme greift falls ich nicht weiterkomme.
Hier mein aktuell verwendetes Skript:
PHP:
<?php
session_start(); // Start Session
session_register("session");
// This is displayed if all the fields are not filled in
$empty_fields_message = "<p>Please go back and complete all the fields in the form.</p>Click <a class=\"two\" href=\"javascript:history.go(-1)\">here</a> to go back";
// Convert to simple variables
$email_address = $_POST['email_address'];
if (!isset($_POST['email_address'])) {
if($lang=="en") echo "<h2>Recover a forgotten password!</h2>";
else echo "<h2>Erstellen eines neuen Passworts!</h2>"; ?>
<form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
<p class="style3"><label for="email_address">Email:</label>
<input type="text" title="Please enter your email address" name="email_address" size="30"/></p>
<p class="style3"><label title="Reset Password"> </label>
<input type="submit" value="Submit" class="submit-button"/></p>
</form>
<?php
}
elseif (empty($email_address)) {
echo $empty_fields_message;
}
else {
$email_address=mysql_real_escape_string($email_address);
$status = "OK";
$msg="";
//error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);
if (!stristr($email_address,"@") OR !stristr($email_address,".")) {
$msg="Your email address is not correct<BR>";
$status= "NOTOK";}
echo "<br><br>";
if($status=="OK"){ $query="SELECT email_address,username FROM users WHERE users.email_address = '$email_address'";
$st=mysql_query($query);
$recs=mysql_num_rows($st);
$row=mysql_fetch_object($st);
$em=$row->email_address;// email is stored to a variable
if ($recs == 0) { echo "<center><font face='Verdana' size='2' color=red><b>No Password</b><br> Sorry Your address is not there in our database . You can signup and login to use our site. <BR><BR><a href='http://www.jackgodfrey.org.uk/register'>Register</a> </center>"; exit;}
function makeRandomPassword() {
$salt = "abchefghjkmnpqrstuvwxyz0123456789";
srand((double)microtime()*1000000);
$i = 0;
while ($i <= 7) {
$num = rand() % 33;
$tmp = substr($salt, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
$random_password = makeRandomPassword();
$db_password = md5($random_password);
$sql = mysql_query("UPDATE users SET password='$db_password'
WHERE email_address='$email_address'");
$subject = "Your password at www.yoursite.com";
$message = "Hi, we have reset your password.
New Password: $random_password
http://www.yoursite.com/login
Once logged in you can change your password
Thanks!
Jamest
This is an automated response, please do not reply!";
mail($email_address, $subject, $message, "From: yoursite.com Webmaster<admin@jyoursite.com>\n
X-Mailer: PHP/" . phpversion());
echo "Your password has been sent! Please check your email!<br />";
echo "<br><br>Click <a href='http://www.yoursite.com/login'>here</a> to login";
}
else {echo "<center><font face='Verdana' size='2' color=red >$msg <br><br><input type='button' value='Retry' onClick='history.go(-1)'></center></font>";}
}
?>
Danke und Gruß
Jamest