Вопрос:

Сравнение целых в математической игре PHP

php math post int operators

40 просмотра

1 ответ

75 Репутация автора

У меня есть простая математическая игра, которую я сделал, где пользователь может ответить на вопрос, а затем он проверяет правильность введенного ответа.

Я хочу, чтобы он сказал правильный, когда ответ правильный, и неправильный, если это не так. До сих пор я не видел, чтобы отображалась правильная строка, даже когда я знаю, что ответ, который я ввел, является правильным.

Я верю, что это как-то связано с моим $_POST, но я не совсем уверен. Как я могу это исправить?

<html>
<head><title>Addition php</title></head>
<body>
<h1>MATH GAME WOOOO</h1>

    <form action="<?php $PHP_SELF?>" method="POST">
            <input type="text" name="guess"><br>
            <input type="submit" name="guess-butt"><br>
    </form>

<?php

    $operators = array("+", "-", "*", "/");
    $operator = $operators[rand(0,2)];
    $rand_int1 = rand(0, 10);
    $rand_int2 = rand(0, 10);

    echo("<a>What is " . $rand_int1 . ' ' . $operator . ' ' . $rand_int2 . "?</a><br>");
    echo('guess for last question: ' . $_POST['guess'] . '<br>');

if (isset($_POST['guess'])) {

    $guess = intval($_POST['guess']);

    if ($operator == "+") 
    {
        $temp = $rand_int1 + $rand_int2;
        echo('answer: ' . $temp . "<br>" . '');
        if ($guess == $temp) 
        {
            echo("<br>correct<br>");
        }
        else
        {
            echo('<br>incorrect<br>');
        }
    } 

    elseif ($operator == "-") 
    {
        $temp = $rand_int1 - $rand_int2;
        echo('answer: ' . $temp . "<br>" . '');
        if ($guess == $temp) 
        {
            echo("<br>correct<br>");
        }
        else
        {
            echo('<br>incorrect<br>');
        }
    } 

    elseif ($operator == "*") 
    {
        $temp = $rand_int1 * $rand_int2;
        echo('answer: ' . $temp . "<br>" . '');
        if ($guess == $temp) 
        {
            echo("<br>correct<br>");
        }
        else
        {
            echo('<br>incorrect<br>');
        }
    } 

    elseif ($operator == "/") 
    {
        $temp = $rand_int1 / $rand_int2;
        echo('answer: ' . $temp . "<br>" . '');
        if ($guess == $temp) {
            echo("<br>correct<br>");
        }
        else
        {
            echo('<br>incorrect<br>');
        }
    }
}

?>

</body>
</html>
Автор: Jason Источник Размещён: 12.04.2017 06:42

Ответы (1)


1 плюс

1374 Репутация автора

Переменные $rand_int1и $rand_int2рандомизируются каждый раз при перезагрузке страницы. Таким образом, если пользователь видит сообщение «Что такое 5 + 6?» и отвечает на него, страница отправляет запрос POST к себе, $rand_int1и 2 содержат новые случайные числа. Поэтому очень сложно получить правильный ответ.

Вы также можете попытаться представить $rand_int1переменные и 2 как скрытые поля ввода:

  <input type="hidden" name="rand_int1" value="<?php echo $rand_int1; ?>">
  <input type="hidden" name="rand_int2" value="<?php echo $rand_int2; ?>">

И чем заняться

$answer = $_POST['rand_int1'] + $_POST['rand_int2'];

echo('answer: ' . $answer . "<br>" . '');
if ($guess == $answer) 
{
    echo("<br>correct<br>");
}
else
{
    echo('<br>incorrect<br>');
}
Автор: Wessel van der Linden Размещён: 12.04.2017 07:38
Вопросы из категории :
32x32