如何检查用户输入是否等于php中列表中随机生成的元素的值?

时间:2016-03-11 09:34:36

标签: php html server

所以这是我的问题:Quiz Problem

我不确定为什么我的代码无效。它现在正在做的是检查下一个随机生成的城市到国家的用户输入,而不是检查当前的城市。到目前为止,这是我的PHP文件: LINK TO WEBPAGE

<!DOCTYPE html>
<html>
    <?php
        $cityToCountry = array();
        $file = fopen('world_capitals.txt', 'r');
        while ( !feof($file) )
        {
            $line = fgets($file, 2048);
            $delimiter = "\t";
            $data = str_getcsv($line, $delimiter);
            $cityToCountry[$data[0]] = $data[1];
        }  
        fclose($file);
        /*
        foreach($cityToCountry as $key => $value) {
            echo "$key is at $value<br>";
        }
        */
        $randomCity = array_rand($cityToCountry);

        echo $randomCity . " is the capital city of what country?<br><br>";


    ?>
    <form method="post" action="">
        <input type="text" name="data"/> 
        <input type="submit" name="check" value="check"/>
    </form>

    <?php
     if (isset($_POST['check'])) {
            $input = $_POST["data"];
            echo $input . "<br>";
            echo $randomCity . "<br>";

            if ($input == $cityToCountry[$randomCity]) {
                echo "Correct";
            } else {
                echo "False";
            }

        }


    ?>

</html>

给出“假”结果。我在这做错了什么?已经坚持了几个小时。提前谢谢!

3 个答案:

答案 0 :(得分:1)

当脚本从表单接收数据时,变量 $ randomCity 再次发生变化,因为它是从顶部执行的。它与不同的城市进行比较!

您应该发送一个“隐藏”字段,其中包含原始城市的信息。

<form method="post" action="">
        <input type="text" name="data"/>
        <input type="hidden" name="city" value="<?php echo $randomCity;?>"/> 
        <input type="submit" name="check" value="check"/>
</form>

然后,在您的支票功能中将 $ randomCity 替换为已发送的数据 $ _ POST [“city”]

答案 1 :(得分:0)

请检查你的if语句,比较city to capital的值,

if ($input == $cityToCountry[$randomCity]) {
                echo "Correct";
            } else {
                echo "False";
            }

答案 2 :(得分:0)

请检查您的if语句

if ($input == $randomCity) 
        {
              echo "Correct";
        } 
        else 
       {
             echo "False";
       }