Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

13.21. Включение исходного кода текста, содержащегося в файле

Каждый, сделавший хоть одну страничку в Сети, сталкивался с проблемой изменения тех или иных данных на ней. Конечно, это не сложно, когда страничек несколько, но если вы сделали большой сайт, дополнение (например, в меню) в сотни файлов может превратиться в настоящий кошмар. РНР быстро решает эту проблему, позволяя вкладывать одну страницу в другую. Достигается это с помощью операторов require и include. После них должен стоять путь к вкладываемому файлу. Например:

include('test.phtml') ;

Различие между указанными операторами заключается в том, что require подменяется содержимым указанного файла и может быть использован только один раз, a include — вставляет и выполняет содержимое указанного файла, что позволяет применять его несколько раз в цикле. Вложения файлов могут происходить только внутри серверного пространства, доступного РНР. Другими словами, вы не можете использовать в имени файла http://.

Достаточно часто встречаются сайты, ссылки которых включают в себя специальные символы — &, ?, %, что указывает на работу програмы РНР. Дело в том, что если в конце ссылки добавить ?имя=значение, это значение будет доступно под этим же именем в файле, куда указывает ссылка. Если необходимо добавить несколько имен, они могут быть разделены знаком &. Теперь мы можем сделать сайт, который будет доступен с помощью только одной странички, а всю остальную информацию эта страничка будет выводить на основании полученных по ссылке данных. Вид такой ссылки будет примерно таким:

http://my_domain_name/index.phtml?link=1

Единица в конце ссылки и есть наш параметр, который будет представляться в файле index.phtm. Например:

<html>

...

<?php

$name = "";

if ( $link == 1 ) {

    $name = " name1.phtml";

}

if ($link == 2) {

    $name = "name2.phtml";

}

if ($link == 3) {

    $name = " name3.phtml";

}

include ($name);

?>

...

</html>

Обратите внимание: написанный нами код учитывает ситуацию, когда посетитель по разным причинам указал неправильный параметр. В этом случае выводится заготовленное сообщение об ошибке. Если же параметр соответствует какому-либо из файлов сайта, он вкладывается в код файла index.phtml и исполняется. Таким образом, начало и конец остаются одинаковыми, а изменяется только середина. И какие-либо изменения уже не кажутся такими страшными, как раньше. Ведь сделать надо только в одном файле, а отразится это на всем сайте.

Есть и другой путь. Его суть заключается в том, что у РНР есть доступ к так называемым переменным окружения сервера. Одна из этих переменных — запрашиваемый посетителем путь относительно адреса сайта. И этот путь становится нам доступен для использования. В этом случае ссылки будут такого вида:

http://my_domain_name/index.phtml?patch/name.phtml

Вторая часть ссылки — html — будет нам доступна, если мы считаем параметр $query_string. Например:

$add = $query_string;

Теперь изменим наш головной файл index.phtml, чтобы все работало автоматически. А если запрашиваемый параметр не будет указан (будет равен пустой строке), чтобы что-то открыть, присвоим переменной $add имя файла, который должен

быть открыт как главная страничка. Пусть это будет файл main.phtml. Тогда код будет выглядеть следующим образом:

<html>

...

<?php

$add = $query__string;

if ($add == "") {

    $add = "main.phtml";

}

include($add);

...

?>

</html>

Как видите, еще проще.


ВНИМАНИЕ

Этот метод хоть и проще первого, но открывает путь к получению информации о сервере, где расположен сайт с такой организацией структуры. Злоумышленник или просто любопытный человек при наличии определенных обстоятельств и знаний сможет много узнать о вашем сервере, а это открывает прямой путь к взлому. Так что будьте осторожны.


<< Предыдущий параграф Следующий параграф >>
Оглавление