0

我有一个多项选择测验,它通过这样的 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 中的正确答案,但即使我选择了正确的答案并发布它仍然会回显“你弄错了”

任何帮助,将不胜感激。

4

4 回答 4

0

您的表格method="post"已发布,您的接收值$_GET['q']请更正其中一个或使用

$_REQUEST['q']`
于 2012-04-28T06:25:06.213 回答
0

使用隐藏字段 q 并将该值发布到您的操作页面并使用接收该值

$_POST['q'] and use that in your query.

谢谢。

于 2012-04-28T06:27:04.617 回答
0

为什么在 $_POST 表单的操作中使用 $_GET 请求?既然您不担心您的用户会看到 的价值,q那么为什么不在表单中放置一个隐藏的输入,其结果为q

<input type="hidden" value=<?php echo $quiz_id ?> name="q" />

然后在您的查询中,检查$_POST['q']

似乎是实现这一目标的更理智、更合乎逻辑的方式

于 2012-04-28T06:28:32.967 回答
0

而不是从表单操作中传递测验 id 从隐藏的表单字段中传递它

像下面将表单操作设置为

action="test2score.php"

并将隐藏的表单字段作为

<input type="hidden" name="q" value=<?php echo $quiz_id; ?> />

并获得如下所示的值

$_POST['q'];
于 2012-04-28T06:32:38.407 回答