如何使phpmailer代码仅在填写和提交表单时执行?
我有一个联系人表单,所有的php都可以正常工作,邮件发送成功,但问题是页面一加载/刷新,邮件就会被发送。我希望代码仅在填写表单(具有多个输入)并输入submit按钮时执行如何使phpmailer代码仅在填写和提交表单时执行?,php,html,forms,Php,Html,Forms,我有一个联系人表单,所有的php都可以正常工作,邮件发送成功,但问题是页面一加载/刷新,邮件就会被发送。我希望代码仅在填写表单(具有多个输入)并输入submit按钮时执行 <form> Full Name:<input required type="text" name="fullname" action="currentFile.php"/> <input type="submit"/> </form> <?php require 'ph
<form>
Full Name:<input required type="text" name="fullname" action="currentFile.php"/>
<input type="submit"/>
</form>
<?php
require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'mail@gmail.com';
$mail->Password = 'pass';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->addAddress('mail@gmail.com');
$mail->Subject = 'Contact Form';
$mail->Body = "Test";
$mail->AltBody = "Test";
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
?>
全名:
如果有人能解释如何使上面的php只在填写表单并单击按钮时执行,我们将不胜感激。谢谢。在这里发布之前,我试图将我的执行代码包装在一个
if(isset($\u POST['fullname'))
语句中,但这不起作用,所以我在这里寻求帮助。多亏了那些对我帖子的评论,我意识到了问题所在;我没有在表单标记中指定数据传输的方法。此外,与表单标记相反,输入标记中提到了action属性,这是不正确的
html应改为如下所示:
<form action="currentFile.php" method="post">
Full Name:<input required type="text" name="fullname"/>
<input type="submit"/>
</form>
全名:
我遇到的问题仅仅是由于糟糕的HTML造成的。提交表单时,您发送的是GET或POST请求,具体取决于表单的方法。你所需要做的就是写一个if语句,检查请求是否与表单的请求匹配,如果匹配,请运行你的邮件代码。其中的一些内容可能很有用-你可以按照CodeGodie的建议,将整个邮件代码包装在
if(!empty($\u GET['fullname']){…your code}
中。如果您没有在服务器上使用有效的电子邮件地址作为“发件人”地址,您可能会发现您的电子邮件将开始被视为垃圾邮件。@CodeGodie发现此问题是由于表单标记中缺少属性,我在发布之前尝试过您提出的解决方案,但由于此问题而无效。@Steve发现此问题是由于表单标签中缺少属性所致,我在发布之前尝试过您提出的解决方案,但由于此问题而无效。注意:解决方案已解决。请将我的建议作为答案发布,我会将您的答案帖子标记为解决方案。if(isset)(…
仅在“required”属性无法阻止提交时,如果所需输入信息不可用,则停止表单提交。if(!empty…
也可以使用,适用于复选框之类的功能,这些功能通常在未实际选中时显示为set。另外,如果您仍按要求支持ie8,则不适用于该功能: