【问题标题】:PHP how to code a game named guess number? [closed]PHP如何编写一个名为猜数的游戏? [关闭]
【发布时间】:2020-08-05 09:51:23
【问题描述】:

如果我没有选择正确的数字,如何不改变随机数的值?

正确的num后,程序应该改变随机num的值。

不使用 cookie 和会话!

这是猜数字游戏的 PHP 代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="game.php" method="get">
        <input type="text" name="number" placeholder="50-100">
        <br><br>
        <input type="submit" name="submit" value="submit">
        <input type="submit" name="other" value="reset number">
    </form>

    <?php

    $x   = rand(50, 100);
    $num = '';

    if (isset($_GET['submit'])) {
     $num = $_GET['number']; // Add this to set value for $num variable
            if ($num < $x) 
            {
                echo " Your number is lower! <br />";
            } elseif ($num > $x) 
                {
                echo " Your number is higher! <br />";
            } elseif ($num == $x) 
                {
                echo " Congratulations! You guessed the hidden number. <br />";
            } else 
                {
                echo " You never set a number! <br />";
            }
    }
    ?>
</body>
</html>

【问题讨论】:

  • 您要么需要将其存储在某个地方,以便在下一次请求(如会话)时再次读取它,要么您需要将其与表单一起作为隐藏字段发送。 (是的,在这种情况下,它会显示在地址栏中,除非您将表单提交方法切换为 POST。即使这样,用户仍然可以发现它,如果他们在浏览器中检查了实际的源代码/DOM 视图.)

标签: php html css frontend backend


【解决方案1】:

我建议你将变量保存在 $_SESSION[] 中,这样你会得到这样的结果:

if (isset($_SESSION['x'])) {
  $x   = $_SESSION['x'];
}
else {
  $x   = rand(50, 100);
}

否则您可以将其存储在隐藏字段中:

    <input type="hidden" name="x" value="<?php $x ?>">

然后你会这样读:

if (isset($_GET['x'])) {
  $x   = $_GET['x'];
}
else {
  $x   = rand(50, 100);
}

【讨论】:

    【解决方案2】:

    您可以使用 PHP 会话处理。

    <?php
    
    session_start();
    
    if (empty($_SESSION['value']) || 'reset number' === $_GET['other'] ?? '') {
        $_SESSION['value'] = rand(50, 100);
    }
    $x = $_SESSION['value'];
    
    $num = '';
    
    if (isset($_GET['submit'])) {
        $num = $_GET['number']; // Add this to set value for $num variable
        if ($num < $x) {
            echo " Your number is lower! <br />";
        } elseif ($num > $x) {
            echo " Your number is higher! <br />";
        } elseif ($num == $x) {
            echo " Congratulations! You guessed the hidden number. <br />";
        } else {
            echo " You never set a number! <br />";
        }
    }
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Document</title>
        </head>
        <body>
            <form action="game.php" method="get">
                <input type="text" name="number" placeholder="50-100">
                <br><br>
                <input type="submit" name="submit" value="submit">
                <input type="submit" name="other" value="reset number">
            </form>
        </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多