0

我们正在尝试构建一个自定义的 500 错误 php 页面,该页面在 30 秒内再次重试 POST 或 GET 表单,我们使用moodle进行考试,但有时我们有很多学生在做同样的考试,知道如何解决这个问题吗?到目前为止,如果参数像 xxx.php?name=doe 一样,我们可以重试,但如果它们以像 $_post 这样的数组形式出现,则不能重试

<?php
    function my_url(){

        $url = (!empty($_SERVER['HTTPS'])) ?   "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

        echo "<meta http-equiv=\"refresh\" content=\"30;url=$url\"/>";
    }
    my_url();

?>
4

1 回答 1

0

您可以使用 Javascript(如果客户端已启用)尝试重新加载页面。这将重新提交 POST 数据。问题是(至少在 Firefox 中)当脚本执行时,浏览器会弹出询问他们是否要重新提交数据,这样可能会造成混淆。

不过,这会起作用:

<script type='text/javascript'>
    setTimeout('window.location.reload()', 30000);
</script>

根据您拥有的 POST 数据类型,您可以将所有 POST 字段转换为隐藏元素,并在页面上重新填充另一个表单,并为他们提供在一段时间后重新提交的选项。您将无法尝试重新上传他们提交的任何文件,但正常的表单数据应该可以工作。

正如 Sam 在评论中所说,您可以使用类似的代码重新提交隐藏表单,而不是调用window.location.reload(). 这应该可以防止大多数浏览器出现“您确定要重新提交数据”弹出窗口。

于 2012-06-22T22:29:48.823 回答