Php 如何根据用户的分支显示考试页面?
我想根据学生的分支显示问题论文。 我在数据库aptitude中创建了5个表。 各表如下: itque, etrxque, extcque, 文明的, 麦基 分支名称存储在“注册”数据库中 如果学生在IT部门,则只应显示其问题纸 但是在逻辑上有一些问题。问题纸不会按照学生的分支显示 test.php的代码:Php 如何根据用户的分支显示考试页面?,php,html,Php,Html,我想根据学生的分支显示问题论文。 我在数据库aptitude中创建了5个表。 各表如下: itque, etrxque, extcque, 文明的, 麦基 分支名称存储在“注册”数据库中 如果学生在IT部门,则只应显示其问题纸 但是在逻辑上有一些问题。问题纸不会按照学生的分支显示 test.php的代码: <html> <body> <?php require_once('appvars.php'); require_once('co
<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> </p>";
echo "<p>Q:- $qus <br></p>";
echo "<p> A <input type=radio name = 'answer[$q]' value = '$a'></input>$a    <br>
";
echo " B <input type=radio name = 'answer[$q]' value = '$b'></input>$b    <br>
";
echo " C <input type=radio name = 'answer[$q]' value = '$c'></input>$c    <br>
";
echo " 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。它会返回什么?同样,在变量周围放置大括号也会像我之前建议的那样起作用