Белый экран при отправке данных(отображение ошибок включено в php.ini

Вот сам файл регистрации register.php:

    // запуск сессии
    session_start();
    // если пользователь уже вошел в аккаунт, перенаправляем его на главную страницу
    if(isset($_SESSION['user'])) {
        $new_url = "http://localhost:8080/learnphp.xyz/";
        header("Location: " . $new_url);
    }
    // если пользователь отправил форму
    $data = $_POST;
    if(isset($data['do__register'])) {
        // удаление спецсимволов
        $username = filter_var(
            trim($data['username']),
            FILTER_SANITIZE_STRING
        );
        // удаление спецсимволов
        $password = filter_var(
            trim($data['password']),
            FILTER_SANITIZE_STRING
        );

        $i = 0;


        // проверка корректности данных
        if(strlen($username) < 3) {
            $errors[] = $i++;
            exit();
        }
        if(strlen($username) > 20) {
            $errors[] = $i++;
            exit();
        }
        if(strlen($password) < 8) {
            $errors[] = $i++;
            exit();
        }
        if(strlen($password) > 33) {
            $errors[] = $i++;
            exit();
        }

        // хэширование пароля
        $password = md5($password);

        // проверка email на валидность, если email указан неверно, сообщаем об ошибке
        $email = $data['email'];
        if(filter_var($email, FILTER_SANITIZE_EMAIL)) {
            return 0;
        } else {
            $errors[] = $i++;
            exit();
        }

        // подключение к БД
        require "blocks/connection.php";

        // проверяем, существует ли уже пользователь с таким именем пользователя или email, если существует выдаем ошибку
        $result1 = $mysql->query("SELECT * FROM `users` WHERE `username` = '$username'");
        $row1 = $result1->fetch_assoc();

        if($row1 != null) {
            $errors[] = $i++;
            exit();
        }

        $result2 = $mysql->query("SELECT * FROM `users` WHERE `email` = '$email'");
        $row2 = $result2->fetch_assoc();

        if($row2 != null) {
            $errors[] = $i++;
            exit();
        }
        // если нет ошибок, записываем данные пользователя и выводим сообщение об успешной регистрации
        $mysql->query("INSERT INTO `users` (`username`, `password`, `email`) VALUES('$username', '$password', '$email')");
        session_start();
        $_SESSION['successfully__register'] = $username;

        $mysql->close();
    }
?>

<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <link rel="stylesheet" href="style/style.css">

    <link rel="preconnect" href="https://fonts.googleapis.com">

    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Encode+Sans+SC&display=swap" rel="stylesheet">

    <title>Регистрация</title>
</head>
<body>
<div class="wrapper">
    <header>
        <div class="header">
            <p class="header__header">Learn php</p>
        </div>
    </header>
    <div class="header__burger">
        <span></span>
    </div>
    <nav class="header__nav">
        <ul class="menu header__menu">
            <li><a href="http://localhost:8080/learnphp.xyz/" class="menu__item">Главная</a></li>
            <li><a href="http://localhost:8080/learnphp.xyz/functions.php" class="menu__item">Функции PHP</a></li>
            <?php if(!isset($_SESSION['user'])): ?>
                <li><a href="http://localhost:8080/learnphp.xyz/login.php" class="menu__item">Вход</a></li>
                <li><a href="http://localhost:8080/learnphp.xyz/register.php" class="menu__item">Регистрация</a></li>
                <li><a href="#" class="menu__item">Забыли пароль?</a></li>
            <?php else: ?>
                <li><a href="#" class="menu__item">Профиль</a></li>
                <li><a href="#" class="menu__item">Создать запись</a></li>
                <li><a href="#" class="menu__item">Выход</a></li>
            <?php endif; ?>
        </ul>
    </nav>
    <?php if(isset($_SESSION['successfully__register'])): ?>
        <div class="register__successfully">
            <p>Вы успешно зарегистрировались, перейдите <a href="http://localhost:8080/learnphp.xyz/login.php">сюда</a> чтобы войти на свой аккаунт</p>
        </div>
    <?php endif; ?>
    <?php if(isset($errors)): ?>
        <div class="register__errors">
            <?php if(isset($row1)): ?>
                <?php if($row1 != null): ?>
                    <p>Пользователь с таким именем уже существует</p>
                <?php endif; ?>
            <?php endif; ?>
            <?php if(isset($row2)): ?>
                <?php if($row2 != null): ?>
                    <p>Пользователь с таким E-Mail уже существует</p>
                <?php endif; ?>
            <?php endif; ?>
            <?php if(strlen($username) < 3): ?>
                <p>Ваше имя пользователя не должно быть меньше трёх символов</p>
            <?php endif; ?>
            <?php if(strlen($username) > 20): ?>
                <p>Ваше имя пользователя не должно быть больше двадцати символов</p>
            <?php endif; ?>
            <?php if(strlen($password) < 8): ?>
                <p>Ваш пароль должен содержать минимум 8 символов</p>
            <?php endif; ?>
            <?php if(strlen($password) > 33): ?>
                <p>Ваш пароль не может быть больше 33 символов</p>
            <?php endif; ?>
        </div>
    <?php endif; ?>
    <?php if(!isset($_SESSION['successfully__register'])): ?>
        <div class="form__register">
            <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="POST">
                <input class="register__username" type="text" name="username" placeholder="Имя пользователя" required>
                <br>
                <input class="register__email" type="text" name="email" placeholder="Электронная почта" required>
                <br>
                <input class="register__password" type="password" name="password" placeholder="Пароль" required>
                <br>
                <input class="register__submit" type="submit" value="Зарегистрироваться" name="do__register">
            </form>
        </div>
    <?php endif; ?>
</div>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="js/main.js"></script>
</body>
</html>

Если в регистрации есть какая-то ошибка, то сценарий должен выводить ошибку в теге div с классом register__errors, но я ввел все правильно, нажимаю отправить, но вместо текста "Вы успешно зарегистрировались", со страницы все пропадает, а остается лишь белый экран, а в базе данных, данных которые я ввел, нет(

вот файл подключения к самой базе данных connection.php:

    $mysql = new mysqli("localhost", "username", "password", "database");

нет, отображение ошибок у меня включено, или может я чего-то не выкупаю, объясните пожалуйста


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

Автор решения: Dmitry Kozlov

Ошибка в том, что Вы везде вызываете exit() в случае невалидных данных, что обрывает ваш скрипт и выводит пустую страницу. Но даже если данные валидны, то вот этот блок:

// проверка email на валидность, если email указан неверно, сообщаем об ошибке
$email = $data['email'];
if(filter_var($email, FILTER_SANITIZE_EMAIL)) {
    return 0;
} else {
    $errors[] = $i++;
    exit();
}

оборвет ваш скрипт в любом случае, поскольку и exit и return оборвут выполнение скрипта.

return

Если вызывается из глобальной области видимости, выполнение текущего файла скрипта прекращается.

exit

Вывести сообщение и прекратить выполнение текущего скрипта

→ Ссылка