当快速连续发布2个表单时,PHP值不会发布

时间:2012-11-21 15:31:21

标签: php apache post

我正在使用Apache 2.2.22,PHP 5.3.10和IE7(它在工作内部网上,所以我无法控制IE的版本)。我使用的是更高版本的Apache(2.4.3,我的php工作正常)但我需要验证用户,显然2.4.3与mod_auth_sspi.so不兼容。

无论如何,我有3个php页面(index.php - > stage2.php - > stage3.php)。当我在index.php上提交表单并发布到stage2.php时,会正确接收这些值。但是,如果我然后提交stage2.php并尝试立即将值发布到stage3.php(5秒后),则$ _POST值为空。如果我等了10秒,它就能正常工作。

如果我使用GET而不是POST,它也可以正常工作但是stage2.php是一个搜索结果页面,可能需要将大量变量传递给stage3.php。我不知道URL长度是否有限制,但长度可能是数千个字符,具体取决于找到的结果数量。

另外,我已经尝试将标题设置为过去过期,没有运气。

if(!strpos(strtolower($_SERVER[HTTP_USER_AGENT]), "msie") === FALSE) {
   header("HTTP/1.x 205 OK");
} else {
   header("HTTP/1.x 200 OK");
}    
header("Pragma: no-cache");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, cachehack=".time());
header("Cache-Control: no-store, must-revalidate");
header("Cache-Control: post-check=-1, pre-check=-1", false);

我错过了什么吗?在某个地方是否设置了发布表单之间的时间?

更新@ aleation

实际页面很大但我可以使用简单的html表单(test_form.html和test_form.php)重新创建问题。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>

<form name="RequestForm" method="post" action="test_form.php">
<input name="firstname" type="text" id="firstname">
<input name="lastname" type="text" id="lastname">

<input type="submit" class="nextbutton" id="next_button" name="save" value="Send">
</form>

</body>

<?php

$first = $_POST["firstname"];
$last = $_POST["lastname"];

echo "first name = " . $first . "<br>";
echo "last name = " . $last;

?>

@aleation不幸的是服务器在我的工作内联网上。以下是使用GET从stage2发布到stage3的数据示例:

stage3.php?r1=729&save=Next&transcount=3&requesttype=invoice&requestedby=campbelld

奇怪的是,它只发送那些设置的输入 - stage2.php有一个复选框用于每个搜索结果,它只发送一个被检查的(第1行),所以如果我找不到解决方案那么使用GET会毕竟是可能的。当我在家测试时,它发送了每个复选框,因此URL最终变得庞大。

0 个答案:

没有答案