【发布时间】:2015-06-29 12:33:18
【问题描述】:
我的忘记密码页面有问题。当我输入我的电子邮件地址并单击提交时,我被带到一个空白页面,并且没有发送带有我密码的电子邮件。任何帮助表示赞赏。谢谢!
<?php
include 'db.php';
if(isset($_POST['submit']))
{
$email_address=$_POST['email_address'];
$q=mysql_query("select * from login where email_address='".$email_address."' ") or die(mysql_error());
$p=mysql_affected_rows();
if($p!=0)
{
$res=mysql_fetch_array($q);
$to=$res['email_address'];
$subject='YNAGS Password Recovery';
$message='Your password : '.$res['password'];
$headers='From:password_reset@ynags.com';
$m=mail($to,$subject,$message,$headers);
if($m)
{
echo'Check your inbox in mail';
}
else
{
echo'mail is not send';
}
}
else
{
echo'You entered mail id is not present';
}
}
?>
我不太确定这是什么:
$q=mysql_query("select * from login where email_address='".$email_address."' ") or die(mysql_error());
主要是本语句的登录部分。
【问题讨论】:
-
空白页表示您没有检查的语法错误。另外,很明显您使用的是不安全的密码存储方法。发送这样的密码告诉我你没有运行一个安全的站点。您应该使用重置方法。
-
关于您的问题:
I am not quite sure what this is here- 这是一个安全漏洞(SQL 注入),您应该在为时已晚之前更改代码以使用参数绑定 -
谢谢,我会考虑更改我存储密码的方式。现在我使用 md5 哈希存储它们。我想我无论如何都不能再抓住它们了?有没有更好的方法在将它们输入数据库之前对其进行加密?
-
对于密码存储,使用CRYPT_BLOWFISH或PHP 5.5的
password_hash()函数。对于 PHPpassword_hash() compatibility pack. -
谢谢。我会先实现这个,然后在忘记密码之后继续
标签: php forgot-password