2014-01-30 110 views
1

我正在尝试使用PHP创建一个简单的数学测验。它意味着生成两个随机数字供用户乘。如果用户输入正确的答案,则意味着将其重定向到祝贺html页面(使用标题)。但是,如果他们得到错误,问题的目的是改变为一个消息,说明如此,并给他们另一个机会来回答。保留,重定向和重新加载

除了一件事情之外,我已经掌握了所有工作,除了一件事情,在每次不正确的提交后都保留了问题和答案。我怎样才能阻止这种情况发生?我该如何停止脚本每次生成新的问题/答案?我使用了隐藏文本字段,但他们似乎没有办法。

+0

请注意''_SERVER ['PHP_SELF']'易受代码注入的影响。使用别的东西。 – Linblow

回答

2

你的代码假设你传递$ NUM1和$ NUM2在$ _ POST,但也有对他们没有隐藏字段:

<input type = "hidden" name = "num1" value="<?php echo $num1; ?>"/> 
<input type = "hidden" name = "num1" value="<?php echo $num2; ?>"/> 

一旦你添加这些输入,问题应该正确显示。

为了记录正确的答案,您需要考虑到$ answer变量当前存储乘以随机数的结果,而不是已发布的结果。你可以在你的代码开始处尝试以下内容:

if (!isset($_POST['num1'])) { 
    $num1 = Rand(1,10); 
    $num2 = Rand(1,10); 
} else { 
    $num1 = $_POST['num1']; 
    $num2 = $_POST['num2']; 
} 
$answer = $num1 * $num2; 
+0

感谢您的评论。实际上,我在当前代码中确实有两行,但是在将代码提交到此处并忘记删除相应的POST代码之前,我编辑了它们。无论如何,它仍然无法正常工作。 – Alex

+0

究竟是什么结果是错误的?它显示“你错了”的消息?它是否显示旧数字的问题?如上所述,我认为答案输入值是错误的,因为您将随机生成的$ num1和$ num2变量相乘,而不是已发布的变量。 –

+0

“你错了。”的确显示出来,并且有机会输入正确的答案。但是脚本似乎没有存储和比较最初的答案和用户的答案。因此,如果用户第一次输入错误的答案,那么就会出现“你错了”,并尝试再次输入答案,自从点击提交以来,真实(初始答案)已经发生了变化。基本上,我需要防止它改变。 – Alex