簡體   English   中英

PHP-如何存儲變量狀態?

[英]PHP - How can I store variable states?

我正在學習php,並且很難找到答案。 提交必須再次調用頁面的表單后,如何保存變量? (措辭怪異?)我試圖保留$ num_to_guess和$ num_tries。 我遵循以下說明,發現在html塊中將$ num_tries作為隱藏輸入包括在內,但是在提交表單后它仍然不會遞增。

提交后如何保存$ num_to_guess和$ num_tries?


<?php
  if ( !isset ( $num_tries ) )
  {
    $num_to_guess = rand(1, 100);
  }
  $num_tries = ( isset ( $_POST['num_tries'] ) ) ? $num_tries + 1 : 0;
  if ( !isset ( $_POST['guess'] ) ) {
    $message = "Welcome to the guessing machine!";
  } elseif ( !is_numeric ( $_POST['guess'] ) ) {
    $message = "I don't understand that response...";
  } elseif ( $_POST['guess'] == $num_to_guess ) {
    $message = "Well done! That is the number!";
  } elseif ( $_POST['guess'] < $num_to_guess ) {
    $message = $_POST['guess'] . " is too small!";
  } elseif ( $_POST['guess'] > $num_to_guess ) {
    $message = $_POST['guess'] . " is too big!";
  } else {
    $message = "I am terribly confused...";
  }
?>

<!DOCTYPE html>
<html>
<head>
  <title>A PHP Number Guessing Script</title>
</head>

<body>
  <h2>The Guessing Game</h2>
  <p>1-100<br/>
    Guess number: <?php echo $num_tries ?></p>
  <h3><?php echo $message; echo $num_to_guess?></h3>
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    <p><label for="guess">Type your guess here:</label><br/>
      <input type="text" id="guess" name="guess" /></p>
    <input type="hidden" name="num_tries" value="<?php echo $num_tries; ?>"/>
    <button type="submit" name="submit" value="submit">Submit</button>
  </form>
</body>
</html>

您將需要將它們設置為這樣的會話變量

session_start();
$_SESSION['guess'] = $num_to_guess;
$_SESSION['tries'] = $num_tries;

然后訪問它們,您將...

session_start();
$guess = $_SESSION['guess'];
$tries = $_SESSION['tries'];

如果我了解您的要求,那么您正在尋找$ _SESSION! $ _SESSION允許您在網站上的用戶會話期間存儲變量。 會話通常設置為二十分鍾。 全局$ _SESION變量基本上是要為用戶保留的key => values的關聯數組。 這應該可以幫助您。

在這里查看更多信息。 讀一讀。 它為您很好地概述了會話的工作方式以及一些示例。

您需要使用會話。

在代碼的第一行中,添加session_start ,然后可以使用超級全局$ _SESSION來存儲和檢索數據。

會話的第一個請求將必須初始化變量,后續的請求可以讀取或更新它們。

<?php

// Start the session before sending any output to the browser
// This sets a cookie value that identifies the session
session_start();

// This ensures that the number to guess is only set once
if (!isset($_SESSION['number_to_guess'])) {
    $number_to_guess = $_SESSION['number_to_guess'] = rand(0,100);
}

// This ensures the number of tries is properly initialized
if (!isset($_SESSION['guesses'])) {
    $_SESSION['guesses'] = 0;
} else {
    // Increment guesses
    $_SESSION['guesses']++;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM