我有一个包含用户电子邮件和自动生成的用户名的数据库,我有一个表单,用户输入他们的电子邮件来检索他们的用户名,这是我的代码
<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>
我没有收到任何错误,我只是没有收到电子邮件,任何人都可以帮我这个吗?
答案 0 :(得分:2)
假设您尚未指定SMTP服务器,这是您无法发送电子邮件的原因。 Google等公司拥有这些SMTP服务器,允许您作为电子邮件服务客户通过其SMTP服务器接收和发送电子邮件。如果无法访问SMTP服务器,您将无法发送电子邮件。
解决方案是在php.ini中指定SMTP详细信息,您可以通过Windows搜索或聚光灯找到它(如果您使用的是mac)。
我建议您使用PHPMailer,这样可以更轻松地使用来自f.e.的SMTP详细信息。您的个人Google邮件。
只需查看已接受的答案即可: Sending email with PHP from an SMTP server
答案 1 :(得分:1)
你不应该在SQL语句中盲目使用表单的值。
$email=$_POST['email'];
$email_check=mysql_query("SELECT user_name FROM details WHERE user_email='$email'");
你要求有人在那里注入一些非常讨厌的SQL作为电子邮件地址。
http://www.w3schools.com/sql/sql_injection.asp
除此之外,我认为您应该检查您的服务器是否可以发送电子邮件。 mail()
只会将您的邮件转发到服务器用于发送电子邮件的任何内容。很可能没有设置,因此在修复之前您无法发送电子邮件。
答案 2 :(得分:0)
根据PHP文档所说的邮件功能和@BeAnonymous,您需要定义一个SMTP服务器。
http://php.net/manual/en/function.mail.php#refsect1-function.mail-notes
http://php.codeindepth.com/php-sending-mail/(摘自邮件文档网站上的评论)
我使用PEAR邮件通过PHP发送电子邮件。
另外,@ Carl Casbolt说,你正在与你的表格直接与数据库进行交互,这就是要求注入攻击。考虑使用PDO进行数据库交互:
答案 3 :(得分:0)
如果您正在使用本地服务器&#34; localhost&#34;,您应该首先配置您的smtp服务器,否则这个doens将起作用,如果您正在使用Web服务器检查您的垃圾邮件箱,邮件功能就是这样。要解决垃圾邮件问题,请使用phpMailer而不是php的邮件功能。
答案 4 :(得分:-1)
你应该配置你的php.ini文件:你应该搜索[mail function]并添加有关你的邮件服务器的信息。对我来说,在unix上,它可以工作,这是配置:
[邮件功能]
仅适用于Unix。您也可以提供参数(默认值:&#34; sendmail -t -i&#34;)。 ; http://php.net/sendmail-path sendmail_path = / usr / sbin / sendmail -t -i
强制添加指定参数作为额外参数传递 ;到sendmail二进制文件。这些参数将始终替换值 ; mail()的第5个参数,即使在安全模式下也是如此。 ; mail.force_extra_parameters =
添加X-PHP-Originating-Script:包含脚本的uid,后跟文件名 mail.add_x_header = On