07 ноя 2010
Быстрое перенаправление средствами php
Dmitrius Категория: Web-Мастеру » Уроки
У нас вы можете скачать бесплатно Быстрое перенаправление средствами php

Данный материал предоставлен сайтом Skripter.info исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Задача заключается в том, чтобы после добавления комментария средствами php быстро перенаправить пользователя на исходную страничку минуя отображение в адресной строке браузера имени файла-обработчика формы (comments.php).

Данную задачу мы решим с помощью применения стандартной функции header(), которая предназначена для добавления заголовка к документу, пересылаемогу браузеру. В частности нам нужно организовать с помощью неё перенаправление пользователя на указанный в её параметре URL-адрес.

Поскольку вызов header() должен осуществляться до любого оператора вывода в сценарии, то нам нужно воспользоваться фукцией буферизации ob_start();.

Итак, откройте ваш файл-обработчик формы комментариев. У меня он называется comments.php и выполните следующие действия:

1) В самом начале скрипта вызовите функцию ob_start();

ob_start();


2) Определите переменную для хранения URL-адреса скрипта странички, на которую будет перенаправлен пользователь после добавления комментария.

$url = "index.php?cat=".$cat."&id=".$id."";


3) Найдите в файле-обработчике строчки кода, отвечающие за обновление странички браузера средствами html. Они идут сразу после обработки всех переменных из формы и добавления комментария. У меня они выглядели так:

echo "<html><head><meta https-equiv='Cache-Control' content='no-cache'><meta https-equiv='Refresh' content='0; URL=/index.php?cat=$cat&id=$id'></head></html>";
exit();


Значение атрибута URL мета-тэга определяет адрес странички, которую необходимо обновить, чтобы увидеть добавленный комментарий.

4) Замените эти строчки на вызов функции header() следующим образом:

//перенаправляем на указанный в $url адрес
header("Location: ".$url."");
//принудительно завершаем сценарий, поскольку после перенаправления больше делать нечего.
exit();


URL-адрес можно указывать в этой функции не только через переменную, определенную ранее, но и прямо внутри этой функции в качестве строкового параметра. Примеры вызовов функции header() можете наблюдать в приведенном ниже примере.

//простой способ, который мы используем в данном примере
header("Location: view_post.php?id=".$id."");
//универсальный способ
@header("Location: https://".$_SERVER['https_HOST'].$_SERVER['SCRIPT_NAME']."?id=$id");


5) Чтобы очистить текущий буфер, вызванный в самом начале файла функцией ob_start() нужно в самом конце файла comments.php перед "?>" вызвать функцию ob_get_clean().

echo ob_get_clean();


Таким образом, возвратится текущее содержимое буфера и ​удалиться текущий буфер.

Данную технологию перенаправления можете наблюдать на моём сайте. Чтобы её проверить, просто добавьте комментарий к этой заметке.

На этом всё. Жду положительных отзывов! =)









Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
SashaPeski | 13 февраля 2011 13:12
  • Группа: Посетители |
  • Комментарий: 1 (ссылка)

Проверяю!!! Ну вроде пашет!!!

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.