我有一个包含用户电子邮件和自动生成用户名的数据库,我有一个表单,用户输入电子邮件来检索他们的用户名,这是我的代码。
<html>
<body>
<form method="post" action="retrievedetails.php">
<p><label for="email">Email:</label>
<input name="email" type="text"/>
</p>
<input type="submit" name="submit" value="submit"/>
</form>
<?php
session_start();
$connect=mysql_connect("localhost","dfarrelly","1234") or die("Could not connect to database");
mysql_select_db("game", $connect) or die("Couldn't find db");
if(isset($_POST['submit'])) {
$email=$_POST['email'];
$email_check=mysql_query("SELECT user_name FROM details WHERE user_email='$email'");
$name=mysql_num_rows($email_check);
$subject="Login Info";
$message="Your username is .$name";
$from="From: test@gmail.com";
mail($email, $subject, $message, $from);
echo "your username has been emailed to you";
}
?>
</body>
</html>我没有收到任何错误,我只是没有收到电子邮件,谁能帮我这个吗?
发布于 2016-07-27 14:08:27
假设您尚未指定SMTP-Server,这就是您不能发送电子邮件的原因。像谷歌这样的公司有这些SMTP服务器,可以让你作为电子邮件服务的客户通过它们的SMTP服务器接收和发送电子邮件。如果没有对SMTP服务器的访问,您将无法发送电子邮件。
解决方案是在php.ini中指定SMTP详细信息,您可以通过windows搜索或聚光灯(如果您在mac上工作)找到这些详细信息。
我建议您使用PHPMailer,这使得使用f.e的SMTP详细信息要容易得多。你的个人谷歌邮件。
只需检查接受的答案就可以得到一个例子:Sending email with PHP from an SMTP server
发布于 2016-07-27 13:56:53
不要在SQL语句中盲目地使用表单的值。
$email=$_POST['email'];
$email_check=mysql_query("SELECT user_name FROM details WHERE user_email='$email'");您要求有人将一些非常讨厌的SQL作为电子邮件地址注入其中。
injection.asp
此外,我认为你应该检查你的服务器可以发送电子邮件。mail()只会将您的信息转发到服务器用来发送电子邮件的任何东西上。这很可能是没有设置,所以你不能发送电子邮件,直到这是固定的。
发布于 2016-07-27 14:21:09
按照PHP文档对邮件函数和@BeAn匿名的要求,您需要定义一个SMTP服务器。
我使用PEAR邮件通过PHP发送电子邮件。
此外,@ Casbolt说,您正与数据库直接交互,您的表单请求注入攻击。查看如何在数据库交互中使用PDO:
https://stackoverflow.com/questions/38614883
复制相似问题