我正在创建一个用户可以创建帖子的网页。其他用户可以通过填写向发布者发送电子邮件的表单来回复帖子。 我使用while循环迭代来显示来自MySQL db的所有帖子,同时显示表单以进行回复。
我遇到的问题是,当我按回复表单上的发送按钮时,数据库中的所有用户都会收到一封电子邮件。它应该工作的方式是,我回复的人应该收到电子邮件。试过其他迭代器。考虑使用对象但却无法理解为什么当我按下发送按钮时mail()函数会向所有用户发送一封电子邮件。
$query = mysql_query("SELECT * FROM msg ORDER by id DESC");
while ($row = mysql_fetch_array($query)){
print '<div class="block">
<div id="uMail">
<a id="mail" href="'.$row['userMail'].'"> <img src="mail.png" > </a>
</div>
<div id="uName">
<span id="var">'.$row['userName'].'</span>
</div>
<div id="uMsg">
<p>'.$row['userMsg'].'</p>
</div>
</div>
<div class="popup">
<form action="" method="POST">
<div id="sName">
<input type="text" name="sName" />
</div>
<div id="sMail">
<input type="email" name="sMail" />
</div>
<textarea name="sMsg"></textarea>
<input type="submit" name="send" value="Send" />
</form>
</div>
';
if (isset($_POST["send"])) {
$usrMail = $row['userMail'];
$sndrName = mysql_real_escape_string($_POST["sName"]);
$sndrMail = mysql_real_escape_string($_POST['sMail']);
$sndrMsg = mysql_real_escape_string($_POST["sMsg"]);
mail($usrMail, "Hey", $sndrMsg);
header('location: forma.php');
}
}
答案 0 :(得分:3)
因为sendmail()在while()内。
我强烈建议https://github.com/PHPMailer/PHPMailer发送电子邮件,因为mail()无法指定SMTP。
答案 1 :(得分:0)
您在发送一封电子邮件后将用户重定向到forma.php。你应该移动这一行:
header('location: forma.php');
在while循环之外,因此在发送所有电子邮件后重定向用户
答案 2 :(得分:0)
所以最后我做到了,我只是将提交按钮名称设为$ i,这是$ i ++ in while循环。然后我发了if(isset($ _ POST [“$ i”]))里面有邮件功能和它的工作:) 但是,现在我想制作弹出窗口以便回答,并且不知道如何管理它:)