测验系统使用PHP和MYSQL

时间:2015-11-19 20:20:35

标签: php mysql

Every Thing对我的在线测验系统工作正常,但上传问题的页面无法正常工作。

如果超出限制,用户一次只能添加20个问题,系统会提示信息并将重定向到他的帐户。

这是允许用户输入他的问题,四个选项和正确选项的表格。

<html>
<body>
<form action="be_uploadquiz.php" method="post">
<table><tr><td>Enter Question Here</td>
<td>
<input name="question" type="text" maxlength="100" /></td></tr>
<tr><td>Enter First Option</td>
<td>
<input name="opt1" type="text" maxlength="100" /></td></tr>
<tr><td>Enter Second Option</td><td>
<input name="opt2" type="text" maxlength="100" /></td></tr>
<tr><td>Enter Third Option</td>
<td>
<input name="opt3" type="text" maxlength="30" /></td></tr>
<tr><td>Enter Fourth Option</td>
<td>
<input name="opt4" type="text" maxlength="30" /></td></tr>
<tr><td>Select The Correct Option</td>
<td>
<select name="woptcode">
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
</select>
</td></tr>
<tr><td>
<input name="submit" type="submit" value="Next" />
</td></tr></table></form>
</body>
</html>

以下是插入问题的uploadquiz.php文件

    <?php
session_start();
$link = mysql_connect("localhost","root","");
mysql_select_db("quiz",$link);
$question = $_POST['question'];
$opt1 = $_POST['opt1'];
$opt2 = $_POST['opt2'];
$opt3 = $_POST['opt3'];
$opt4 = $_POST['opt4'];
$woptcode = $_POST['woptcode'];
if ( isset( $_POST['submit'] ) ) {
    $sql = "INSERT INTO be_quiz (question,opt1,opt2,opt3,opt4,woptcode) VALUES ('$question', '$opt1','$opt2','$opt3','$opt4','$woptcode')";
    $i++;
 header('Location:be_uploadquiz.html');
if($i==20)
{
    header('Location:message.html');
}
}
session_destroy();
if(!mysql_query($sql))
{
    die('Error:'.mysql_error());
}

mysql_close();
?>

如果未达到限制,我希望用户再次重定向到uploadquiz.html,如果达到最大限制(即已达到20个问题),则希望用户重定向到文件message.html,然后再转到他的帐户。这不起作用需要帮助。

1 个答案:

答案 0 :(得分:1)

您的变量$i不会在导航中维护。您可以使用会话变量,如下所示:

start_session();
if (!isset($_SESSION["counter"])) {
    $_SESSION["counter"] = 0;
}

然后使用$_SESSION["counter"]代替$i;

$_SESSION["counter"]++

不要破坏会话,否则您将不会保留此值。所以删除这一行:

destroy_session();

如果您想确保在一段时间不活动后销毁会话(同时重置该用户的计数器),请阅读The javadoc如何做到这一点。

现在仍然存在一个问题:您对20限制的检查发生得太晚,并且不会阻止用户继续提交。您应该在实际insert之前放置该测试并且增量发生。