在HTML表单上,用户填写注册数据,然后将其提交给PHP页面以处理POST数据。大约20%的情况下,当用户单击"Submit"时,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中看到。
你的愿望就是我的命令,先生!下面是我的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
线。
谢谢大家,你们的想法和建议会让我沿着正确的路线思考。
您可以为每个帖子添加验证验证码。因此,当点击超过一次时,它将生成一个新的captcha码并返回false。