提交时忘记密码导致空白页面

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";

?>

【讨论】:

以上是关于提交时忘记密码导致空白页面的主要内容,如果未能解决你的问题,请参考以下文章

是啥导致 Chrome 页面底部出现此空白?

PHP代码错误导致PHP返回页面空白

SUPEE 6788 和密码重置(空白页)

Mac忘记密码

在我的 wordpress 网站中,该网站已关闭,它只显示带有密码字段的空白页面

jsp插入数据的时候,页面空白,怎么解决?