PHP表单在提交时重新加载,但重置变量
我的任务是制作一个猜谜游戏。生成一个随机数,用户尝试猜测它。它告诉您应该尝试更大的数字还是更小的数字,最终用户会猜到正确的数字PHP表单在提交时重新加载,但重置变量,php,html,forms,Php,Html,Forms,我的任务是制作一个猜谜游戏。生成一个随机数,用户尝试猜测它。它告诉您应该尝试更大的数字还是更小的数字,最终用户会猜到正确的数字 <?php session_start(); if(empty($_SESSION['num_to_guess'])) { $_SESSION['num_to_guess'] = mt_rand(1,99); } if (!isset($_POST['guess'])) { $message = "Welcome to the Odd Number G
<?php
session_start();
if(empty($_SESSION['num_to_guess'])) { $_SESSION['num_to_guess'] = mt_rand(1,99); }
if (!isset($_POST['guess'])) {
$message = "Welcome to the Odd Number Guessing Game!";
}
elseif (!is_numeric($_POST['guess'])) { //is not numeric
$message = "I don't understand that response. Please enter a number.";
}
elseif ($_POST['guess'] == $_SESSION['num_to_guess']) { //matches
$message = "Well done! You've found the secret number. Now try to guess another.";
$_SESSION['num_to_guess'] = mt_rand(1,99);
}
elseif ($_POST['guess'] < $_SESSION['num_to_guess']) { //greater
$message = "Try a larger number!";
}
elseif ($_POST['guess'] > $_SESSION['num_to_guess']) { //lesser
$message = "Try a smaller number!";
}
else {
$message = "I'm terribly confused.";
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Odd Number Guessing Machine!</title>
</head>
<body>
<h1><?php echo $message; ?>
<?php echo $_SESSION['num_to_guess']; ?>
</h1>
<form action = "<?php echo $_SERVER['PHP_SELF']; ?>" method = "POST">
<p><label for="guess">Try to guess an odd number between 1 and 99:</label> <br/>
<input type="text" id="guess" name="guess" /></p>
<button type="submit" name="submit" value="submit">Submit</button>
</form>
</body>
</html>
现在与浏览器兼容
<?php
session_start();
$url_of_page = $_SERVER['REQUEST_URI'];
if(!isset($_SESSION['correct_number'])){
// Create random number only when the previous one has been correctly guessed
$number_to_guess = rand(0,9);
$_SESSION['correct_number'] = $number_to_guess;
}
if(isset($_SESSION['correct_number'])){
$num_to_guess = $_SESSION['correct_number'];
}
if(isset($_POST['guess'])){
$guessed_number = trim($_POST['guess']);
$reg_exp = '/^([0-9]+)$/';
$reg_exp_match = preg_match($reg_exp,$guessed_number);
}
if(isset($_POST['submit'])){
if(isset($reg_exp_match)){
if(!$reg_exp_match){
$message = "Enter a number";
}else{
if($guessed_number < $num_to_guess){
// is small
$message = "Try a larger number!";
}elseif($guessed_number > $num_to_guess){
// is large
$message = "Try a smaller number!";
}elseif($guessed_number == $num_to_guess){
//matches
$message = "Well done...You got it";
$new_game = TRUE;
unset($_SESSION['correct_number']);
// A new number can now be created
}
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Odd Number Guessing Machine!</title>
</head>
<body>
<h3>Welcome to the Guessing Machine!</h3>
<p>
<?php
if(isset($new_game) && ($new_game == TRUE)){ // The correct number
if(isset($message) && isset($url_of_page)){
echo $message . '. <a href="' . $url_of_page . '">Start a new game</a>';
}
}else{ // Not the correct number
if(isset($message)){ echo $message; }
}
?>
</p>
<form action="<?php if(isset($url_of_page)){ echo $url_of_page; } ?>" method="POST">
<p>
<label for="guess">Enter a number, 0 to 9:</label> <br/>
<input type="text" id="guess" name="guess" />
</p>
<button type="submit" name="submit" value="submit">Submit</button>
</form>
</body>
</html>
奇数猜谜机!
欢迎来到猜谜机!
它只是说不……一次又一次地不正确。不让我知道我是热还是冷。:)好啊那我需要一些时间。以后谢谢你,同时我会尽力了解你做了什么!你会发现我缩小了随机数的范围。在它工作之后,应该是适当的时间来增加范围。我尝试了你的新代码,它仍然给出相同的响应。事实上,逻辑是可行的。如果我从0-9全部尝试,我可以猜到数字,但没有提示猜测是高还是低。请将每个$num_to_guess替换为$num_SESSION['num_to_guess']。永远不要忘记将first assign更改为:if(empty($_SESSION['num_to_guess']){$_SESSION['num_to_guess']]=42;}这会在正确猜测数字时更改数字,但它总是重置回42。if(empty($_SESSION['num_to_guess'])阻止再次分配给42,并且它只定义了第一次。我尝试了if(empty)函数。由于某种原因,它仍然停留在42上。添加会话_start();之后