Не получается на хостинге beget сделать переход после авторизации на страницу личного кабинета
***<?php
session_start();
require_once 'database.php';
if (isset($_POST['login'])) {
$login = $_POST['login'];
$password = $_POST['password'];
$password = md5($password);
echo $password;
$link = mysqli_query($sql, "SELECT * FROM `admin` WHERE `login` = '$login' AND `password` = '$password'");
$result = mysqli_fetch_array($link);
if (!$result) {
echo '<p class="error">Неверные пароль или имя пользователя!</p>';
} else {
if ($password == $result['password']) {
$_SESSION['user'] = $result['id'];
echo
header("Location:http://tocharosta.miksplt4.beget.tech/admin/admin.php");
} else {
echo '<p class="error"> Неверные пароль или имя пользователя!</p>';
}
}
}
?>***
после нажатия на кнопку, пользователь авторизируется, но не происходит автоматический переход на страницу, просто выводит хешированный пароль
Ответы (1 шт):
В документации чётко написано
Помните, функцию header() разрешено вызывать, только если клиенту ещё не были переданы данные. То есть она должна идти первой в выводе, перед её вызовом не должно быть HTML-тегов, пустых строк и т. п. Иногда возникает ошибка, когда при чтении кода файловыми функциями наподобие include или require в коде попадаются пробелы или пустые строки, которые выводятся до вызова функции header(). Те же проблемы могут возникать, когда в одном файле записаны PHP-код и HTML-разметка.
Теперь взгляните на свой код....и задайте себе вопрос: что делает echo и как это влияет на header?
Так же там есть примечания и примеры, что делать, если хочется и заголовки использовать и что-то вывести.
А если бы ещё вы включили отображение ошибок, то код бы вам сказал о том, что вы что-то делаете неправильно