13.21. Включение исходного кода текста, содержащегося в файле
Каждый, сделавший хоть одну страничку в Сети, сталкивался с проблемой изменения тех или иных данных на ней. Конечно, это не сложно, когда страничек несколько, но если вы сделали большой сайт, дополнение (например, в меню) в сотни файлов может превратиться в настоящий кошмар. РНР быстро решает эту проблему, позволяя вкладывать одну страницу в другую. Достигается это с помощью операторов require и include. После них должен стоять путь к вкладываемому файлу. Например:
Различие между указанными операторами заключается в том, что 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. Например:
Теперь изменим наш головной файл index.phtml, чтобы все работало автоматически. А если запрашиваемый параметр не будет указан (будет равен пустой строке), чтобы что-то открыть, присвоим переменной $add имя файла, который должен
быть открыт как главная страничка. Пусть это будет файл main.phtml. Тогда код будет выглядеть следующим образом:
<html>
...
<?php
$add = $query__string;
if ($add == "") {
$add = "main.phtml";
}
include($add);
...
?>
</html>
Как видите, еще проще.
ВНИМАНИЕ
Этот метод хоть и проще первого, но открывает путь к получению информации о сервере, где расположен сайт с такой организацией структуры. Злоумышленник или просто любопытный человек при наличии определенных обстоятельств и знаний сможет много узнать о вашем сервере, а это открывает прямой путь к взлому. Так что будьте осторожны.