0

私は数字当てゲームを構築しており、ユーザーが正しい推測を送信するまで、ランダム化されたターゲット番号を保持するセッション変数を作成する必要があります。ユーザーが正解を送信した後、試行回数を出力する必要もあります。

セッション変数を設定し、隠しフィールドを使用してカウンターを保持しました。推測を送信したときに隠しフィールドが機能するかどうかはわかりません。私のコードは、check() 関数の最初の if ステートメントを常に出力します。

セッション変数(そしてもちろん私のコード)と関係があると思いますが、わかりません。私はこれに2日間取り組んでいて、フラストレーションを感じています。どんな助けでも素晴らしいでしょう。以下は私の完全なコードです:

    <?php session_start() ?>
    <!DOCTYPE HTML>
    <html>
    <head>
    <title>Number Guessing Game</title>
    </head>
    <body>
      <h1>Guess the number</h1>
      <p>I'm thinking of a number between 1 and 5. Can you guess what it is?<br>
        In less than 3 tries?</p>
      <?php
        extract($_REQUEST);
        error_reporting(E_ALL & ~E_NOTICE);
        // check to see if this is start of game
        if (filter_has_var(INPUT_POST, "guess")) {
          check();
        } else {
          setTarget();
        } //end if
        // set targetNum session variable
        // increment counter by 1

        function setTarget() {
          $targetNum = rand(1, 5);
          $_SESSION["targetNum"] = $targetNum;
          $counter++;
        print <<<HERE
          <form action="" method="post">
            <input type = "text"
                   name = "guess">
            <input type = "hidden"
                   name = "counter"
                   value = "$counter">
            <h2>Target Number: $targetNum</h2>
            <h3>The counter is at: $counter</h3>
            <br>
            <button type = "submit">
              SUBMIT GUESS
            </button>
          </form>
    HERE;
    }

        function check() {
          global $counter;
          print <<<HERE
            <form action="" method="post">
            <input type = "text"
                   name = "guess"
                   value= "$guess">
            <input type = "hidden"
                   name = "counter"
                   value = "$counter">
            <h2>Target Number: $targetNum</h2>
            <h3>The counter is at: $counter</h3>
            <br>
            <button type = "submit">
              SUBMIT GUESS
            </button>
            </form>
    HERE;
        if ($guess == $_SESSION['$targetNum']) {
          print "<h3>Awesome. You guessed it in $counter attempt(s)</h3>";
          unset($_SESSION["targetNum"]);
          $count = 0;
          print "<a href='numberGuessingGame.php'>TRY AGAIN</a>";
        } else if ($guess > $_SESSION['$targetNum']) {
          print "<h3>Too high. Guess again.</h3>";
        } else if ($guess < $_SESSION['$targetNum']) {
          print "<h3>Too low. Guess again.</h3>";
        } else {
          print "I don't know what that is...";
        }
    }
    ?>
    </body>
    </html>
4

2 に答える 2

0

$guess変数が POST 値に設定されることはありません (修正: 抽出を使用していますが、使用しないことをお勧めします) 。「$」を追加すると、セッション配列キーの値も変更されます。

$guess = $_POST['guess'];
if ($guess == $_SESSION['targetNum']) {
于 2013-10-13T17:30:39.483 に答える