2014-01-30 61 views
1

我正在嘗試使用PHP創建一個簡單的數學測驗。它意味着生成兩個隨機數字供用戶乘。如果用戶輸入正確的答案,則意味着將其重定向到祝賀html頁面(使用標題)。但是,如果他們得到錯誤,問題的目的是改變爲一個消息,說明如此,並給他們另一個機會來回答。保留,重定向和重新加載

除了一件事情之外,我已經掌握了所有工作,除了一件事情,在每次不正確的提交後都保留了問題和答案。我怎樣才能阻止這種情況發生?我該如何停止腳本每次生成新的問題/答案?我使用了隱藏文本字段,但他們似乎沒有辦法。

+0

請注意''_SERVER ['PHP_SELF']'易受代碼注入的影響。使用別的東西。 – Linblow

回答

2

你的代碼假設你傳遞$ NUM1和$ NUM2在$ _ POST,但也有對他們沒有隱藏字段:

<input type = "hidden" name = "num1" value="<?php echo $num1; ?>"/> 
<input type = "hidden" name = "num1" value="<?php echo $num2; ?>"/> 

一旦你添加這些輸入,問題應該正確顯示。

爲了記錄正確的答案,您需要考慮到$ answer變量當前存儲乘以隨機數的結果,而不是已發佈的結果。你可以在你的代碼開始處嘗試以下內容:

if (!isset($_POST['num1'])) { 
    $num1 = Rand(1,10); 
    $num2 = Rand(1,10); 
} else { 
    $num1 = $_POST['num1']; 
    $num2 = $_POST['num2']; 
} 
$answer = $num1 * $num2; 
+0

感謝您的評論。實際上,我在當前代碼中確實有兩行,但是在將代碼提交到此處並忘記刪除相應的POST代碼之前,我編輯了它們。無論如何,它仍然無法正常工作。 – Alex

+0

究竟是什麼結果是錯誤的?它顯示「你錯了」的消息?它是否顯示舊數字的問題?如上所述,我認爲答案輸入值是錯誤的,因爲您將隨機生成的$ num1和$ num2變量相乘,而不是已發佈的變量。 –

+0

「你錯了。」的確顯示出來,並且有機會輸入正確的答案。但是腳本似乎沒有存儲和比較最初的答案和用戶的答案。因此,如果用戶第一次輸入錯誤的答案,那麼就會出現「你錯了」,並嘗試再次輸入答案,自從點擊提交以來,真實(初始答案)已經發生了變化。基本上,我需要防止它改變。 – Alex