使用表单提交来防止或清除历史记录

时间:2010-07-09 03:23:38

标签: php javascript

我有一个小的测验Web应用程序要部署。

基本上我有2页,'1)测验页'和'2'结果页面'。提交测验表格后,它将在用户的结果页面上生成结果。但是,我需要阻止用户单击后退按钮或键入键盘上的退格键。

我研究了'location.replace()'的使用,但不知道如何在我的表单中实现它:

<form id="quiz" name="quiz" method="post" action="result.php">
...
<input type="submit" name="Submit" value="Submit" />
</form>

我想知道是否有任何方法可以在表单中使用location.replace(),或者以其他方式阻止/清除用户返回历史记录页面。

谢谢。

2 个答案:

答案 0 :(得分:3)

如果您害怕用户返回检查答案然后重新提交表单,我认为您正在从错误的一端接近问题。

您需要做的是在启动时为每个测验“会话”提供唯一的ID。然后检查表单提交以查看是否已提交测验会话。如果已经提交,则拒绝。

答案 1 :(得分:1)

无法阻止用户在他/她的浏览器中点击“返回”。实现目标的一种方法是使用AJAX提交表单。当他/她点击回来时,它不会进入测验,而是进入上一页。

以下完整工作示例使用jQuery库:

<html><head></head><body>
  <div id="form_wrap">
    <form onsubmit="send_form(this);return false">
      ...
      <input type="submit" />
    </form>
  </div>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  <script>
    function send_form(form) {
      jQuery.post('result.php', jQuery(form).serialize(), function(data) {
        jQuery('#form_wrap').html(data);
      });
    }
  </script>
</body></html>