您好我正在尝试使脚本忘记密码,因此当用户在其中输入电子邮件时,它将验证输入的电子邮件是否与数据库电子邮件匹配,如果是,则将确认电子邮件发送到他的电子邮件地址。 它工作正常,直到我使用mysql但转换为mysqli后它无法正常工作。当用户在其中输入电子邮件时,它不会发送电子邮件,甚至不会回复发送的电子邮件或没有错误。
这是我的Forgot.php脚本(更新的脚本 AGAIN )
<?php
error_reporting(0);
if($_POST['submit']=='Send') {
//keep it inside
$email=$_POST['email'];
$con=mysqli_connect("lovehost","root","123","user");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$query = mysqli_query($con,"select * from login where user_email='$email'") or die(mysqli_error($con));
$numrows = $query->num_rows();
if ($numrows == 1) {
$code=rand(100,999);
$message='You activation link is: http://bing.fun2pk.com/forgot.php?email=$email&code=$code';
mail($email, "Subject Goes Here", $message);
echo 'Email sent';
} else {
echo 'No user exist with this email id';
}
}
?>
<form action="forgot.php" method="post">
Enter you email ID: <input type="text" name="email">
<input type="submit" name="submit" value="Send">
</form>
答案 0 :(得分:0)
我想你应该用 if条件中的mysqli_num_rows($ query)方法,用于检查电子邮件是否存在。
例如:
if (mysqli_num_rows ($query)==1)
{
//your mail method
}
答案 1 :(得分:0)
如果我看到它正确,则$_GET['ID']
未设置,因为您将表单提交到forgot.php
而没有名为ID的GET值
答案 2 :(得分:0)
我尝试在我的网站上使用测试修复此问题,您的代码应该是这样的 即使有很多错误,你的数据库很容易被匿名用户“黑客攻击”,只是为了表明问题。 的 Forgot.php 强>
<?php
error_reporting(0);
require('includes/db.php');
if (isset($_POST['email'])) {
$email = $_POST['email'];
$code = rand(100,999);
$query = "SELECT * FROM `users` WHERE email = '$email'";
$result = mysql_query($query) or die(mysql_error());
$count = mysql_num_rows($result);
if ($count == 1) {
mysql_query("update users set activation_code='$code' where email='$email'");
//That Mail code should be put here <----------------------
} else {
}
echo " Something Here for a response";
}
?>
<form action="" method="post">
Enter you email ID: <input type="text" name="email">
<input type="submit" name="submit" value="Send">
</form>
在我测试之后,这工作正常:/