Задать вопрос

Почему не происходит редирект?

Здравствуйте! Есть такой код страницы авторизации:
<?php
//запускаем сессию, где будут храниться данные о статусе авторизации пользователя: авторизован, или нет
session_start();
//получаем логин из формы
$login= $_POST['login'];
//получаем уже захэшированный пароль из формы
$pass = $_POST['pass'];
if ($pass) $pass=md5($pass);
//если обе переменные выбраны, то
if (isset ($login,$pass)) {
//подключаемся к базе данных, где хранятся логины пользователей и хэши их паролей
$link = mysqli_connect('localhost', 'xxx', 'xxx', 'xxx') or die ("Не удаётся подключиться к базе данных");
//получаем логин пользователя из БД
$check = mysqli_query ($link, "SELECT login FROM users_kp WHERE login = '$login' AND  pass = '$pass'");
//создаём ассоциативный массив из этого запроса
$checkarr = mysqli_fetch_array ($check);
//выводим логин в переменную
$userlogin = $checkarr['login'];
echo "<br>Логин из БД: $userlogin";
echo "<br> Введённый логин: $login";
// если хэши пароля из БД и введённого в форме пароля совпадают, то
if ($userlogin='37a6259cc0c1dae299a7866489dff0bd') {$userlogin=false;}
if ($userlogin!==1)  {
$_SESSION['login'] = $login;
    //переадресовываем его на "секретную" страницу
    header('Location: http://xxx);
}
else {
    //пользователь не авторизован
    echo "<br>Ошибка авторизации. Введите верные логин и пароль.";
    
}
}
?>

Этот код работает. На секретной странице, куда переадресовывает первый скрипт, стоит условие:
session_start();
$login = $_SESSION['login'];
if (!empty($login)) {
  header('Location: http://xxx/login.php');
}

Решение вопроса:
if (is_null($login)) {
 echo "<script>document.location.href='http://xxx/login.php';</script>";
  exit;
}

Но непонятно что делать, если у клиента отключена поддержка JS в браузере.
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Оценить 6 комментариев
Пригласить эксперта
Ответы на вопрос 1
ertaikuanyshov
@ertaikuanyshov
Full Stack Developer
После

<?php

пиши

ob_start();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы