Что делать если не работает редирект header?
На локалке хеадер работал как надо но когда перешел на хостинг появились проблемы.
Вместо того чтобы перенаправить в profile.php весь код просто обнуляется
вот сам код:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Filmoon</title> <link rel="stylesheet" href="reset.css"> <link rel="stylesheet" href="style.css"> </head> <body> <?php ob_start(); if($_COOKIE['user'] == ''): ?> <div class="login"> <form action="validation-form/auth.php" method="post"> <div class="login__title"> <h1 class="login__title-txt">Вход</h1> </div> <div class="login__input"> <input type="text" class="login__input-style login__input-style-bottom" name="login" id="login" placeholder="Введите логин"> </div> <div class="login__input"> <input type="password" class="login__input-style login__input-style-bottomt" name="pass" id="pass" placeholder="Введите пароль"> </div> <div class="login__btn"> <button type="submit" class="login__btn-link">Войти</button> </div></form> <form action="register.php"> <div class="login__btn"> <button type="submit" class="login__btn-linkt">Создать аккаунт</button> </div> </form> </div> <?php else: header('location: profile.php')?> <?php endif;?> </body> </html> |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Filmoon</title> <link rel="stylesheet" href="reset.css"> <link rel="stylesheet" href="style.css"> </head> <body> <?php ob_start(); if($_COOKIE['user'] == ''): ?> <div class="login"> <form action="validation-form/auth.php" method="post"> <div class="login__title"> <h1 class="login__title-txt">Вход</h1> </div> <div class="login__input"> <input type="text" class="login__input-style login__input-style-bottom" name="login" id="login" placeholder="Введите логин"> </div> <div class="login__input"> <input type="password" class="login__input-style login__input-style-bottomt" name="pass" id="pass" placeholder="Введите пароль"> </div> <div class="login__btn"> <button type="submit" class="login__btn-link">Войти</button> </div></form> <form action="register.php"> <div class="login__btn"> <button type="submit" class="login__btn-linkt">Создать аккаунт</button> </div> </form> </div> <?php else: header('location: profile.php')?> <?php endif;?> </body> </html>
Дополнительно:
кстати, лишние теги надо убрать
Если вы будете продолжать нарушать Регламент, ваши вопросы могут быть удалены, а аккаунт заблокирован модераторами временно или навсегда.
Будьте благоразумны.
Сначала надо включить отображение ошибок (или научиться искать их в логах сервера)
Затем собственно увидеть сообщение об ошибке и прочитать его
Затем, поскольку оно довольно непонятное, найти любое из существующих объяснений этой ошибки, благо их понаписали уже десятки миллионов.
Далее надо прочитать это объяснение и постараться понять, что такое НТТР заголовки и как с ними работать
Cannot modify header information.... Как исправить?
https://phpfaq.ru/newbie/headers
https://ru.stackoverflow.com/questions/284578/cann...
- В том то и проблема ошибки не выводятся в логах.
- Значит надо либо найти правильные логи, либо включить логирование.
Но это можно сделать потом. Сейчас надо исправить вывод заголовков, который у вас сделан шиворот-навыворот.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Для начала следует убедиться, что код редиректа с использованием функции header() находится в самом начале файла, до любого вывода на экран (включая пробелы и переносы строк) или передачи каких-либо HTTP заголовков.
Также убедитесь, что после вызова функции header() нет никакого кода, который мог бы изменить HTTP заголовки. Например, если после редиректа есть какой-то код PHP, который выводит что-то на экран, это может привести к ошибке.
Если у вас все равно не работает редирект, попробуйте добавить exit; после вызова функции header(). Это гарантирует, что после редиректа не будет выполнен никакой другой код.
Также убедитесь, что вы используете правильный HTTP код состояния для редиректа. Например, если вы хотите сделать временный редирект, используйте код 302, а для постоянного редиректа - 301.
Наконец, проверьте файл .htaccess на сервере. Возможно, там есть какие-то правила, которые могут повлиять на работу редиректа.
Вот пример кода на PHP, который реализует редирект:
Если вы все еще сталкиваетесь с проблемой, попробуйте использовать другие методы редиректа, такие как JavaScript или meta-теги в HTML. Но обычно функция header() должна работать правильно, если все указанные выше моменты учтены.