douliao1911 2014-04-23 20:15
浏览 9
已采纳

无论如何,当我自我提交时,有一次设置变量值

I am trying to make this simple guess number in PHP. The problem is that once I submit this form to myself, the $number variable will be randomized again instead of keeping the previous values. Is there anyway to kept it the same?

<?php
    $run_once = true;
    $number = 10;
    $user_input = 1;
    $display_answer = "";

    function seedRandNumber() {
        srand((double) microtime() * 1000000);
        $num = rand(1, 25);
        return $num;
    }

    if ($run_once) {
        $number = seedRandNumber();
        $run_once = false;
    }

    function answer($input) {
        $num = $GLOBALS['number'];
        if ($input == $num) {
           return "You guess it right";
        } else if ($input > $num) {
            return "it is a lower number";
        } else {
            return "it is a high number";
        }
    }

    if (isset($_POST["number"])) {
        $user_input = $_POST["number"];
        $display_answer = answer($_POST["number"]);
    }

    if (isset($_POST["newgame"])) {
        $number = seedRandNumber();
    }

    ?>

    <h1>Guess Number</h1>

<p1>Please enter a number between 1 and 25</p1>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> 
    Number: <input type="text" name="number" value="<?php echo $user_input; ?>"> <input type="submit" name="submit" value="Submit"> <br>
    <p2><?php echo $display_answer; ?></p2><br>
    <br>
    <input type="submit" name="newgame" value="New Game">
</form>
  • 写回答

1条回答 默认 最新

  • dqifn68206 2014-04-23 20:19
    关注

    You can store your number in the session, then only create a new one when required:

    start_session();
    
    if(!isset($_SESSION['number']) || isset($_POST['newgame'])) {
        $number = seedRandNumber();
        $_SESSION['number'] = $number;
    }
    else {
        $number = $_SESSION['number'];
    }
    

    You need to put this at the start of your program.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集