【问题标题】:Password recovery not sending email密码恢复不发送电子邮件
【发布时间】:2015-11-16 11:33:50
【问题描述】:

密码恢复不发送电子邮件。但它总是说电子邮件已发送。请帮帮我。

<?php
session_start();
include_once 'dbconnect.php';

if (isset($_POST['submit'])) {

    $email = $_POST['email'];
    $query = mysql_query("SELECT * FROM users WHERE email='" . $email . "' ") or die(mysql_error());
    $run = mysql_affected_rows();
    $password = substr(hash('sha512', uniqid(rand(), 1)), 3, 10);
    $pass = hash('sha512', $password);
    if ($run != 0) {
        $res = mysql_fetch_array($query);
        $to = "$email";
        $subject = "Obnovení hesla";
        $body = "Dobrý den $res->username, vaše nové heslo je $password";
        $additionalheader = "From: <admin@chat-web.com>";
        mail($to, $subject, $body, $additionalheader);
        if ($email) {

            echo"<script>alert('Email byl úspěšně odeslán.')</script>";

        } else {

            echo"<script>alert('Emailová adresa $email neexistuje.')</script>";
        }
    }
    $sql = mysql_query("UPDATE users SET password='$pass' WHERE email = '$email'")or die(mysql_error());
}
?>

【问题讨论】:

  • 您可以为您的表单提供标记吗?
  • 这是我的表格:pastebin.com/hjY7UBAK
  • $run 将在您进行选择时返回 false。您可能想使用mysql_num_rows。此外,您应该真正停止使用 mysql_* 函数,并且您目前容易受到 SQL 注入的攻击。

标签: php email passwords


【解决方案1】:

要正确检查响应,请尝试以下代码:

if(mail($to, $subject, $body, $additionalheader)) {
    echo "mail sent";
}
else {
    echo "mail not sent";
}

您还可以打印 $res 的响应以了解确切的错误。 另外,请阅读以下帖子。 How to test if PHP mail() has successfully delivered mail

【讨论】:

    【解决方案2】:

    您使用了错误的函数来检查是否有任何返回的行。

    mysql_affected_rows() 返回受INSERT / UPDATE / DELETE 影响的行数。

    mysql_num_rows() 将返回查询返回的行数,这是您真正想要检查的。

    【讨论】:

    • 谢谢!我用 mysql_num_rows() 替换了 mysql_affected_rows(),它现在可以工作了!
    【解决方案3】:

    邮件功能是否在您的服务器上运行?

    同时检查您的垃圾邮件文件夹。

    正如乔恩·斯特林所说,替换

    $run = mysql_affected_rows();

    $run = mysql_num_rows($query);

    【讨论】:

    • 是的邮件功能正在我的服务器上运行。而且我的垃圾邮件中没有任何内容。
    • 有时邮件服务器会在一段时间后发送电子邮件。如果您对代码进行了更改,您可以检查旧代码。
    猜你喜欢
    • 2012-07-07
    • 1970-01-01
    • 2014-12-11
    • 2010-11-05
    • 1970-01-01
    • 2011-10-07
    • 2013-12-18
    • 2015-08-13
    • 1970-01-01
    相关资源
    最近更新 更多