2012-11-08 156 views
0

我有這兩個文件。根據答案添加值

a.php只會

<? 

    echo " 
     <form action = 'B.php' method = 'post'> 
      5+5 = ? 
      Write answer: <input type = 'text' name = 'op1'> 

      10+10 = ? 
      Write answer: <input type = 'text' name = 'op2'> 
     </form> 

    "; 
?> 

B.php

<? 

$op1 = $_REQUEST ['op1']; 
$op2 = $_REQUEST ['op2']; 

if ($op1 == '10'){ 
    echo "Right answer. 2p."; 
    $mark = '2'; 
}else{ 
    echo "Wrong answer. 0p."; 
    $mark2 = '0'; 
} 

if ($op2 == '20'){ 
    echo "Right answer. 2p."; 
    $mark3 = '2'; 
}else{ 
    echo "Wrong answer. 0p."; 
    $mark4 = '0'; 
} 

?> 

我怎樣才能讓一個表達式,使總量補充的嗎? 我寫了一個簡單的例子,我有20個操作,我該怎麼做,取決於答案添加2點或1點或0,最後寫結果? (這就像從0到10的考試)

謝謝。

回答

1

嘗試將變量設置爲0,然後添加點。這是通過您的if聲明添加東西的最基本方式。

<?php 

$op1 = $_REQUEST ['op1']; 
$op2 = $_REQUEST ['op2']; 
$total=0; 
if ($op1 == '10'){ 
    echo "Right answer. 2p."; 
    $mark = '2'; 
    $total+=2; 
}else{ 
    echo "Wrong answer. 0p."; 
    $mark2 = '0'; 
} 

if ($op2 == '20'){ 
    echo "Right answer. 2p."; 
    $mark3 = '2'; 
    $total+=2; 
}else{ 
    echo "Wrong answer. 0p."; 
    $mark4 = '0'; 
} 
echo "Total points: $total"; 
?> 
1

雖然提供了一個答案,但我要指出的是你的代碼錯誤,那就是,PLENTY

首先,當您可以直接使用HTML時,爲什麼需要回顯HTML?迴應大量的HTML是代碼爲UGLY的一種做法。

其次,您正在使用if語句爲每個問題和答案。這沒有意義:爲每個問題添加10行代碼。第三,千萬不要使用$_REQUEST

我會建議維護一個數據庫或一系列的問題和答案。例如,

$q_array = Array(
    array(
     "question" => "abc", 
     "answer" => "455", 
    ),.... 
) 

然後,您可以回顯問題,並使用循環檢查答案。

+0

不錯的地方,除了'$ _REQUEST'是個不好的模因,它需要死掉,它只是當前配置中GET和POST的混合。希望你所指的)早已過去,而這種恐嚇行爲幾乎不適用於其常見用例。 – mario

+0

@mario:我不知道cookie固定問題。而我遠離'$ _REQUEST'的原因是「get」方法的暴力破解比'$ _POST'更容易。 – Shubham

+0

這是真的,但不是一個好的避開理由。通過網頁瀏覽器和鏈接可以更容易地在每個GET中走私參數(認爲''爲請求forgerey漏洞利用),但這不會使POST變量更安全;這往往是一種錯誤的安全感。 OTOH,在任何時候都允許雙輸入,所以如果登錄表單只應用POST,那麼只有使用$ _POST纔有意義。(對於非寫入API,由於方便,混合輸入是恕我直言所喜歡的。) – mario

0

延伸shubam答案:
$ q_array =陣列(

"op1"=>"10", 
op2=>"20" 

) 

陣列的關鍵是在形式和陣列的值的輸入類型字段名稱的正確答案

$total=0; 
foreach($_REQUEST as $key=>$val) 
{ 

if($q_array[$key]=$val) 
{ 

    echo "Right answer. 2p."; 
    $mark = '2'; 
    $total+=2; 
    echo"<br>"; 

} 


} 

echo "Total points: $total";