如何防止在浏览器的不同选项卡中访问刷新和相同URL:

时间:2018-10-29 08:22:34

标签: javascript php jquery

我正在使用以下代码从核心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>

1 个答案:

答案 0 :(得分:-1)

回答您的问题。

1)绝对不允许用户通过键盘或鼠标刷新页面。

正如kerbholz所说的那样-“您无法完全阻止用户重新加载”,因为使用PHP确定客户端事件或多或少是不可能的。相反,您可以通过使用jquery来实现。准备更多... Prevent any form of page refresh using jQuery/Javascript

2)如果用户在同一浏览器的选项卡中打开相同的URL,则应该发出警报,提示您已经登录。

为此,您可以使用会话变量来标识您的会话登录名。 php login session login variables