【问题标题】:HTML POST sometimes does not submit POST data to PHP scriptHTML POST 有时不会将 POST 数据提交到 PHP 脚本
【发布时间】:2013-12-30 00:30:41
【问题描述】:

好吧,这有点奇怪。

所以我有很多在线工作的人填写在线表格。然后将这些表单发布回同一页面,该页面记录条目,然后为它们提供新条目。

问题是大约 1/100 的条目似乎丢失了。根据我的日志,PHP 脚本认为这些已提交而没有 POST 数据(如页面刷新)。但是该网站的许多用户都遇到了这个问题。

我看不出这怎么可能是我的代码或 HTML 表单中的错误,因为每个页面/条目的代码和 HTML 基本相同。

我正想方设法找出问题所在。我在 PHP 脚本上放了非常详细的日志,记录了一切。根据这些日志,缺少条目是因为没有 POST 数据(甚至没有设置 $_REQUEST['submit'] 变量),但用户都坚持认为他们按下了提交按钮并且没有刷新页面。

这正常吗?有什么办法解决吗?

表格如下:

<form action="display.php" method="POST">
<textarea name="desc" cols="80" rows="20">'.$description.'</textarea>
<input type="hidden" name="savepk" value="1"/>
<INPUT type="hidden" NAME="pibn" VALUE="3434"/>
<INPUT TYPE="hidden" NAME="user" VALUE="12"/>
<INPUT TYPE="hidden" NAME="what" VALUE="2"/>
<input type="hidden" name="pk" value="1"/>
<input type="hidden" name="go" value="0/>
<input type="hidden" name="debug" value="0"/>
<INPUT TYPE="submit" NAME="submit" VALUE="Done (10)" ONCLICK="parent.Switch();" style="width:300;height:40px;font-weight:bold;background-color:#F2FF9E;"/>
</form>

包含javascript的父页面是:

<HTML><HEAD><META NAME="ROBOTS" CONTENT="NOINDEX">
<script type="text/javascript">
var on=0;
function Switch()
    {
    if (on==0)
        {
        on=1;
        document.getElementById("frame0").style.top="-1000";
        document.getElementById("frame1").style.top="0";
        }
    else
        {
        on=0;
        document.getElementById("frame1").style.top="-1000";
        document.getElementById("frame0").style.top="0";
        }
    }
</script>
</HEAD><BODY>
<iframe src="display.php" frameborder="0" width="100%" height="100%" style="position:absolute; left:0; top:0;" class="frame0" id="frame0"></iframe>
<iframe src="display.php" frameborder="0" width="100%" height="100%" style="position:absolute; left:0; top:-1000;" class="frame1" id="frame1"></iframe>
</BODY></HTML>

该 javascript 用于一次加载 2 个页面并交替使用它们。因此,表单 onclick 事件上的 parent.Switch()。效果很好。

【问题讨论】:

标签: php html forms post


【解决方案1】:

有了这个小信息,一个疯狂的猜测是有一个 JavaScript 错误(可能在验证表单时)导致 location.hreflocation.reload() 事件导致页面被 GET 请求重新加载?

【讨论】:

  • 好的,页面上唯一的一点 javascript 非常简单,并且每次都在做同样的事情。 javascript有时会随机不起作用吗?
  • 可能访问者关闭了 JavaScript。你的 JavaScript 在做什么?
  • 他们都有javascript。做条目的是同一个人。 javascript 正在做一个预加载器:它将一个 iframe 移出视图并将另一个移入视图。
  • 也许您可以发布 Javascript 代码?并确认这些失败的请求确实是 GET 请求而不是 POST 请求。
  • 我认为很可能是在没有框架的情况下打开了表单,或者由于某些其他原因,parent 对象无法访问。这将导致 Javascript 错误,并且页面将重新加载,表单数据丢失。您可以尝试通过直接打开display.php 来重现它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 2011-02-23
  • 2018-09-27
相关资源
最近更新 更多