PHP表单验证(有点像验证码)
我已经尝试了我能想到的各种方法,有一个多维数组,包含3组数据,每组都有一个问题和相应的awswer,我想验证用户对每个问题的答案 问题是,当我按下submit按钮时,用户实际上是在提交下一个问题的答案,在按下submit之前无法显示!这可以通过输入预期值(如“2”)并等待下一个问题为1+1来验证=PHP表单验证(有点像验证码),php,arrays,forms,validation,Php,Arrays,Forms,Validation,我已经尝试了我能想到的各种方法,有一个多维数组,包含3组数据,每组都有一个问题和相应的awswer,我想验证用户对每个问题的答案 问题是,当我按下submit按钮时,用户实际上是在提交下一个问题的答案,在按下submit之前无法显示!这可以通过输入预期值(如“2”)并等待下一个问题为1+1来验证= <?php $question = array( 0 => array( 'question' => "1+1=", 'answer' =&g
<?php
$question = array(
0 => array(
'question' => "1+1=",
'answer' => 2
),
1 => array(
'question' => "2+1=",
'answer' => 3
),
2 => array(
'question' => "4+1=",
'answer' => 5
)
);
$arrayIndex = array_rand($question);
$q = $question[$arrayIndex]['question'];
$a = $question[$arrayIndex]['answer'];
if (isset($_POST['submit'])) {
if($_POST['answer'] == $a) {
echo "correct";
} else {
echo "incorrect";
}
} else {
echo "Answer this:";
}
print $a;
print ("
<form method='post'><br/>
<input type='text name='". $a ."' value='". $q ."'>
<input type='text' name='answer'><br/>
<input type='submit' name='submit'><br/>
</form>
");
?>
问题是您的条件检查无效。条件中的
$a
设置为新值,因此包含新答案,而不是用户提交问题的答案
我已经显式地添加了一个隐藏属性来捕获问题的索引,然后相应地检查答案
当然,代码可以被优化和清理,但是这里有一个简单的代码修改来完成这件事
<?php
$question = array(
0 => array(
'question' => "1+1=",
'answer' => 2
),
1 => array(
'question' => "2+1=",
'answer' => 3
),
2 => array(
'question' => "4+1=",
'answer' => 5
)
);
if (isset($_POST['submit'])) {
if($_POST['answer'] == $question[$_POST['index']]['answer']) {
echo "correct";
} else {
echo "incorrect";
}
} else {
echo "Answer this:";
}
$arrayIndex = array_rand($question);
$q = $question[$arrayIndex]['question'];
$a = $question[$arrayIndex]['answer'];
print $a;
print ("
<form method='post'><br/>
<input type='text name='". $a ."' value='". $q ."'>
<input type='hidden' name='index' value='".$arrayIndex."'>
<input type='text' name='answer'><br/>
<input type='submit' name='submit'><br/>
</form>
");
?>