随机数重置

时间:2016-02-24 20:45:40

标签: php post random

我的随机数在页面加载时生成,但似乎在用户点击"猜猜"按钮。我仍然有很多建设可以使用它,但最后我希望用户能够进行多次猜测来猜测随机数。我希望它在页面首次出现时生成并保持不变直到正确猜到。我不确定我做错了什么,只是启动了这个程序。如果您回答,请解释,因为我正在努力学习我正在做的事情。谢谢!

<!doctype html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>PHP Homework 2</title>
        <link rel="stylesheet" href="styles/styles.css">
    </head>

    <body>
        <section id="main">
            <h1>Play the Guessing Game!</h1>
            <section id="left">
                <h2>Take a Guess!</h2>
                <form action="mine.php" method="post">
                    <div id="guessBox">
                        <label id="guessLB">Your Guess:</label>
                        <input id="guessTB" class="num" type="number" name="guessTB" max="1000" min="1">
                        </input>
                    </div>
                    <input type="submit" id="guessButton" name="guessBTN" value="Guess" />
                </form>
            </section>
            <section id="right">
                <h2>Game Stats</h2>
                <?php 

                    if(isset($_POST['guessTB'])) 
                    {
                        $randomNum = $_POST['guessTB'];
                    } 
                    else 
                    {
                        $randomNum = rand(1,100);
                    }                       

                    echo "<p>Random Number: $randomNum</p>";
                ?>      
            </section>
        </section>          
    </body>
</html>

更新:我的HTML保持不变,我发布了新的PHP代码。但是我用了一个会话并写了更多。但是,我遇到了两个问题:

1)如果我刷新页面,则会收到错误消息,指出$randomNum下面的session_start();的第一个实例未被识别。

2)它似乎记得我在游戏中的最后一次猜测。如果我关闭页面并重新打开它,我会立即得到一条我猜的太高或太低的消息,甚至在做出猜测之前。任何建议表示赞赏!

<?php
                    session_start();

                    $randomNum = $_SESSION['randomNum'];
                    $guess = $_POST['guessTB'];

                    if(!isset($_SESSION['randomNum']))
                    {
                        $_SESSION['randomNum'] = rand(1,1000);
                    }
                    else
                    {   
                        if($guess < $randomNum)
                        {
                            echo "<p>Your Guess is Too Low! Try Again!</p>";
                        }

                        else if($guess > $randomNum)
                        {
                            echo "<p>Your Guess is Too High! Try Again!</p>";
                        }

                        else
                        {
                            echo "<p>You Won!</p>";
                            $_SESSION = array();
                            session_destroy();
                        }
                    }           

                    echo "<p>Guess: $guess</p>";
                    echo "<p>Random Number: $randomNum</p>";
                ?>  

1 个答案:

答案 0 :(得分:2)

你可以做的是使用会话。在每次加载检查时,如果您在会话中设置它并且如果未设置它,则生成新数字并进行设置,然后检查用户输入的内容并比较这两个数字。这也可以用cookies完成。你可以做的另一件事是使用js。在加载时将生成的数字存储在某些js变量中,并且不使用表单。单击按钮,获取输入字段的值,并与存储在变量中的值进行比较。