2012-02-24 54 views
0

所以現在我所嘗試的是從數據庫表格中的一組問題中隨機獲取一個問題,並將它們顯示在表單上以供人回答。如果這是一件壞事,請讓我知道我應該如何去做。我想這可能會導致濫用數據庫的一種簡單方法,或許吧?我不確定。表單中的隨機挑戰?

那麼,現在我在同一頁上有窗體和表單處理。問題是,提交時,它會刷新並改變問題,這意味着除非他們幸運,否則答案是錯誤的。我不確定如何去設置它,以便我可以生成隨機問題,並確保他們提交表單時能夠正確解決問題,而無需更改答案。我已經使用javascript設置了表單驗證,但這不會對機器人有幫助。

所以基本上,我有什麼是

check stuff, connect to databse, etc 

$random = mysql_fetch_row(mysql_query("select * from questions order by rand() limit 1")); 

clean submitted data, check, submit, etc. 

在窗體中,我有

General form stuff, name, email, etc 
<label for="question"><?php echo $random_row[1]; ?></label> 
<input type="text" name="question" id="question" required="required"/> 

所以你可以看到什麼,我想這樣做,如果這是以前沒有明確。

回答

1

你的努力看起來很完美。

您需要在會話中存儲問題ID,因爲當您在下一頁中提交表單數據時,需要詢問問題。

因此,您將通過問題編號存儲在會話中獲得問題詳細信息,並在提交的頁面上比較答案。

希望這可能有所幫助。

+0

發佈後,我想到了更多的問題,這就是我想出的結論。它的工作原理,但我不喜歡不得不改變UX的頁面。 – townie 2012-02-24 05:39:02

1

如果你真的想處理輸入和提交相同的頁面,你會最終得到這樣的結構。

if (!empty($_POST)) 
{ 
    // there is $_POST data, so there must be a submission 
} 
else 
{ 
    // there is no $_POST data, so the user needs to input 
} 

要知道用戶在提交中回答哪個問題,請在表單中添加一個隱藏輸入。

<form ...> 
    <input type="hidden" name="question_id" value="<?php echo $question_id; ?>" /> 
    <input type="text" name="answer" /> 
</form> 

當收到提交時,可以使用question_id在數據庫中查找正確的答案。比較用戶給出的答案的正確答案。

如果您需要關於特定零件的詳細信息,請詳細詢問。