自定义 500 错误 PHP 页面,在 30 秒内再次重试 POST 或 GET 表单


custom 500 error php page that retry the POST or GET form in 30 seconds again?

我们正在尝试构建一个自定义的 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();
?>

您可以使用 Javascript(如果客户端已启用它)来尝试重新加载页面。 这将重新提交开机自检数据。 问题是(至少在Firefox中)当脚本执行时,浏览器会弹出询问他们是否要重新提交数据,这可能会令人困惑。

不过,这将起作用:

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

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

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