[英]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.