【问题标题】:PHP random number not workingPHP随机数不起作用
【发布时间】:2014-05-12 10:31:30
【问题描述】:

我想编写一个显示随机图像的 php 代码,人们必须猜测它是什么。问题是我的php代码告诉我正确的城市不正确,我不知道为什么

<?php
$random = rand(1, 3);
$answer ;
if ($random == 1) { $answer = "chicago" ;} 
elseif($random == 2) {$answer = "LA" ;}
elseif($random == 3) {$answer = "NewYork" ;}
else {echo "Answer is None" ; } 
if (isset($_POST["choice"])) {
    $a = $_POST["choice"];
    if($a ==$answer){
    echo "<br> working <br>" ; 
    }else {echo "<br> Not Working <br>";}

}
 ?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>City Guess</title>
</head>
<body>
<center>
<img src="four/Image_<?php echo $random ;?>.jpg" width="960" height="639" alt=""/>

<form action="" method="POST">
chicago <input type= "radio" name="choice" value="chicago"  />
<br>
LA <input type= "radio" name="choice" value="LA" />
<br>
NewYork <input type= "radio" name="choice" value="NewYork" />
<br>
<input type ="submit" value="Submit" />
</form>

</center>
</body>
</html>

【问题讨论】:

  • ist 因为您的 $random 在每次页面加载时都会重置,所以说第一次加载选择 1 当表单发布时它选择 3。您需要将第一次加载的 $random 存储在您的表单中并传递它在隐藏字段中作为您的“正确”结果,然后将您提交的答案与随机答案进行比较
  • 这个函数 rand 返回一个介于 1 和 3 之间的浮点数,而不是 1、2 或 3。你需要使用类似 floor($random) 的东西。
  • random 会生成一个新的随机页面加载次数。可能有用的是使用会话/cookie 来存储这个数字,或者找到另一种方式。数据库驱动的方法会生成很多行,但会遇到问题。

标签: php html image random input


【解决方案1】:

您正在生成随机值每次页面加载。例如当此人第一次访问它并获取表单时,您会生成2。提交表单时,您会生成另一个值,这次是3。所以即使用户正确地回答了2,你说他们错了,因为你忘记了你最初问的问题。

您需要以某种方式存储生成的值,并将其与响应进行比较,例如

$rand = rand(1,3);

<input type="hidden" name="correct_answer" value="$rand">


if ($_SERVER["REQUEST_METHOD"] == 'POST') {
   if ($_POST['correct_answer'] == $_POST['user_answer']) {
        echo 'correct';
   }
}

【讨论】:

  • 这可能就是一些网络游戏被“操纵”的方式;-)
  • 使用 . if ($_SERVER["REQUEST_METHOD"] == 'POST') { if ($_POST['correct_answer'] == $_POST['choice']) { echo '正确'; } else {echo '不正确' ;} }
【解决方案2】:

问题是你的逻辑,你没有存储生成的用于显示图像的数字,而是每次打开页面时都会生成一个新的数字。

您应该将生成的数字存储在(例如...)会话中以保存它并使用它进行比较。

【讨论】:

    【解决方案3】:

    试试看:

    $random = floor(rand(1, 4));
    

    希望对你有帮助。

    【讨论】:

      【解决方案4】:

      在您的表单中添加以下隐藏字段,使用 value="&lt;?php echo $answer ?&gt;",它将适用于您当前的代码。

      <input type="hidden" name="correct_answer" value="<?php echo $answer ?>">
      

      事实上,你甚至不需要name="correct_answer"

      只要做:

      <input type="hidden" value="<?php echo $answer ?>">
      

      请记住,当您对此进行测试时,您有“三分之一”成功的机会!


      编辑

      这是我使用的代码:

      <?php
      $random = rand(1, 3);
      $answer;
      if ($random == 1) { $answer = "chicago" ;} 
      elseif($random == 2) {$answer = "LA" ;}
      elseif($random == 3) {$answer = "NewYork" ;}
      else {echo "Answer is None" ; } 
      if (isset($_POST["choice"])) {
          $a = $_POST["choice"];
          if($a ==$answer){
          echo "<br> working <br>" ; 
          }else {echo "<br> Not Working <br>";}
      }
      ?>
      
      <!doctype html>
      <html>
      <head>
      <meta charset="utf-8">
      <title>City Guess</title>
      </head>
      <body>
      <center>
      
      <img src="four/Image_<?php echo $random ;?>.jpg" width="960" height="639" alt=""/>
      
      <form action="" method="POST">
      
      <input type="hidden" value="<?php echo $answer ?>">
      
      chicago <input type= "radio" name="choice" value="chicago"  />
      <br>
      LA <input type= "radio" name="choice" value="LA" />
      <br>
      NewYork <input type= "radio" name="choice" value="NewYork" />
      <br>
      <input type ="submit" value="Submit" />
      </form>
      
      </center>
      </body>
      </html>
      

      【讨论】:

      • 不客气。那是哪个“错误”? @user3450126 您需要具体说明错误。
      • 当回显“你的正确”;应该出现。它说你不正确。我回应了答案,所以我知道答案匹配。也许您应该尝试使用我的代码并输入您关于如何使其工作的想法。那会有很大帮助。我真的很适合它。我是 php 新手,我很想/需要一些帮助
      • 在我的 Edit 下查看我使用的代码。我自己从来没有从中得到错误。 @user3450126
      • 如果我显示的代码仍然抛出错误,我怀疑它与&lt;img src="four/Image_&lt;?php echo $random ;?&gt;.jpg" width="960" height="639" alt=""/&gt; 有关,因为我不知道你是如何使用它的,我没有包含在我自己的测试。 @user3450126
      猜你喜欢
      • 2011-01-19
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 2013-04-13
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多