Переадресация страниц (редирект), задержка переадресации в PHP
В php переадресация (редирект) осуществляется с помощью функции header()
с передачей соответствующих параметров. Функция header()
Переадресация (редирект) в PHP
//Переадресация со статусом 302 header("Location: https://prowebmastering.ru"); //Переадресация со статусом 301 header("HTTP/1.1 301 MovedPermanently"); header("Location: https://prowebmastering.ru"); //Или header("Location: https://prowebmastering.ru", 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;