【问题标题】: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.
  • 谢谢。我会先实现这个,然后在忘记密码之后继续

标签: php forgot-password


【解决方案1】:
  1. 我们应该知道 db.php 中的代码(显然没有敏感数据)。
  2. 试试这样的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 2021-05-12
    相关资源
    最近更新 更多