【发布时间】:2018-03-26 17:34:35
【问题描述】:
我设置了一个自定义报价功能,当用户点击提交时会向他们发送一封电子邮件。我遇到的问题是,即使您点击“提交”一次,它总是会发送两封电子邮件。我在一个 WordPress 网站上使用它,这个代码是我写的报价插件的一部分。
我设置了一个名为 $testemail 的变量,该变量设置为 1,并且应该在调用 wp_mail 函数时增加 1,但两封电子邮件仍然只显示数字 1,因此第二封电子邮件不会根本不增加它。
这是我发送电子邮件的代码:
$email_array = array($get_option_array['franchise_email'],
$email_address_sanitize, "info@example.com");
$subject = "Price Quote Submission";
$to = $email_array;
if (isset($_POST['submit-clicked'])) {
if ($check_human_clean != 2) {
echo '<div>';
echo '<p class="error">Human verfication is incorrect. Please try again.</p>';
echo '</div>';
}
else {
if (wp_mail($to, $subject, $message)) {
echo '<div id="dialog" title="Price Quote Submitted">';
echo 'div id="popmake-233">';
echo '<p>Your price quote has been sent successfuly. We\'ll be in touch shortly. If you don\'t hear from us, please give us a call directly at (909) 982-9999. Thank you!</p>';
echo '</div>';
$testemail++;
}
else {
echo '<p class="error">An error occured while processing your price quote. Please contact the franchise owner at ';
echo $get_option_array['franchise_phone'];
echo '</p>';
}
}
}
我读到的所有内容都是代码必须运行两次,但我的 $testemail 变量没有递增,所以我不确定情况是否如此。另外,我正在使用 SendGrid,但我已经尝试关闭 SendGrid,但这并没有解决问题。除此之外,它只是使用wp_mail 默认函数,我相信它使用PHP Mailer。
我是一名初级开发人员,所以我确信我只是忽略了一些东西,但我在这一点上被难住了。任何帮助都会很棒,谢谢。
【问题讨论】:
-
检查您的日志。你确定你只收到一个请求和一个请求吗?
$testemail是一个请求的局部变量,如果您收到两个请求,您不会看到它增加。 -
我会按照以下建议将其设为全局变量并再次检查。
-
全局变量是每个进程的,不是通用的,所以你仍然不确定你是否得到了重复。只有日志才能告诉你。
-
这里是一个非常业余的问题......我该如何记录呢?
-
error_log函数是一种快速而肮脏的获取输出的方式。