【发布时间】:2011-05-23 12:43:48
【问题描述】:
我有一个简单的 HTML 表单,向 php 脚本发送一个 post 请求。在 IE8 中,表单只能间歇性地工作 - 大多数时候 PHP 脚本会看到一个空的 $_POST 变量。
这是我的代码:
<html>
<head>
<title>Post test</title>
</head>
<body style="text-align: center;">
<?php
echo "<pre>".print_r($_POST, TRUE)."</pre>";
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" name="name">
<input type="hidden" name="hidden" value="moo" >
<input type="submit" value="Search" >
</form>
</body>
</html>
有时 print_r 会给出您期望的响应(即它填充了表单中的数据),但大多数时候它是空的。
对于 Web 应用程序来说,不能使用 POST 是一个问题 - 任何人都知道发生了什么,以及如何解决它?
【问题讨论】:
-
我无法重现这个。我一直坐在这里点击按钮 30 秒,从来没有看到过掉线的 POST。您确定您的 IE 设置或互联网连接没有问题吗?
-
你确定它在做回发,而且不仅仅是 IE8 不接受 ENTER 按钮作为提交吗? (例如stackoverflow.com/questions/964734/… & stackoverflow.com/questions/3631949/… )——也可以查看stackoverflow.com/questions/2383190/…
-
感谢大家的关注。这就是整个脚本 - 我将它复制到一个单独的文件中以确保!这不是网络问题,因为我在我的本地机器上安装了 apache。我正在点击提交按钮,而不是使用回车键。
-
我意识到这是一个测试脚本,这并不能解决您的问题,但
$_SERVER['PHP_SELF']在这种情况下是不安全的。请注意。 -
感谢 scoates - 我不知道 $_SERVER['PHP_SELF'] 有任何问题 - 风险在哪里?