【发布时间】:2015-12-25 11:55:09
【问题描述】:
假设一个父窗口是www.mysite.com/index.php 有几个链接。当用户点击这些链接时,会打开一个弹出窗口。
弹出窗口有一些形式。当用户单击提交按钮时,弹出窗口中会调用另一个脚本,如下所示:
if ((isset($_POST['Complete'])) && ($_POST['Complete']=='Complete')) {
unset($_POST['Complete']);
include 'result.php';
return;
}
result.php 将数据输入数据库并将结果传递给父窗口,如下所示
<script language="JavaScript" type="text/javascript">
window.opener.location.href = 'submission.php';
window.close();
</script>
然后父窗口显示最终结果,更新主数据库并向用户发送电子邮件。
现在问题来了。
- 用户点击父母的链接。
- 表单打开,但用户单击关闭(浏览器十字按钮)。
- 然后用户关闭父窗口
- 然后用户访问站点的其他页面;说other.php
- 但主数据库正在更新,用户正在收到电子邮件(尽管所有
null值)。
由于表单从未完成,因此永远不应调用 result.php。如果从不调用result.php,则永远不应该调用submission.php。
这里发生了什么?
【问题讨论】:
-
你好。我已经研究了几个小时的问题。我已经走出了一个在 100% 的情况下造成异常的场景。暂时,我又检查了submission.php,它首先检查result.php 是否在数据库中插入了任何记录。如果没有记录,将通过无效的提交条目。现在这改善了用户体验,但这不是解决方案。为什么会这样?!!!!
标签: javascript php