В PHP переадресация (редирект) осуществляется с помощью функции header()
с передачей соответствующих параметров. Функция header()
Переадресация (редирект) в PHP
//Переадресация со статусом 302
header("Location: https://site.com");
//Переадресация со статусом 301
header("HTTP/1.1 301 MovedPermanently");
header("Location: https://site.com");
//Или
header("Location: https://site.com", true, 301);
Переадресация (редирект) с задержкой в PHP
// Переадресация (редирект) с задержкой. Страница будет обновлятся через 3 секунды
header("Refresh: 3");
// Через 3 секунды будет выполнена переадресация на страницу Яндекса
header("Refresh: 3;url=https://yandex.ru");
Примеры использования редиректа в php
header( 'Refresh: 0; url=/error404.html' ); // переадресовать на страницу ошибки немедленно (без задержки)
header( 'Refresh: 5; url=https://www.google.com/' ); // переадресовать на главную страницу Гугла через 5 секунд после загрузки страницы.
header( 'Location: /', true, 307 ); // перебросить на главную страницу сайта с использованием 307 редиректа.
header( 'Location: /article/page.htm', true, 303 ); // с помощью 303 редиректа переадресовать на внутреннюю страницу сайта.
header( 'Location: http://google.ru/search?q=redirect' ); // с помощью 302 редиректа переадресовывать на поиск в гугле слова redirect (При использовании Location без указания кода редиректа, по умолчанию используется 302-й).
header( 'Location: http://yandex.ru/yandsearch?text=redirect', true, 301 ); // сделать переадресацию с помощью 301 редиректа на поиск в Яндексе слова redirect.
Очистка буфера POST
При отправке данных методом POST и, к тому же, когда мы остались на этой же странице, мы можем столкнуться с проблемой буферизации этих данных, что приведёт к подобному уведомлению в браузере при попытке перезагрузить её (простое нажатие клавиши F5
):

Решается такая проблема достаточно просто. Нужно перезапросить заново страницу (с которой отправлялись данные постом), только вот сделать это необходимо уже методом GET. На самом деле задача звучит иначе: нужно повторить последний запрос (или же будет угодно - обновить страницу последним запросом). При таком подходе данные снова отправятся, и снова постом. Если вы используете (а вы скорее всего используете БД), то данные снова запишутся в базу данных, что нам не хотелось бы. Поэтому, таким вот способом мы сможем очистить буфер:
// Здесь мы обрабатываем данные из формы
Some code ...
// Затем перезапрашиваем страницу методом GET
header("Location: " . $_SERVER["PHP_SELF"]);
exit;
Комментарии (0)
Пока еще не было комментариев ✍️