PHP测验实际上没有检查答案是否正确,而是总是说正确

时间:2018-05-01 19:52:31

标签: php boolean boolean-logic

我有这个奇怪的问题,我的PHP测验不检查用户提交的答案是否实际上是正确的。我知道这一点,因为当我回答完全关闭的内容时,它仍会回复if if correct消息,并且如果回答错误则不会实现应该显示的链接。起初我以为是因为我正在检查数组中的短语而不是单个单词但是在用简单的单词测试之后我得到了相同的结果。我是一个相对较新的PHP,并一直在线搜索,但我只是发现与多选答案相关的不提交文本框。这是我的代码:

数组列表:

<?php
$array['one'] = "Mickey Mouse";
$array['oneone'] = "Oswald the Lucky Rabbit";
?>

主要测验页:

<!DOCTYPE html>
<html>
<head>
<title>Final Quiz</title>
</head>
<body>
<?php
include("newquiz2.php");
 print("{$array['one']} was modeled after what character created by the Disney Studio?<br>");
 print("<form action='newquiz2check.php' method='get'>\n");
 print("<input type='text' name='one'><br><br>\n");
 print("<input type='submit' value='Submit Answer'>\n<br><br>");
 print("</form>\n\n\n");

?>
</body>
</html>

测验检查:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Answers for Quiz</title>
</head>
<body>
<?php
include("newquiz2.php");
if (metaphone($one) == metaphone($oneone)) {
$one = $array['one'];
$oneone = $array['oneone'];
   print("Correct: $one was modeled after $oneone");
   print("<p><a href='newquiz2ask.php'>Play again </a><br><br>");
   }  
else{print("<a href='newquiz2ask.php'>Back to home </a><p>\n");}



?>
</body>
</html>

除此之外,其他一切都在起作用。我应该使用@GET将变量分配给数组还是什么?我不完全确定这是否是您检查提交文本框的方式。

1 个答案:

答案 0 :(得分:1)

测验非常广泛的应用,但根据您的尝试并根据评论,我有一些东西给你(非常基本的基于数组的测验)。

<强> questions.php

<?php
$questions = array(
    array("question"=>"Question number 1", "answer"=>"ans1"),
    array("question"=>"Question number 2", "answer"=>"ans2"),
    array("question"=>"Question number 3", "answer"=>"ans3"), 
);
?>

<强>的index.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require_once 'questions.php';
        ?>
        <form method="post" action="check.php">
            <?php 
            $random_index = array_rand($questions,1); //gives you only one question index from 3 question list
            ?>
            <label><?php echo $questions[$random_index]['question']; ?></label><br>
            <input name="answer" type="text" /><br>
            <input type="hidden" name="index" value="<?php echo $random_index; ?>" />
            <input type="submit" value="submit answer" />
        </form>
    </body>
</html>

<强> check.php

<?php
require_once 'questions.php';
$entered_answer = $_POST['answer']; //Form input named as answer
$index = $_POST['index'];
if($entered_answer==$questions[$index]['answer']){
    echo "Correct answer";
}
else{
    echo "Incorrect answer";
}
//Redirect link
?>

根据您的尝试,我创建了三个文件index.phpquestions.phpcheck.php。尝试创建这些文件并运行index.php。查看数组中的答案并输入正确和错误的答案。

对于PHP数组,数组索引现在已足够,但如果您要将问题和答案存储到数据库中,那么您需要使用主键ID来获取答案并比较答案。