Every Thing对我的在线测验系统工作正常,但上传问题的页面不能正常工作。使用PHP和MYSQL的测验系统
如果限制超过,用户被限制为一次添加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如果没有达到极限,到一个文件message.html如果达到最大限度(即已达到20个问题),然后到达他的账户。这不工作需要帮助。
你没有为'$ i'设置一个值,你没有任何循环,无处可存在'$ i'在单独的post操作之间的值,而且你很容易受到[sql注入攻击]的影响。 http://bobby-tables.com)。 –
@developerwjk:为什么?不需要php的简单表单... –
您需要从数据库中读取数据库中已有的问题数量。 '$ i'的值不会被保留,而是在页面执行完毕时被丢弃。所以'$ i'只是从下一次上传开始。 (您可以使用会话,但如果有人在不同的时间添加问题,那实际上不会有效。) – developerwjk