【问题标题】:How to check if a user input is equal to a randomly generated element's value from a list in php?如何检查用户输入是否等于 php 列表中随机生成的元素的值?
【发布时间】:2016-03-11 09:34:36
【问题描述】:

这是我的问题:

而且我不确定为什么我的代码不起作用。它现在所做的是将用户输入检查到下一个随机生成的城市到国家,而不是检查当前城市。到目前为止,这是我的 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>

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

【问题讨论】:

  • 您能粘贴$cityToCountry$randomCity 的值吗?需要确定$randomCity isset in $cityToCountry

标签: php html server


【解决方案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"]

【讨论】:

  • 哇!多么好的解决方案!我从来不知道隐藏的输入类型甚至存在......无论如何,我现在有一个小问题。当我点击检查时,它每次都会在顶部提出不同的问题。当他们点击“检查”时,我将如何跟踪最初的问题而不更改问题。
  • 也许解决方案是首先使用 if...else 语句检查表单是否发送了“城市”数据。 if(!isset($_POST["city"])) (如果没有城市数据)代码的顶部应该相同,但是如果 $_POST["city"] var 包含数据,则可以打印它而是。
【解决方案2】:

请检查你的 if 语句,有比较城市与资本的价值,

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

【讨论】:

  • if 语句没有问题,但是谢谢!
【解决方案3】:

请检查您的 if 语句

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

【讨论】:

  • 这种逻辑没有意义。我必须将用户的输入与 $randomCity 的国家/地区进行比较,而不是 $randomCity 本身。
猜你喜欢
  • 2014-02-27
  • 2022-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多