Php 如何根据用户的分支显示考试页面?

Php 如何根据用户的分支显示考试页面?,php,html,Php,Html,我想根据学生的分支显示问题论文。 我在数据库aptitude中创建了5个表。 各表如下: itque, etrxque, extcque, 文明的, 麦基 分支名称存储在“注册”数据库中 如果学生在IT部门,则只应显示其问题纸 但是在逻辑上有一些问题。问题纸不会按照学生的分支显示 test.php的代码: <html> <body> <?php require_once('appvars.php'); require_once('co

我想根据学生的分支显示问题论文。 我在数据库aptitude中创建了5个表。 各表如下: itque, etrxque, extcque, 文明的, 麦基

分支名称存储在“注册”数据库中

如果学生在IT部门,则只应显示其问题纸

但是在逻辑上有一些问题。问题纸不会按照学生的分支显示

test.php的代码:

<html>
    <body>
<?php
      require_once('appvars.php');
      require_once('connectvars.php');

      // Make sure the user is logged in before going any further.
      if (!isset($_SESSION['user_id'])) {
        echo '<span style="color:#FFF;text-align:center;"><p class="login">Please <a href="login.php"style="color: #FFFFFF">log in</a> to access this page.</p></span>';
        exit();
      }
      else {
        include("menu.php");
      }
      ?>
      <?php
     $dbc=mysqli_connect("localhost","root","","register");
        $query = "SELECT branch FROM user WHERE m_id = '" . $_SESSION['user_id'] . "'";
        $data = mysqli_query($dbc, $query);
        $row = mysqli_fetch_array($data);
       if ($row != NULL) {
          $Branch = $row['branch'];

        }
        else {
          echo '<p class="error">There was a problem .</p>';
        }



      ?>
      <form action="./result.php" method="post">

    <?php

    $connect = mysql_connect("localhost" ,"root","");

    mysql_select_db("aptitude");



    $query = mysql_query("SELECT * FROM `$Branch` ORDER BY RAND() LIMIT 10 ");




     while($rows = mysql_fetch_array($query)):

        $q = $rows['Q_no'];
        $qus = $rows['Question'];
        $a = $rows['answer1'];
        $b = $rows['answer2'];
        $c = $rows['answer3'];
        $d = $rows['answer4'];
        $ans = $rows['correct'];
        echo" <p>&nbsp;</p>";
        echo "<p>Q:-&nbsp;$qus <br></p>";
        echo "<p>&nbsp;&nbsp;&nbsp;&nbsp;A <input type=radio name = 'answer[$q]' value = '$a'></input>$a &nbsp &nbsp<br>
    "; 
        echo "&nbsp;&nbsp;&nbsp;&nbsp;B <input type=radio name = 'answer[$q]' value = '$b'></input>$b &nbsp &nbsp<br>
    "; 
        echo "&nbsp;&nbsp;&nbsp;&nbsp;C <input type=radio name = 'answer[$q]' value = '$c'></input>$c &nbsp &nbsp<br>
     "; 
        echo "&nbsp;&nbsp;&nbsp;&nbsp;D <input type=radio name = 'answer[$q]' value = '$d'></input>$d <br><br> </p>";


        endwhile;
    ?>

    <center><input name="cmdSubmit" type="submit" id="cmdSubmit" value="Submit"/>
    </center>
    </form>
    </body>
    </html>

最大的逻辑缺陷是,如果用户id不在会话中,并且用户id不在cookie中,那么您仍然允许继续处理。您应该强制用户再次登录

Apache的默认会话时间为20分钟,因此您可能希望增加时间以允许学生完成评估,否则当他们来保存答案时,服务器将超时,并且不会保存任何数据。

需要进行小的更改

$query = mysql_query("SELECT * FROM ".$branch." ORDER BY RAND() LIMIT 10 ");

警告:使用此代码,我可以查看任何用户的数据!更糟糕的是,我可以通过将cookie设置为user_id='来删除所有用户数据;从用户删除;-。Cookie数据存储在浏览器端;任何拥有文本编辑器的人都可以更改它!尝试用echo语句调试代码。此代码不是最终程序,而是原始代码。我会在将来做出这样的改变。我的问题是如何根据用户的分支显示考试页面?我的问题是如何根据用户的分支显示考试页面?您确定设置了用户id吗。请尝试echo$\u会话['user\u id']$就在$query=mysql\u querySELECT*FROM$Branch行之前进行分支。什么是报告。放置一个var_dump$查询;在$query=mysql\u querySELECT和while语句之间。归还什么?您可能还想更改:从{$Branch}顺序中选择*现在无进展在o/p页面中显示“boolean false”,包括旧o/p。是否有任何方法可以从已登录的用户中自动选择分支。我将登录用户的branch值指定给$branch,并希望选择该分支表。分支名称和分支表名称相同。现在将var\u dump更改为var\u dump$connect$query。它会返回什么?同样,在变量周围放置大括号也会像我之前建议的那样起作用