【发布时间】:2015-07-08 16:25:32
【问题描述】:
我有一个为客户构建的表单,它接收用户信息并将其发送给我的客户和我。它具有输入验证功能,并且不允许用户在未填写表单的情况下发送电子邮件。
我无法弄清楚表格是如何连续 3 天每天早上发送给我的,并且在早上 7:48 准确地发送了 5 封电子邮件。关于它的最奇怪的部分是表格是空白的。
另请注意:表单在测试时每次都能从多个不同的设备和浏览器正常工作。
我正在使用 PHP 发送表单、用于表单验证的 javascript、HTML 和 CSS。下面是相关代码(为了减少我遗漏了大部分输入的代码,我只保留了一个字段,这样你就可以看到一切是如何工作的)
HTML
<form method="post" name="form" id="email-form" action="css/form-to-email.php">
<p class="blue" id="body-text-name">Name: <input id="input-name" name="fname" type="text" required />
<input class="btn" onClick="return IsEmpty()" type="submit" name='submit' />
</form>
javascript
function IsEmpty() {
if (document.forms['form'].name.value == "") {
alert("empty");
return false;
}
return true;
}
和 PHP
<?php
if(!isset($_POST['submit']))
{
echo "error; you need to submit the form!";
}
$fname = $_POST['fname'];
$to = 'someEmail@some.com';
$cc = '';
$recipients = $to.", ".$cc;
$email_subject = "Order Form";
$email_body = "Order For: $fname\n\n";
$headers = "From: Order_Form\r\n";
$headers .= "Reply-To: \r\n";
mail($recipients,$email_subject,$email_body,$headers);
header('Location: ../index1.html');
?>
我已经搜索并搜索了一个答案,但我终其一生都无法弄清楚是什么导致了这种情况或将要寻找的原因。任何帮助将不胜感激。
【问题讨论】:
-
我会检查这实际上在做什么!我不认为它是你的想法。
document.forms['form'].name.value修复这个问题,爬虫可能无法让表单运行。试试这个document.getElementById('input-name').value -
@blex 这听起来像是一个非常可能的解决方案。但是我不确定参数检查是什么意思。您能否给我一些代码或给我一个链接,我可以在哪里找到并阅读它?
-
@AdamBuchananSmith 如果未设置
$_POST['submit'],只需执行echo "error; you need to submit the form!"; exit();即可退出脚本。因为使用您发布的代码,如果您直接在浏览器地址栏中键入脚本的 URL,您会收到错误消息,但仍会发送电子邮件。 -
@RiggsFolly 我可以测试它的唯一方法是等到明天早上 7:48 对吗?
-
@AdamBuchananSmith 不,要测试它,您只需要转到
yoursite.com/path/to/css/form-to-email.php然后查看您的收件箱(应该什么都没有)。
标签: javascript php html forms email