PHP中的简单POST随机数问题

时间:2010-03-30 00:16:52

标签: php math forms post

好的,我正在尝试用一些东西来问你随机的乘法问题。现在问问题很好。生成随机问题。但是当它重新加载页面时,随机数是不同的......

我该如何解决这个问题?

<?php 

$rndnum1 = rand(1, 12); 
$rndnum2 = rand(1, 12);

echo "<h3>". $rndnum1 . " x ";
echo $rndnum2 . "</h3>";

if($_SERVER["REQUEST_METHOD"] == "GET") {

 $answer=0;

}
else if($_SERVER["REQUEST_METHOD"] == "POST") {

 $answer=trim($_POST["answerInput"]);
 $check=$rndnum1*$rndnum2;

 if($answer==$check) {

  echo "Correct!";

 }
 else {

  echo "Wrong!";

 }


}

?>

<form action="<?php echo $_SERVER['PHP_SELF'];  ?>" method="post" >
 <table>
  <tr>
   <td>
    First Name:&nbsp;
   </td>
   <td>
    <input type="text" name="answerInput" value="<?php echo $answer; ?>" size="20"/>
   </td>
   <td>
    <?php echo $answerError; ?>
   </td>
  </tr>
  <tr>
   <td class="signupTd" colspan="2">
    <input type="submit" name="submit" value="Submit"/>
   </td>
  </tr>
 </table>
</form>

4 个答案:

答案 0 :(得分:2)

当你重新加载页面时,$ rndnum1和$ rndnum2通过rand()函数设置为新的随机数。这就是他们不能保持不变的原因。尝试将原始随机数与POST一起传递,并在检查答案是否正确之前计算$ _POST中的数字。

为此,请确保在提交表单中为随机变量包含以下行:

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

然后,在提交答案表单后的下一次页面加载中,使用$_POST['rndnum1']等获取数字。

答案 1 :(得分:1)

在隐藏的表单字段中包含生成的随机数,以便将它们提交给服务器。

例如,仅在<form&gt;:

<input type="hidden" name="rand1" value="<?=$rndnum1?>">
<input type="hidden" name="rand2" value="<?=$rndnum2?>">

然后在PHP中,当您处理表单时,使用$_POST['rand1']$_POST['rand2']来检索原始数字,相乘,然后与用户给出的答案进行比较。

答案 2 :(得分:0)

将srand(0)添加到代码顶部。

实际上您可能想要使用随机初始化的cookie,然后将其传递给srand()

答案 3 :(得分:0)

这样的事情应该有效。

<?php 
@session_start();

if($_SERVER["REQUEST_METHOD"] == "GET")
{
    $answer=0;
}

if (!$_POST['submit'])
{
    $_SESSION['rndnum1'] = rand(1, 12);
    $_SESSION['rndnum2'] = rand(1, 12);
}
else
if($_SERVER["REQUEST_METHOD"] == "POST")
{
    $answer = trim($_POST["answerInput"]);
    $check = $_SESSION['rndnum1']*$_SESSION['rndnum2'];
    if( $answer == $check)
    {
        $msg = "Correct!";
    }
    else
    {
        $msg = "Wrong!";
    }
}
echo "<h3>". $_SESSION['rndnum1'] . " x " . $_SESSION['rndnum2'] . "</h3>";
if ($_POST['submit'])
{
    echo $msg;
}





?>

<form action="<?php echo $_SERVER['PHP_SELF'];  ?>" method="post" >
 <table>
  <tr>
   <td>
    First Name:&nbsp;
   </td>
   <td>
    <input type="text" name="answerInput" value="<?php echo $answer; ?>" size="20"/>
   </td>
   <td>
    <?php echo $answerError; ?>
   </td>
  </tr>
  <tr>
   <td class="signupTd" colspan="2">
    <input type="submit" name="submit" value="Submit"/>
   </td>
  </tr>
 </table>
</form>