0

我有一个表格,里面有一个测试,其中包括多项选择复选框。

每个答案都是从 Wordpress 中提取的,并且在一个循环中,每个单独的复选框都以下列方式输出:

<input type="checkbox" name="answer[]" value="<?php echo $row['answer']; ?>" />

在 Wordpress 中,每个答案旁边都有一个复选框,如果选中则表示它是正确答案。这是输出:

$row['correct'];

如何将数据传递到另一个页面以检查用户检查的答案是否正确,而不允许用户查看源以查看答案?

在第二页上,我使用以下内容输出用户检查的答案:

$answer = implode(", ",$_POST["answer"]);
echo $answer;

显然,这些是从表单中的输入中提取的。如何检查每一项是否正确?

4

2 回答 2

1

看起来您将答案存储在 JavaScript 数组中

<input type="checkbox" name="answer[]"...,这可以通过使用以下内容由 PHP(在表单发布到的任何页面上)读取:

$answers = json_decode($_POST['answer'])

这是假设您的表单正在使用该POST方法,否则更改$_POST$_GET

从那里$answers[]可以使用for()包含条件表达式的循环来循环数组,即if($answers[$i] !== $correctAnswers[$i]) $wrongAnswers++ else $correctAnswers++或类似的。

这一切都发生在服务器端,客户端无法查看。

由于用户将在表单提交时被发布到计算页面,您可以使用header('Location: results.php');将他们从空白页面引导。它应该包含在分数计算循环之后的脚本末尾。

想一想,$_SESSION[]如果您确实计划通知用户他们是如何做到的,您可能需要将分数存储在 a 中,以便可以从结果页面中读取。

于 2013-04-11T16:05:19.880 回答
0

我认为有两种可接受的方法:

  1. 给问题编号,然后在您的 PHP 文件中使用 switch 语句(或映射)来检索问题的正确答案,并以这种方式检查。

  2. 在每个页面的会话中设置下一个正确值,并在生成的 PHP 页面中读取它。

第一个选项可能更可取。

于 2013-04-11T15:56:54.347 回答