【发布时间】: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()。效果很好。
【问题讨论】:
-
HTML validate?
-
提供部分代码