0

POST または GET フォームを 30 秒で再試行するカスタム 500 エラー php ページを構築しようとしています。試験にムードルを使用していますが、多くの学生が同じ試験を行うことがあります。この問題を解決する方法はありますか? これまでのところ、パラメーターが 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 フィールドを非表示の要素に変換し、ページに別のフォームを再入力して、一定期間後に再送信するオプションを与えることができます。提出されたファイルを再アップロードすることはできませんが、通常の形式のデータは機能するはずです。

サムがコメントで言ったように、同様のコードを使用して、window.location.reload(). これにより、ほとんどのブラウザで表示される「データを再送信してもよろしいですか」というポップアップが表示されなくなります。

于 2012-06-22T22:29:48.823 に答える