表单提交导致多个请求加载相同的页面

时间:2013-05-28 00:51:43

标签: php html

在HTML表单上,用户填写注册数据,然后将其提交到PHP页面以处理POST数据。大约20%的时间,当用户点击“提交”时,POST数据为空。使用Fiddler进行的一些调查在正常工作时显示了这一点:

58  200 HTTP    www.awebsite.com    /?page_id=337   22,433  no-cache, must-revalidate, max-age=0; Expires: Wed, 11 Jan 1984 05:00:00 GMT    text/html; charset=UTF-8    firefox:9116                    

当它破裂时,我看到了:

56  200 HTTP    www.awebsite.com    /?page_id=337   144 no-store, no-cache, must-revalidate, post-check=0, pre-check=0; Expires: Sat, 6 May 1995 12:00:00 GMT       firefox:9116            
57  200 HTTP    www.awebsite.com    /?page_id=337   144 no-store, no-cache, must-revalidate, post-check=0, pre-check=0; Expires: Sat, 6 May 1995 12:00:00 GMT       firefox:9116            
58  302 HTTP    www.awebsite.com    /?page_id=337   16,561  no-cache, must-revalidate, max-age=0; Expires: Wed, 11 Jan 1984 05:00:00 GMT    text/html; charset=UTF-8    firefox:9116            
59  200 HTTP    www.awebsite.com    /?page_id=445   19,989  no-cache, must-revalidate, max-age=0; Expires: Wed, 11 Jan 1984 05:00:00 GMT    text/html; charset=UTF-8    firefox:9116    

就像提交提交页面三次一样。顺便说一句,HTML和PHP页面是WordPress网站的一部分......不确定这是否密切相关,但希望尽可能多地包含信息。

有关正在发生的事情的任何想法?我对事件冒泡感到内疚吗?如果有帮助的话,我会很高兴地展示代码,如果没有必要的话,我不想把这个地方弄得乱七八糟。

编辑以回应评论: 首先感谢FDinoff进行格式化...我正在学习,希望这有效。 8 ^)

按顺序:

  

@ 3dgoo:我小心点击提交一次,所以我不认为这是问题所在。希望是的!

     

@jereon:这是间歇性的,是什么PITA,但我可以通过提交页面四到五次来实现......它会发生。

     @Eduardo:是的,这就是我正在做的事情,你会在我对@meewoK的回复中看到。

     

@meewoK:你的愿望是我的命令先生!这是我的HTML中的表单标记:

<form  class="contact_form" action="/?page_id=337" method="post" name="contact_form" onsubmit="return validateForm();">

并假设validateForm()返回true,POST数据被发送到使用PHP构建的WordPress页面。这是page_id=337。以下是该文件的前20行:

<?php
/*
Template Name: DisplaySummaryToApplicant.php
*/
?>

<?php
$ipaddress = $_SERVER["REMOTE_ADDR"];
if (count($_POST) == 0 ) {
    header("location: http://www.awebsite.com/?page_id=445");
}
require('wp-load.php');
get_header("header_reg"); 
//echo '<meta http-equiv="expires" content="0">'; 
require_once (dirname(__FILE__)."/dbLog.php");

global $current_user;
get_currentuserinfo();

当代码失败时,$_POST数组为空,用户被重定向到一个宣告错误的页面。这是page_id=445行。

谢谢大家,您的想法和建议将让我沿着正确的方向思考。

1 个答案:

答案 0 :(得分:0)

您可以为每个帖子添加验证验证码。因此,当它不止一次点击时,它会生成一个新的验证码并将其返回false。

希望它有所帮助!