【发布时间】: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 注入的攻击。