2012-11-08 106 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";