Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема с авторизацией на сайте php

Александр Лукьянов Ученик (99), открыт 2 недели назад
Добрый день, я создал 2 формы для сайта: регистрации и авторизации. Вот php файлы их: https://github.com/LyKaS1/site/blob/main/login.php https://github.com/LyKaS1/site/blob/main/registration.php. Файлы html я не оставляю, там просто обычные формы. Файлы размещены на хостинге рег.ру с подключением к mysql. Проблема в том, что после нажания кнопки отправить и войти в обоих файлах по тому же адресу появляется пустая белая страница, хотя после нажания кнопки войти в файле login должно идти перенаправление на основную страницу сайта. Причём все данные до бд доходят и скорее всего беруться в файле логин. Как я понимаю вместо перенаправления у меня открывается пустое окно с ошибками, подскажите пожалуйста как это исправить
4 ответа
Лайт Ягами Искусственный Интеллект (313214) 2 недели назад
Сначала выучи русский язык, потом учись программировать
Андрей Высший разум (464982) 2 недели назад
В браузере нажимаешь F12 и на вкладке "Сеть" смотришь статус загрузки проблемной страницы. Полагаю, там будет 500 и это означает, что ты накосячил в своём PHP-коде.

А дальше либо смотришь системный лог PHP, в который пишется сообщение об ошибке, либо в настройках PHP включаешь отображение всех ошибок в браузере и получаешь текст ошибки вместо "пустой белой страницы".
Анонимус Просветленный (21383) 2 недели назад
Ваш код не содержит обработку HTTP-заголовков для перенаправления. PHP отправляет ответ клиенту, и браузер, получив его, просто отображает пустую страницу. Клиент не понимает, что ожидается перенаправление.

 <?php 
// ... (подключение к базе данных)

if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST["username"];
$password = $_POST["password"];

// Важно: хэширование пароля!
$hashed_password = password_hash($password, PASSWORD_DEFAULT); // или md5() или sha1()


$sql = "SELECT * FROM users WHERE username = '$username'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
$row = $result->fetch_assoc();

// Проверка хеша пароля!
if (password_verify($password, $row["password"])) { // или strcmp($password, $row['password'])
// Успешная авторизация
session_start(); // Инициализация сессии
$_SESSION["user_id"] = $row["id"];
$_SESSION["username"] = $row["username"];


header('Location: /main.php'); // Перенаправление на главную страницу. Используйте относительные пути!
exit; // Очень важно! Останавливаем выполнение кода после перенаправления


} else {
echo "Неверный пароль."; // Или отобразить сообщение об ошибке
}
} else {
echo "Пользователь не найден."; // Или отобразить сообщение об ошибке
}
}
?>

<!DOCTYPE html>
<html>
<body>
<!--Форма авторизации -->
</body>
</html>
Alex Искусственный Интеллект (118407) 2 дня назад
Редирект не работает если в браузер выведена до него хоть строка хоть символ и не важно разметка это или ошибка.
И вообще как вы будите проверять на других страницах пройдена авторизация или нет? По мне так система недоработана.
Похожие вопросы