Сайтостроительство (8)

PHP-кодинг (25)

Веб-дизайн (9)

DHTML/JavaScript (8)

Подкастинг (1)

Безопасность в PHP (3)

Секретный раздел

Карта блога

Регистрация пользователей на PHP+MySQL

Скрипт гостевой книги с красивым дизайном

Галерея на jQuery

Простая система регистрации пользователей на сессиях

Форма обратной связи с защитой типа капча

Галерея на php+jquery

Шаблоны запросов и placeholders

Быстрое перенаправление средствами php

Flash плеер для вашего сайта

Сортировка столбцов в таблице на php+mysql

Создание документа при помощи JavaScript

Форматный вывод даты из базы

Скрипт гостевой книги с красивым дизайном

Галерея на jQuery

Сохраняем IP-адрес посетителя, оставившего комментарий

За весь период

За 2010-11

За 2009-06

За 2009-05

За 2009-04

За 2009-03

За 2009-02

За 2008-08

Бегун контекстная реклама

Ruseller видеоуроки

Letitbit файлообменник

Tak.Ru $$$ вебмастеру

WMmail почтовые рассылки

WMlink продажа трафика

Sape.Ru продажа ссылок

Главная » PHP-кодинг

Быстрое перенаправление средствами php

Задача заключается в том, чтобы после добавления комментария средствами 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 http-equiv='Cache-Control' content='no-cache'><meta http-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: http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."?id=$id");

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


echo ob_get_clean();

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

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

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

Комментировать

Автор: admin | Добавлена: 30.05.2009 | Просмотров: 18311
Рейтинг: 35 | Голосов: 13

Оцените заметку: 1 2 3 4 5

Последние обновления в категории: PHP-кодинг

Комментарии (0)

Комментариев пока нет!

Только авторизованные пользователи могут добавлять комментарии. Зарегистрироваться.

Логин:
Пароль:
 

Регистрация

: Тема:

Заметок в базе: 56
Комментариев: 0
Всего юзеров: 114
Сейчас онлайн: 1