ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Проэктирование. Часть Четырнадцатая.


04-07-2015

27.9. Адреса поисковых механизмов в Internet
Такие поисковые механизмы, как Google (<http://www.google.com/>) и All the Web (<http://www.alltheweb.com/>), являются попыткой просмотра всей Internet. Они стали существенным ресурсом для пользователей Internet, и любой общедоступный Web-узел только выигрывает от возможности попасть в их список. Поисковые механизмы - это роботы, позволяющие исследовать Web-страницы на Web-узлах, которые индексируют PHP-сценарии аналогично HTML-файлам. Если на странице имеются ссылки, то они отслеживаются и весь Web-узел постепенно становится исследуемым.
К сожалению, многие роботы не отслеживают ссылки, которые содержат переменные метода form. Ссылки, содержащие знаки вопроса, могут привести робот к бесконечному циклу, поэтому они запрограммированы таким образом, чтобы не попадать в такие ситуации. Это является определенной проблемой для Web-узлов, в ссылках которых содержатся переменные метода form. Передача переменных метода form в тегах является естественным для PHP методом обмена данными, но это может закрыть такие Web-страницы для поисковых механизмов. Для того чтобы справиться с этой проблемой, данные должны передаваться в формате, который напоминает обычные URL.
Сначала рассмотрим, каким образом Web-сервер принимает URI и находит соот­ветствующие им файлы. URI представляет собой виртуальный путь, это часть URL, которая следует сразу после имени узла. Он начинается с косой черты, за которой может следовать каталог, другая косая черта и т.д. Так шаг за шагом Web-сервер находит соответствие между каталогами, заданными в URI, и каталогами, имеющимися в файловой системе. Сценарий выполняется, когда он соответствует части URI, даже если за ним следует информация о каталоге. Обычно эта излишняя часть информации о пути отбрасывается, но ею можно воспользоваться.
В листинге 27.9 сценарий работает с Web-сервером Apache, откомпилированным для ОС Unix, и не может работать с другими Web-серверами. Он опирается на переменную среды PATH_INFO, которая в других контекстах не принимается во внимание. Каждый Web-сервер создает уникальный набор переменных среды, хотя есть и некоторые исключения.

| Листинг 27.9. Использование информации о пути
<?php
if(isset($_SERvER['PATH_INFO']))
{
//удалить файлы .html в конце 
$path = str_replace(".html",
"", $_SERVER['PATH_INFO']); //удалить ведущий символ косой черты $path = substr($path, 1); //просмотреть части $pathvar = array(); $v = explodeC'/", $path); $c = count($v); for($i=0; $i<$c; $i += 2)
{
$pathVar[($v[$i])] = $v[$i+1];
}
print^^bi просматриваете сообщение " . "{$pathVar['message']}<br>n"),-
}
// выбрать произвольный идентификатор $nextID = rand(1, 1000);
print("<a href="{$_SERVER["SCRIPT_NAME"]}/message/ $nextID.html">" .
"Просмотр сообщения $nextID</a><br>n");
?>

Получить доступ к программному коду, представленному в листинге 27.9, можно по URL http://localhost/corephp/27-9.php/message/1234.html. В этом случае происходит подключение к локальному серверу, имеющему каталог corephp в корневом каталоге документов. Стандартная инсталляция Web-сервера Apache разместит его в каталоге /usr/local/apcache/htdocs. Сценарий имеет имя 27-9.php, и все, что располагается за именем сценария, затем будет помещено в переменной PATH_INFO. Файл с именем 12 34.html не существует, но для Web-браузера это будет обычным документом HTML. Для поисковой системы это будет представляться аналогичным образом.
В действительности программный код, представленный в листинге 27.9, не делает многого. Он разбивает информацию о пути на части, которые будут использоваться в качестве имени и значения переменной. Сценарий считает message идентификатором. Он может быть ссылкой на запись в реляционной базе данных. Автором был добавлен фрагмент кода, который использует случайное число для создания ссылки на другую воображаемую запись (вспомните доску объявлений (BBS) из главы 23, "Интеграция баз данных"). Это решение можно применить, и каждое сообщение будет одним HTML-файлом.
Автором были представлены только основные принципы этого метода. Но есть "подводные камни" и возможности для его доработки. Следует помнить, что Web-браузеры хорошо работают с относительными URL и что использование информации о пути мешает обрабатывать изображения, которые могут использоваться в ваших сценариях. Поэтому лучше работать с абсолютными путями. Может также понадобиться дать имя PHP-сценарию без расширения. При работе с Web-сервером Apache можно задавать тип документа по умолчанию. Для этого нужно воспользоваться директивой настройки DefaultType или директивой mod_rewrite. По необходимости обратитесь за справкой на Web-узел Web-сервера Apache по адресу <http://www.apache.org/docs/>.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Проэктирование. Часть Триннадцатая. PHP. Эффективность и отладка