【发布时间】:2012-04-28 06:21:32
【问题描述】:
我有一个多项选择测验,通过这样的 URL 发送一个可能的答案
<form method="post" action="test2score.php?q=<?php echo $quiz_id; ?>">
在 test2score.php 页面上它读取并尝试像这样比较值
$ans = mysql_result(mysql_query('select c_answer from quiz where quiz_id = "'.$_GET['q'].'"'),0);
if ($_POST['answer'] == $ans){
echo "You got it right!";
}else if ($_POST['answer'] <> $ans){
echo "You got it wrong!";
}
其中 c_answer 是存储在 db 中的正确答案,但即使我选择了正确答案并发布它仍然会回显“你弄错了”
任何帮助将不胜感激。
【问题讨论】:
-
你的测验只有一个问题
-
sql 注入:
example.com/test2score.php?q=1" and "1=1以及为什么不在会话中保留用户的答案,那么您不必发布/传递任何内容 -
回声 $_GET['q'];看看你得到了什么?
-
正如@LawrenceCherone 所说,您的代码容易受到 SQL 注入的攻击!如果您不知道那是什么,或者如何避免,请阅读Bobby Tables。
-
也许这很重要,单选按钮的答案选择是这样生成的 foreach ($row as $key => $value) { echo "".$value."
"; }