提交时忘记密码导致空白页面
Posted
技术标签:
【中文标题】提交时忘记密码导致空白页面【英文标题】:Forgot password on submit leads to blank page 【发布时间】: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()
函数。对于 PHP password_hash() compatibility pack
.
谢谢。我会先实现这个,然后在忘记密码之后继续
【参考方案1】:
-
我们应该知道 db.php 中的代码(显然没有敏感数据)。
试试这样的:
db.php
<?php
define("HOST", "your host");
define("USER", "db user name");
define("NAME", "db name");
define("PASSWORD", "password");
?>
forgot.php
<?php
include("db.php");
if(isset($_POST['email_address']))
$email_address = $_POST['email_address'];
$con = mysqli_connect(HOST, USER, PASSWORD, NAME);
$sql = "SELECT * FROM login WHERE email_address = '".$email_address."'";
if(mysqli_affected_rows(mysqli_query($con, $sql)) != 0)
$res = array();
$res = mysqli_fetch_array(mysqli_query($con, $sql));
$to = $res['email_address'];
// and so on ...
else
echo "Email not found";
else
echo "Form not submitted";
?>
【讨论】:
以上是关于提交时忘记密码导致空白页面的主要内容,如果未能解决你的问题,请参考以下文章