Не проходит проверка правильности ответа. Так ещё и ошибку сессии выдаёт!

Первый файл

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Решение примеров</title>
    </head>
    <body>
        <?php
            require "z.php";  
            echo $a . " " . "+" . " " . $b . " " . "=" . " ";
            echo $c;
        ?>
        <form name="name" action="" method="post">
            <input type="text" placeholder="Ответ" name="answer">
            <input type="submit" value="Ответить" name="s">
        </form>
    </body>        
</html>   

Второй файл

<?php
    session_start();
    
    // выбрать старое значение суммы $a+$b
    $old_answer = isset($_SESSION['old']) ? $_SESSION['old'] : 0;
                
    print_r($_POST);
                
    $a = rand(100, 999);
    $b = rand(100, 999);
    $c = $a + $b;
                
    // записать новое значение суммы $a+$b
    $_SESSION['old'] = $c;
                      
    $answer = trim($_POST["answer"]);
               
    if ($answer == "") {
        echo "";
    }else{
    if($answer == $old_answer) {
        echo "Верно";
    }else {
        echo "Неверно";
        }
    }  
?>

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

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

Не ясно где именно у вас ошибки. Вы код ошибок и строки их приведите. Ваш код можно улучшить: $old_answer = $_SESSION['old'] ?? 0;. В переменных $a и $b нет необходимости, так как вы их не используете: $_SESSION['old'] = rand(100, 999) + rand(100, 999);. Проверять на наличие значения в $_POST надо в начале, а не в конце скрипта. Поэтому добавьте:

$postData = $_POST;
if (empty($postData)) {
    die('Данные формы не были переданы')
}

Условия в конце можно изменить так:

if (empty($answer)) ...
elseif ($answer === $old_answer) ...
else ...

Используйте camelCase для переменных - это сейчас как общепринятое правило.

→ Ссылка