Простой POST случайный номер в PHP - PullRequest
0 голосов
/ 30 марта 2010

Хорошо, я пытаюсь что-то задать, чтобы задать вам вопросы случайного умножения. Теперь он задает вопросы в порядке. Генерирует случайные вопросы нормально. Но когда он перезагружает страницу, случайные числа различаются ...

как я могу это исправить?

<?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 ]

2 голосов
/ 30 марта 2010

При перезагрузке страницы $ rndnum1 и $ rndnum2 устанавливаются на новые случайные числа с помощью функции rand (). Вот почему они не остаются прежними. Попробуйте передать исходные случайные числа вместе с POST и вычислите числа из $ _POST, прежде чем проверять правильность ответа.

Чтобы сделать это, убедитесь, что вы включили следующую строку для обеих случайных величин в форму представления:

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

Затем при следующей загрузке страницы после отправки формы ответа получите числа с $_POST['rndnum1'] и т. Д.

1 голос
/ 30 марта 2010

Включить сгенерированные случайные числа в скрытые поля формы, чтобы они отправлялись на сервер.

Например, только внутри <form>:

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

Затем в PHP, когда вы обрабатываете форму, используйте $_POST['rand1'] и $_POST['rand2'], чтобы получить исходные числа, умножьте и сравните с данным ответом пользователя.

0 голосов
/ 30 марта 2010

Как-то так должно работать.

<?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>
0 голосов
/ 30 марта 2010

добавьте srand (0) в начало вашего кода.

на самом деле вам может понадобиться использовать cookie, который инициализирован случайным образом, а затем передать его srand ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...