2015-12-09 59 views
1

我正在學習php,我很難找到答案。在我提交一個必須再次調用頁面的表單後,如何保留一個變量? (奇怪的措辭?)我試圖保持$ num_to_guess和$ num_tries。我正在按照我發現的說明將$ num_tries作爲隱藏輸入包含在html塊中,但在提交表單後它仍然不會增加它。PHP - 如何存儲變量狀態?

如何在提交後保存$ 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> 

回答

3

你會想這些設置會話變量這樣

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

然後訪問它們,你會怎麼做?

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

如果我米理解你在問什麼,然後你正在尋找$ _SESSION! $ _SESSION允許您在網站上的用戶會話期間存儲變量。會話通常設置爲20分鐘。全局的$ _SESION變量基本上是一個您想要爲用戶保存的key =>值的關聯數組。這應該會幫助你。

看一看over here瞭解更多信息。給它一個閱讀。它爲您提供了會議工作方式的一個很好的概要,以及一些例子。

+0

除了_session $ /餅乾,你必須使用JS緩存/的localStorage的選擇,如果你使用像AngularJS或EmberJS良好的客戶端應用程序框架。然而,這些服務器控制將更少。但是,如果您想要將其更改/存儲在服務器中或將變量存儲在服務器中,那麼會話或日誌文件或db(基於數據量)可能是您最好的選擇。有很多方法可以解決這個問題。祝一切順利。讓我們知道你是否正確實施或需要更多幫助。 – Gary

1

您需要使用會話。

在代碼中的第一行,添加在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']++; 
}