不确定,但看起来您正在寻求解决方案 Y,而您的问题是 X (XY 问题)
XY问题是当你需要做X,并且你认为你可以用Y做X,所以你问如何做Y,而你真正应该做的是陈述你的X问题是什么。可能存在比 Y 更好的 Z 解决方案,但如果从未提及 X,则没有人可以建议它。
通常不建议修改 $_POST 数组,也不建议将带有问题的 Answers 传送到客户端。相反,该方法应该是因为questions.php
不需要答案,但verify.php
确实需要,因此只能verify.php
获得答案。
例如,在考试时,答题单永远不会与试卷一起运送到考场。
我冒昧地修改了您的代码结构。如果您仍然想使用自己的代码,请发布它,然后您可以获得您想要的答案。
尝试使用这个:
question.php:
<form action="verify.php" method="POST">
<fieldset class="Question1"> Complete this: ___<b>bar</b>
<input type="radio" name="answers[]" value="foo">Foo<br>
<input type="radio" name="answers[]" value="too">Too<br>
<input type="radio" name="answers[]" value="cho">Cho<br>
</fieldset>
<fieldset class="Question2"> Complete this: ___<b>overflow</b>
<input type="radio" name="answers[]" value="stack">Stack<br>
<input type="radio" name="answers[]" value="stock">Stock<br>
<input type="radio" name="answers[]" value="stick">Stick<br>
</fieldset>
</form>
answers.php:
//correct answers
$answers = array("foo", "stock");
verify.php:
include("answers.php");
$user_answers = $_POST["answers"];
$user_answers_count = count($user_answers);
$error = "";
for($i=0;$i<$user_answers_count;$i++)
if($user_answers[$i] !== $answers[$i]) //verify
$error[] = "Answer for Question ".($i+1)." is wrong!";
if(empty($error))
//Notify that user has passed the Quiz
else
//Notify that user has NOT passed the Quiz
//print the $error array
几点注意事项:
- 我用
answers.php
的是不同的文件,但如果没有特殊要求,可以考虑合并answers.php
& verify.php
(把answers.php
代码放在上面verify.php
),更好的是,你也可以将这三个文件合并为一个。
- 我假设 $_POST 已经过消毒。
answers
问题和数组的顺序是相同的。即answers[foo]
是正确的答案$_POST["answers"][foo]