在页面加载时提交预先填充的PHP表单

时间:2014-03-25 14:44:41

标签: javascript php forms

我已经构建了一个可用的PHP表单,它包含5个字段,这些字段由URL查询字符串预先填充。

查询字符串URL位于HTML电子邮件的超链接上,要求收件人单击此处进行预订。我已经得到了他们的详细信息,因为我已经向他们发送了电子邮件,因此表格会预先填充。

如何让表单立即在页面加载时提交并重定向到感谢页面?

以下是我的表单目前的情况: -

<form name="frm" id="frm" method="POST">

<input name="firstname" id="firstname" type="text" value="<?php echo ((isset($_GET["firstname"]))?htmlspecialchars($_GET["firstname"]):""); ?>" />

<input name="lastname" id="lastname" type="text" value="<?php echo ((isset($_GET["lastname"]))?htmlspecialchars($_GET["lastname"]):""); ?>" />

<input name="email" id="email" type="text" value="<?php echo ((isset($_GET["email"]))?htmlspecialchars($_GET["email"]):""); ?>" />

<input name="company" id="company" type="text" value="<?php echo ((isset($_GET["company"]))?htmlspecialchars($_GET["company"]):""); ?>" />

<input name="contactid" id="contactid" type="text" value="<?php echo ((isset($_GET["contactid"]))?htmlspecialchars($_GET["contactid"]):""); ?>" />


    <input type="submit" name="Submit" value="submit" />
</form>

这是我尝试过的JavaScript(但没有用): -

window.onload = function() {
setInterval(function(){
    document.getElementById("frm").Submit();
},5000);
}

以下是整页的粘贴框:http://pastie.org/private/lgpealjya8xrwqi78gropw

由于

2 个答案:

答案 0 :(得分:1)

好的,所以基本上你一直在尝试通过网址获取信息,将它们插入表单中,然后提交表单以便发送电子邮件。这一切都很不错,尽管你只是让事情变得更难。 你需要做的是擦除表单(我们真的不需要这个)而不是处理你想要从表单中获取的所有$ _POST信息,你将用你已经离开的$ _GET数组来做url,在一天结束时它完全相同,因为你在表单中插入的信息只是你从网址中获取的信息。

因此,如果您通过以下方式更改此内容,您的脚本将正常工作:

//Get the submitted data
$firstname = cleanText($_GET['firstname']);
$lastname = cleanText($_GET['lastname']);
$email = cleanText($_GET['email']);
$company = cleanText($_GET['company']);
$contactid = cleanText($_POST['contactid']);

所以这就是将要发生的事情:用户将在链接上使用clic,您的脚本将获取$ _GET数组,处理它,根据此数组发送电子邮件,并将用户发送给thankyou .php页面。请注意,如果将脚本插入thankyou.php,则可以使脚本更有效并节省用户一段时间。

最后但并非最不重要的是,我想向您指出,通过网址提交发送电子邮件并不是一个很好的做法...您可能最终让机器人通过此网址发送大量电子邮件并让您电子邮件列入黑名单。如果我是你,我要么控制ip并确保每10分钟只发送一封邮件,或者只是最适合你需要的时间,或者我会在页面上添加验证码,这样用户就需要证明他是一个人谁真的想浪费一些时间发送电子邮件。

答案 1 :(得分:0)

尝试使用:document.getElementById('frm').submit();代替document.getElementById('frm1').submit();

并在页面加载后立即执行:

window.onload=function(){
  document.getElementById('frm').submit();
}