Как сделать динамичную отправку запросов в php?

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


<?php
$data = $_POST;
$operands = array("+", "-", "*", ":");
$a = (random_int(2, 9));
$b = (random_int(2, 9));
$c = (random_int(0, 3));

$answer;

if ($c == 0) {
    $answer = $a + $b;
} else if ($c == 1) {
    $answer = $a - $b;
} else if ($c == 2) {
    $answer = $a * $b;
} else {
    $answer = $a / $b;
}

$operand = $operands[$c];
$question = "$a $operand $b";

if ($data['answer'] == $answer) {
    $success = "Верно";
} else {
    $error = "Неверно";
}

?>

<form class = "form-answer" action="example.php" method="POST">
        <?php
if (isset($success)) {
    echo $success;
} else {
    echo $error;
}
?>

        <h1 align="center"><?php echo $question; ?></h1>

        <input type="text" class="form-control" name="answer" placeholder="Ваш ответ" required><br>

        <button  type="submit" >Ответить</button><br>
        <?php echo "$answer ";
        echo $data['answer']; ?>

</form>


Ответы (1 шт):

Автор решения: Borislav

Вы сначала делаете все подсчеты, ждете пока введут данные в форму, далее нажатие на submit и скрипт обновляет страницу, записывает данные из формы в массив $_POST, происходят уже следующие вычисления и сравнения с вашими предыдущими данными из формы.

Решение: записывать данные ваших расчетов в куки, сессию, localstorage под одним именем и каждый раз перетирать их, повесить if($_POST['submit']) {в теле брать данные из куки или тп. и сверять с $_POST-данными}.

Надеюсь понятно объяснил.

→ Ссылка