为测验结果页面捕获页面 URL 的最佳方式

Best way to capture page URL for quiz results page

想象一下在 mysite/test/universe (URL = 'universe') 或 mysite/test/earth (URL = 'earth') 进行测验。在您 select 回答并单击提交按钮后,您将被转到 mysite/test/results.php 的静态页面。表单自动转发一些测试数据(例如 $answer1 = $_POST['q1'])。

有没有办法修改脚本,以便当有人单击“提交”按钮时,页面的 URL 也被捕获并转发到结果页面?

我不希望 URL 本身发生变化。例如,如果人们被转发到 mysite/test/results%universe,或类似的东西,那么他们可以访问那个 URL 来查看所有答案。

所以我只想转发 URL 的值,然后我可以用它来显示和设置正确和错误答案的样式,以及反馈。

我还应该解释一下,我正在使用 PHP、jQuery,也许还有 AJAX,我的最终目标是修改我的测试,以便用户可以登录,并将测试结果发布到数据库中。考虑到这一点,修改下面的 HTML 以便捕获页面 URL 并将其转发到结果页面的最佳方法是什么?

<div id="quiz" rel="key" style="width: 500px; margin: 10px auto;">
  <form action="grade.php" method="post" id="quiz">
    <ol>
      <li id="q1">
        <div class="Question">No one knows if there&#8217;s just one universe or a series of universes, sometimes referred to as a:</div>
        <div class="Answer">
          <label for="q1-A"><div class="Radio"><input type="radio" name="q1" id="q1-A" value="A" style="display: none;"> A. multiverse</div></label></div>
        <div class="Answer">
          <label for="q1-B"><div class="Radio"><input type="radio" name="q1" id="q1-B" value="B" style="display: none;"> B. parallel universe</div></label></div>
      </li>
    </ol>
    <input type="submit" value="Submit Quiz" />
  </form>
</div>

您的表单中有一个隐藏字段

<input type="hidden" id="url" />

并以此 javascript

设置其值

document.getElementById("url").value = document.URL;

或这个jQuery

$(document).ready(function(){ $("input#url").attr("value", $(location).attr('href')); });

然后会和表单一起提交。

您可以使用查询字符串。如果您在 http://something.html 中的第一页 url 和表单提交后的第二页 url 是 another.html 那么

 <form action="another.html?previous=<?php echo $_SERVER['REQUEST_URI']; ?>">
 </form>

在 another.html 中,您可以在使用 GET

提交表单之前获取上一页 url
 $_GET["previous"]