我创建了一个忘记密码。它检查数据库中是否存在电子邮件,并创建激活码。但是,我没有从我输入的电子邮件收到任何邮件。我必须安装一些东西来使这项工作?如果您发现这是重复的,那不是因为发布此忘记密码的其他人正在为他们工作,但在我的情况下我不接收电子邮件。
以下是代码:
<?php
error_reporting(0);
if($_POST['submit']=='Send')
{
//keep it inside
$email=$_POST['email'];
$code = $_GET['activation_code'];
$con=mysqli_connect("localhost","root","","test");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$query = mysqli_query($con,"select * from users where user_email='$email'")
or die(mysqli_error($con));
if (mysqli_num_rows ($query)==1)
{
$code=rand(100,999);
$message="You activation link is: http://192.168.0.108/resetpass.php?email=$email&code=$code";
mail($email, "daleii.calderon@yahoo.com", $message);
echo 'Email sent';
$query2 = mysqli_query($con,"update users set activation_code='$code' where user_email='$email' ")
or die(mysqli_error($con));
}
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)
您无法在localhost上发送电子邮件。如果您想测试您的代码,您需要在允许发送电子邮件的免费托管网站上进行测试。
你的mail()
函数有一些错误。更好:
<?php
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
答案 1 :(得分:0)
您是否安装了本地邮件服务器?有很多免费的。例如,XAMPP包含2个好的(假sendmail和Mercury)。对于开发,通常足以在本地存储邮件,尤其是在使用真实电子邮件地址时不要惹恼人们。
您可以在此问题中找到更多信息:How to configure XAMPP to send mail from localhost?