Переадресация страниц (редирект), задержка переадресации в PHP

       PHP      php    redirect      914    
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):


Буферизация данных, отправляемых методом POST

Решается такая проблема достаточно просто. Нужно перезапросить заново страницу (с которой отправлялись данные постом), только вот сделать это необходимо уже методом GET. На самом деле задача звучит иначе: нужно повторить последний запрос (или же будет угодно - обновить страницу последним запросом). При таком подходе данные снова отправятся, и снова постом. Если вы используете (а вы скорее всего используете БД), то данные снова запишутся в базу данных, что нам не хотелось бы. Поэтому, таким вот способом мы сможем очистить буфер:


// Здесь мы обрабатываем данные из формы

Some code ...

// Затем перезапрашиваем страницу методом GET 
header("Location: " . $_SERVER["PHP_SELF"]);
exit;
Комментарии временно оключены

Поиск

Популярное