2012-04-28 43 views
0

我有一個多項選擇題測驗它通過URL的test2score.php頁面讀取上發送一個可能的答案是這樣

​​

,並嘗試將值比較喜歡這個

$ans = mysql_result(mysql_query('select c_answer from quiz where quiz_id = "'.$_GET['q'].'"'),0); 
    if ($_POST['answer'] == $ans){ 
     echo "You got it right!"; 
    }else if ($_POST['answer'] <> $ans){ 
     echo "You got it wrong!"; 
    } 

其中c_answer是存儲在數據庫中正確的答案,但即使當我選擇了正確的答案,並張貼它仍然迴響「你聽錯了」

任何幫助,將不勝感激。

+0

您的測驗只有一個問題 – 2012-04-28 06:24:48

+0

ABI檢查答案 – 2012-04-28 06:25:29

+1

sql注入該值: 'example.com/test2score.php?q=1「和」1 = 1「,爲什麼不在用戶會話中保留用戶的答案,那麼你就不必POST /通過任何東西 – 2012-04-28 06:30:00

回答

0

您的形式method="post"是職位和$_GET['q']您接收值請糾正任一個 或使用

$_REQUEST['q']` 
0

使用隱藏域Q和值張貼到你的操作頁面,並接收使用

該值
$_POST['q'] and use that in your query. 

謝謝。

+0

嘗試使用隱藏字段,仍然收到回聲「你弄錯了」 – ABI 2012-04-28 08:10:56

+0

現在你必須檢查'$ _POST ['answer']'值。它來自單選按鈕還是複選框?你應該打印這個值並手動比較數據庫的值是否完全相同。 – 2012-04-28 08:22:25

+0

發現罪魁禍首,echo $ _POST ['answer'];沒有得到正確的答案從無線電帖子..我使用這個代碼來拉起無線電foreach($行爲$ key => $ value){回聲「」 $ value。「
」; } – ABI 2012-04-28 08:38:58

0

爲什麼在$ _POST表單的操作中使用$ _GET請求?既然你不擔心你的用戶看到的q值那麼爲什麼不乾脆把一個隱藏的輸入形式與q結果:

<input type="hidden" value=<?php echo $quiz_id ?> name="q" /> 

然後在您的查詢,檢查$_POST['q']

似乎理智,更合乎邏輯的方式來實現這個

+0

嘗試使用隱藏字段,仍然收到回聲「你弄錯了」 – ABI 2012-04-28 08:10:29

0

,而不是從表單動作傳遞測驗ID從隱藏的表單字段傳遞

像下面 集FO RM行動

action="test2score.php" 

,並採取隱藏的表單字段作爲

<input type="hidden" name="q" value=<?php echo $quiz_id; ?> /> 

,並得到像下面

$_POST['q']; 
+0

嘗試使用隱藏字段,仍然是回聲「你弄錯了」 – ABI 2012-04-28 08:10:03