【发布时间】:2011-12-12 12:33:31
【问题描述】:
我正在创建一个忘记密码的页面,并将通过电子邮件将临时密码发送给用户,以便他们可以登录并重置密码。
创建密码时应该注意什么,最好的方法是什么。
我的一个想法是这样的:$temporarypassword = sha1($_SERVER['REMOTE_ADDR'])
试图只允许他们从他们请求临时密码的 IP 地址登录。最好的方法是什么??
到目前为止的代码:
if(strpos($_SERVER['HTTP_REFERER'],'domain.com') && ($_POST['forgotpasstoken'] == sha1($_SESSION['token'].'forgotpassword'))){
if(isset($_POST['forgotemail']) && !empty($_POST['forgotemail'])){
$email = mysql_escape_string(trim($_POST['forgotemail']));
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE){
echo '<div class="error">Please enter a valid email address.</div>';
} else {
$sql = "SELECT email FROM users WHERE email = '$email' LIMIT 1";
$res = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($res) > 0) {
//If email/user exists
$temporarypassword = sha1($_SERVER['REMOTE_ADDR'])
//EMAIL PASSWORD HERE
echo '<div class="success">A temporary recovery password has been emailed to you.</div>';
//If email/user exits
} else {
echo '<div class="error">This email is not registered.</div>';
}
}
} else {
echo '<div class="error">Please enter an email address.</div>';
}
}
【问题讨论】:
-
我不建议这样做。 IP可以更改,该人可以在重置IP或其他任何内容后收到邮件。我建议使用完全随机的密码,它只能在很短的时间内使用。不要忘记通知用户。
标签: php security email login passwords