PHP Javascript:关闭后台调用父窗口的弹出窗口


PHP Javascript: Closing Popup calling parent window in background

假设一个父窗口是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>

然后,父窗口显示最终结果,更新主数据库并向用户发送电子邮件。

现在问题来了。

  1. 用户单击家长上的链接
  2. 表单打开,但用户单击关闭(浏览器交叉按钮)
  3. 然后用户关闭父窗口
  4. 然后用户访问网站的其他页面;说其他.php
  5. 但是主数据库正在更新,用户正在收到电子邮件(不过所有的null值)

由于表单从未完成,因此不应调用result.php。并且如果从未调用result.php,则永远不应该调用submission.php。

这里发生了什么?

将关闭按钮的类型更改为按钮。