- Сообщения
- 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`. Потом ищешь полдня, почему редирект не пашет.
Последнее редактирование: