修改提交按钮以识别选择数


Modify submit button to recognize number of selections

我正在研究一系列数据库驱动的测试,这些测试显示在mysite/test/$test-url上。用户选择答案并单击提交按钮后,他们将被转发到 mysite/test/grade.php。

下面的脚本捕获测试页面的 URL,以便可以在成绩.php上显示正确的答案。

<div id="quiz" rel="key" style="margin-top: 50px;">
  <form action="grade.php" method="post" id="quiz">
    <ol>
      <li style="display: none;">
<?php echo join ($Base, ''); ?>
      </li>
    </ol>
    <input type="hidden" name="PreviousURL" value="<?php echo $MyURL; ?>" id="url" />
    <input type="hidden" name="user_token" value="<?php echo isset($_POST['user_token']) ? $_POST['user_token'] : '' ; ?>" />
    <input type="submit" value="Submit Quiz" />
  </form>
</div>

如果有人访问成绩.php而没有先访问测试页面,他们看到的只是一个几乎空白的页面。但是,访问测试页面并单击提交按钮而不回答任何问题的人将被转发到答案页面,该页面将显示答案。换句话说,它使作弊变得容易。

所以我的问题来了:我如何修改我的脚本,使答案不显示在成绩上.php除非用户为每个问题选择一个答案?另一种方法是修改它,以便用户不会首先被转发到评分.php除非他们选择了所有答案。

你对所有答案做一个循环,如果一个是空的,你什么都不显示。

想象一下,您有 3 个问题;

$_POST['Question1']
$_POST['Question2']
$_POST['Question3']

好吧,如果你这样做:

if(!$_POST['Question1'] || !$_POST['Question2'] || !$_POST['Question3']){
   // SHOW NOTHING
}
else{
   // SHOW WHAT YOU WANT.
}

现在,如果你想在JQUERY中做到这一点。您可以通过检查之前是否给出了所有答案来阻止表单加载到您的 php。

同样在这里,您使用 https://api.jquery.com/serializeArray/然后遍历数组的每个答案,例如:

$('#myform').submit(function(event){
  var answers = $('#myform').serializeArray();
  $.each(answers , function(index,value){
     if(value == ''){
       event.preventDefault();
       alert('you did not answer all the questions');
     }
   });
}

检查您是否具有您在测试中要求的值(并且它们不为空(_POST美元。如果是这样,那么您可以显示诸如"请之前回答测试"之类的smth,或者通过标头功能重定向到您的测试.php。