2014-09-11 62 views
0

我有一个表单,我已经为此自定义安全问题。 它会随机的代码PHP的比较值无法正常工作

$rand1 = rand (1,20); 
$rand2 = rand (1,20); 
$randsvar = $rand1 + $rand2; 
$securefråga = "Vad blir " . $rand1 . "+" . $rand2; 

,然后我分析它在我的代码

$_POST["secure"] 

我把它们都转换为整数,并比较两者的转换$ randsvar和形式的问题值与海誓山盟的代码

$intSecure = intval($secure); 
$intRand = intval($randsvar); 
if($intSecure == $intRand) 
{ 
    $errorNummer++; 
} 
else 
{ 
    $secureErr = "wrong answer"; 
} 

然而,即使我键入正确的答案它给我的错误信息,我在做什么错?

+0

'$ intSecure'包含什么? – Sadikhasan 2014-09-11 08:27:09

+0

在初始加载时保存'$ randsvar'在会话中,然后提交,比较用户输入 – Ghost 2014-09-11 08:28:34

+0

重新加载站点 - 新$ randsvar – 2014-09-11 08:30:27

回答

1

您可以使用会话来保存当前操作。如果提交,请将用户输入与保存的会话总数进行比较。粗糙的例子:

if(!isset($_POST['submit'])) { 
    $_SESSION['rand1'] = rand(1, 20); 
    $_SESSION['rand2'] = rand(1, 20); 
    $_SESSION['randsvar'] = $_SESSION['rand1'] + $_SESSION['rand2']; 
} else { 
    $input = $_POST['input']; 
    if($input == $_SESSION['randsvar']) { 
     echo 'correct'; 
    } else { 
     echo 'incorrect'; 
    } 
    exit; 
} 

?> 

<form method="POST"> 
    <label> 
     <?php echo $_SESSION['rand1'] . ' + ' . $_SESSION['rand2'] . ' = '; ?> 
     <input type="text" name="input" /> 
     <input type="submit" name="submit" /> 
    </label> 
</form>