我正在使用以下代码从核心php开发的在线考试系统的数据库中获取带有选项的随机问题。但是我面临以下问题:
1)绝对不允许用户通过键盘或鼠标刷新页面。
2)如果用户在同一浏览器的选项卡中打开相同的URL,则应该发出警报,提示您已经登录。
让我知道在相同的核心php中哪种是最佳解决方案。
谢谢
代码为:
<form action="submit-assessment.php" method="post">
<?php
$generated_q = mysqli_query($conn, "SELECT * FROM `tbl_question_paper` WHERE `exam_id`='$exam_id' ORDER BY RAND() LIMIT $no_ques");
while ($row_generated_q = mysqli_fetch_array($generated_q)) {
$question_results[] = $row_generated_q;
}
foreach ($question_results as $question) {
$ques_set = $question['setid'];
$ques_question_type = $question['question_type'];
$ques_level = $question['level'];
$ques_count_number = $question['count_number'];
$select_questions1 = mysqli_query($conn, "SELECT * FROM `tbl_questions` WHERE `set_id`='$ques_set' AND `question_type`='$ques_question_type' AND `level`='$ques_level' AND `invalid_status_admin`='0' ORDER BY RAND() LIMIT $ques_count_number");
while($quest_results = mysqli_fetch_array($select_questions1)){
$quest_results1[] = $quest_results;
} }
$i = 0;
?>
<input type="hidden" name="exam_id" value="<?php echo $exam_id; ?>" id="exam_id" checked>
<?php
foreach ($quest_results1 as $row_quest) {
$i++;
$question_exam = $row_quest['question'];
if($row_quest['question_image']!='')
{
$question_image='<img src="../../uploadImage/question/'.$row_quest['question_image'].'" style="width: 30%;height: auto;">';
}
else
{
$question_image='';
}
$optiona = $row_quest['option1'];
if($row_quest['option1_image']!='')
{
$option1_image='<img src="../../uploadImage/question/'.$row_quest['option1_image'].'" style="width: 30%;height: auto;">';
}
else
{
$option1_image='';
}
$optionb = $row_quest['option2'];
if($row_quest['option2_image']!='')
{
$option2_image='<img src="../../uploadImage/question/'.$row_quest['option2_image'].'" style="width: 30%;height: auto;">';
}
else
{
$option2_image='';
}
$optionc = $row_quest['option3'];
if($row_quest['option3_image']!='')
{
$option3_image='<img src="../../uploadImage/question/'.$row_quest['option3_image'].'" style="width: 30%;height: auto;" >';
}
else
{
$option3_image='';
}
$optiond = $row_quest['option4'];
if($row_quest['option4_image']!='')
{
$option4_image='<img src="../../uploadImage/question/'.$row_quest['option4_image'].'" style="width: 30%;height: auto;">';
}
else
{
$option4_image='';
}
echo '<div id="' . $row_quest['exam_id'] . '_' . $i . '" class="display_question" name="'.$i.'">';
//$groupInfo_default = Exams::groupInfo($row_quest['group_id'], "default_group");
//if ($groupInfo_default == "no") {
// echo '<h4>Тема: ' . Exams::groupInfo($row_quest['group_id'], "name") . '</h4>';
//}
echo '
<div class="well">
<h4>Exam. ' . $i . ' ' . $question_exam . '</h4>'.$question_image.'
<table width="100%" border="0" class="answeers">
<input type="text" name="que[]" value="' . $row_quest['question_id'] . '" data-id="'.$row_quest['question_id'].'" id="'.$row_quest['question_id'].'" checked>';
// if ($row_quest['number_options'] == 2) {
echo '
<tr height="40"><td>(A) <input name="' . $row_quest['question_id'] . '" value="1" type="radio"> ' . $optiona.$option1_image. ' </td></tr>
<tr height="40"><td>(B) <input name="' . $row_quest['question_id'] . '" value="2" type="radio"> ' . $optionb .$option2_image. '</td></tr>
<tr height="40"><td>(C) <input name="' . $row_quest['question_id'] . '" value="3" type="radio" id=""> ' . $optionc.$option3_image. '</td></tr>
';
echo '
<tr height="40"><td>(D) <input name="' . $row_quest['question_id'] . '" value="4" type="radio" id=""> ' . $optiond.$option4_image . '</td></tr>';
// }
echo '
</table>
</div>
</div>';
}
?>
<div class="col-md-12 padd down-buttons">
<div class="col-md-6 padd">
<div class="btn btn-info down-bt" id="prev">previous</div>
<div class="btn btn-info down-bt" id="mnext">Mark & next</div>
<div class="btn btn-info down-bt" id="next">next</div>
<div class="btn btn-info down-bt" id="invalid">Invalid</div>
</div>
<div class="col-md-6" style="margin:0px;">
<button type="submit" style="float:right;margin-left:5px;" id="finish" class="btn btn-success down-bt pull-right" name="finish"
onclick="finished(); return confirm('Are You Sure Finish Exam ?'); "/>
<i class="fa fa-check"></i> Finish the exam
</button>
<div class="btn btn-info down-bt" style="float:right;" id="clearAnswer">Clear answer
</div>
</div>
</div>
<?php $finish_time = time();?>
<input type="text" id="sesstime" name="sesstime" value="">
<input type="hidden" id="fini" name="fini" value="">
</form>
答案 0 :(得分:-1)
回答您的问题。
1)绝对不允许用户通过键盘或鼠标刷新页面。
正如kerbholz所说的那样-“您无法完全阻止用户重新加载”,因为使用PHP确定客户端事件或多或少是不可能的。相反,您可以通过使用jquery来实现。准备更多... Prevent any form of page refresh using jQuery/Javascript2)如果用户在同一浏览器的选项卡中打开相同的URL,则应该发出警报,提示您已经登录。
为此,您可以使用会话变量来标识您的会话登录名。 php login session login variables