Я изучаю php, и мне сложно найти ответы на это. Как сохранить переменную после отправки формы, которая должна снова вызвать страницу? (Странная формулировка?) Я пытаюсь сохранить $ num_to_guess и $ num_tries. Я следую инструкциям, которые, как я нашел, включают $ num_tries в качестве скрытого ввода в html-блок, но он по-прежнему не увеличивает его после отправки формы.
Как сохранить $ num_to_guess AND $ 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 в основном представляет собой ассоциативный массив ключей => значений, которые вы хотите сохранить для пользователя. Это должно помочь вам.
Взгляните сюда для получения дополнительной информации. Дайте ему прочитать. Это дает вам хорошее объяснение того, как работают сеансы, а также некоторые примеры.
Вам нужно использовать сеансы.
В первой строке вашего кода добавьте 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']++;
}