无法验证答案

时间:2013-04-23 14:54:03

标签: php

我有一个包含文本字段的表单。当用户提交数据时,它会根据表格中的“答案”列检查输入的数据是否正确。

但问题出在这里 - 如果没有根据正确的答案验证提交的文本字段,它就会接受任何内容。

我是php新手所以请帮忙。这是代码。

 $myuser = $_SESSION["myusername"]; $mypass = $_SESSION["mypassword"];
 $host="localhost"; // Host name 
 $username="f123"; // Mysql username
 $password="t"; // Mysql password 
 $db_name="f"; // Database name 
 $tbl_name="members"; // Table name 
 $tbl_name2="quiz"; // Table name 2


mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

if(isset($_POST['qno']))
{
$sql3="SELECT * FROM $tbl_name2 WHERE id='".$_POST['qno']."'";
$result3=mysql_query($sql3);

$disp3=mysql_fetch_assoc($result3);

$sql4="SELECT * FROM $tbl_name WHERE username='$myuser' and password='$mypass'";
$result4=mysql_query($sql4);

$disp4=mysql_fetch_assoc($result4);

if($disp3['Answer']==$_POST['Answer'])
{

$sql5="UPDATE $tbl_name SET level_crossed='".($disp4['level_crossed']+1)."',
Score='".($disp4 ['Score']+1)."' WHERE username='$myuser' and password='$mypass'";
 $result5=mysql_query($sql5);
}
else {
$sql5="UPDATE $tbl_name SET level_crossed='".($disp4['level_crossed']+1)."' 
WHERE    username='$myuser' and password='$mypass'";
$result5=mysql_query($sql5);

<form name="quizq" action="quiz.php" method="post" >
<input name="qno" type="hidden" value="<?php echo $disp['level_crossed']+1; ?>" />
<input type="text"  name="Answer"  />
<input type="submit" value="Submit Answer" /></p>
</form>

1 个答案:

答案 0 :(得分:0)

只需自己调试。 在$disp3['Answer']==$_POST['Answer']添加

之前
var_dump($disp3);
var_dump($_POST);

检查两个阵列中是否有Answer。如果不这样做,请检查数据库字段名称和POST字段/输入(两者都区分大小写)

我还要补充一点,你需要检查SQL注入并转义字段,或者更好地使用PDO和预处理语句。