Почему при попытке войти с уже существующим логином отображается пустой экран, вместо сообщения «Данный пользователь уже зарегистрован»?

У меня возникла проблема с формой регистрации на сайте: когда пользователь пытается зарегистрироваться с логином, который уже существует в базе данных, вместо сообщения "Данный пользователь уже зарегистрирован" отображается пустой экран. Как мне исправить эту ситуацию? <br/><br/> Вот HTML код формы: <br/> <pre><code class="html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;link rel="preconnect" href="https://fonts.googleapis.com"&gt;
    &lt;link rel="preconnect" href="https://fonts.gstatic.com" crossorigin&gt;
    &lt;link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&amp;display=swap" rel="stylesheet"&gt;
    
    &lt;link rel="stylesheet" href="styles/style.css"&gt;
    &lt;title&gt;Регистрация&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;main&gt;
        &lt;h2&gt;Регистрация&lt;/h2&gt;
        &lt;form action="src/registration.php" method="POST"&gt;
       &lt;input type="text" placeholder="Придумайте логин" name="login"&gt;
       
       &lt;input class="pass" type="password" placeholder="Придумайте пароль" name="password"&gt;

       &lt;button type="submit"&gt;Зарегистироваться&lt;/button&gt;

       &lt;/form&gt;
    &lt;/main&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre> <br/> <br/> Также прикрепляю PHP код: <br/> <pre><code class="php">&lt;?php

require_once __DIR__ . '/helpers.php';


// Получение данных из формы регистрации

$login = $_POST['login'];
$password = $_POST['passwor
  • 26 ноября 2024 г. 14:03
Ответы на вопрос 1
Судя по вашему описанию и предоставленному коду, возникновение пустого экрана при попытке регистрации с уже существующим логином может быть связано с несколькими проблемами в PHP-коде. Давайте разберем возможные причины и предложение решения.

### Возможные причины:

1. **Ошибка в коде**: Если в PHP коде есть ошибка, это может привести к тому, что скрипт не выполняется и, как следствие, отображается пустой экран.

2. **Необработанные исключения**: Если вы не проверяете существование логина и не обрабатываете это условие, может возникнуть ситуация, когда сообщение об ошибке просто не выводится.

3. **Неправильное имя переменной**: В PHP-коде у вас указано `$_POST['passwor']`, а в форме вы передаете поле с именем `password`. Это ошибка, которая приведет к тому, что переменная `$password` будет пустой.

### Рекомендации по исправлению:

1. **Проверка ошибок**: Включите отображение ошибок на время разработки, добавив следующие строки в начало вашего PHP скрипта:
   ```php
   error_reporting(E_ALL);
   ini_set('display_errors', 1);
   ```

2. **Исправьте имя переменной**:

   Замените строку:
   ```php
   $password = $_POST['passwor'];
   ```
   на
   ```php
   $password = $_POST['password'];
   ```

3. **Добавьте логику проверки существующих пользователей**: Используйте SQL-запрос для проверки, существует ли пользователь с таким логином. Например:
   ```php
   $existingUser = checkUserExists($login); // Предположим, что у вас есть такая функция

   if ($existingUser) {
       echo "Данный пользователь уже зарегистрирован";
       exit; // Завершите выполнение скрипта
   }
   ```

4. **Функция для проверки существования пользователя**: Пример функции, которая проверяет существование логина в базе данных:
   ```php
   function checkUserExists($login) {
       // Здесь должна быть ваша логика для подключения к базе данных
       // Пример:
       $query = "SELECT * FROM users WHERE login = ?";
       $stmt = $db->prepare($query);
       $stmt->bind_param("s", $login);
       $stmt->execute();
       $result = $stmt->get_result();
       return $result->num_rows > 0;
   }
   ```

### Итоговый код:

Ваш PHP-код может выглядеть примерно так:

```php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

require_once __DIR__ . '/helpers.php';

// Получение данных из формы регистрации
$login = $_POST['login'];
$password = $_POST['password'];

// Проверка на существование пользователя
$existingUser = checkUserExists($login);

if ($existingUser) {
    echo "Данный пользователь уже зарегистрирован";
    exit; // Завершаем выполнение скрипта
}

// Логика для регистрации нового пользователя...
```

Убедитесь, что вы выполняете проверку ошибок и тестируете код после внесения изменений. Если у вас будут дополнительные вопросы или возникнут трудности, не стесняйтесь задавать их!
Похожие вопросы