Как сделать редирект без хлама, но с умом

Vortexion

Кто с мечом к нам придёт, от меча и погибнет!
Продвинутый
Сообщения
51
Реакции
24
Часто вижу, как народ лепит `header('Location: ...');` вообще без проверок.
Оно-то работает, но может и заглючить, если уже что-то вывелось на экран. Вот как делаю я — коротко, безопасно и не по-барановски.

Простой редирект с проверкой:​

PHP:
Увеличить Уменьшить Копировать
function safe_redirect($url)
{
    if (!headers_sent()) {
        header('Location: ' . $url);
        exit;
    } else {
        echo "<script>window.location.href='" . htmlspecialchars($url) . "';</script>";
        exit;
    }
}

Как использовать:​

PHP:
Увеличить Уменьшить Копировать
safe_redirect('/login.php');

В чём прикол:​


  • Проверяет, не были ли уже отправлены заголовки
  • Если да — перекидывает через JavaScript
  • Работает и на чистых страницах, и если уже где-то в коде что-то вывел

Личный совет:​

Не кидай `header()` тупо где попало, особенно если ты до этого где-то случайно сделал echo или пробел вне `<?php`. Потом ищешь полдня, почему редирект не пашет.
 
Последнее редактирование:

Пользователи онлайн

Сейчас на форуме нет ни одного пользователя.
Назад
Сверху