2013-02-03 79 views
0

我想製作腳本,允許用戶猜測數字,直到碰到正確的一個。這個想法是,PHP「想象」一個數字使用rand()。用戶有無限數量的點擊。但問題是用戶必須在他的任務開始時找到與php「想象」相同的數字,並且每次輸入新數字並始終輸出新隨機數時,我的腳本都會重新加載。我應該怎麼做才能解決這個問題?提前致謝。如何停止重新加載頁面與每個新的表單輸入(提交)在PHP?

$r= rand("1","10"); 

if (isset($_POST['unos'])){ 

$unos = $_POST['unos']; 
if ($unos==$r){ 
echo "Congratulations you did not miss the center"; 
} 
elseif ($unos<$r){ 
echo "your number is less then quested number</br>try again"; 

} 
elseif ($unos>$r){ 
echo "your number is higher then quested number</br>try again"; 
} 

} 
else{ 
echo "Go!"; 
} 

HTML

<form action="?" method="post"> 
<input type="number" name="unos" id="unos"> 
<input type="submit" value="Start"> 
</form> 
+0

使用會話來保存整個應用程序中的數據。 – ShuklaSannidhya

+0

,我也建議在會話中存儲嘗試次數。 – ShuklaSannidhya

+0

謝謝,你給了我寶貴的提示,現在我將詳細分析「$ _SESSION []」。 – natttan

回答

1

你可以把隨機值在會話中。這樣,整個任務中的數字將保持不變。完成任務後,您可以取消設置值。 會話中的值對客戶端不可見。其他選項,例如在表單中的隱藏字段中設置值仍然可以位於源中。

一個例子;

session_start(); 
$r= isset($_SESSION['random']) ? $_SESSION['random'] : rand("1","10"); 

if (isset($_POST['unos'])){ 

$unos = $_POST['unos']; 
if ($unos==$r){ 
echo "Congratulations you did not miss the center"; 
} 
elseif ($unos<$r){ 
echo "your number is less then quested number</br>try again"; 

} 
elseif ($unos>$r){ 
echo "your number is higher then quested number</br>try again"; 
} 

} 
else{ 
unset($_SESSION['random']); //or session_destroy(); 
echo "Go!"; 
} 
1

您可以使用PHP會議

<?php 
    session_start(); 
    if(!isset($_SESSION["numbertoguess"])){ 
     $_SESSION["numbertoguess"] = generate_randomNumber(); 
    } 

,然後檢查用戶輸入等於$ _SESSION [「numbertoguess」] 如果你也不想重新載入頁面,想想使用ajax。與jquery非常方便

here介紹PHP會話

+0

謝謝!這真的很有幫助。 – natttan

1

一般來說PHP是不是真的用來解決這個問題的正確的事情。相反,你應該使用JavaScript。但是,如果您希望它完全安全,則可能需要使用PHP,但您需要從靜態源(例如數據庫或文件)中調用該數字。例如,當用戶進入該頁面時,將該號碼寫入文件文件[會話ID],其中會話ID是會話ID,您可以使用session_id()。然後將隨機數字寫入該文件並檢查。最後刪除文件,在用戶退出該頁面的情況下,結合unlink()ignore_user_abort()。用數據庫做上述更好,但我不會假設任何額外的技能。

如果你不想保留隨機數,你也可以在會話中存儲隨機數。

相關問題