Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Вложения файлов в РНР






Каждый, кто сделал хоть одну страничку в сети, сталкивался с проблемой изменения тех или иных данных на ней. Конечно, это не сложно когда страничек несколько или она одна: -), но если Вы сделали большой сайт, маленькое дополнение (например, в меню) в сотни файлов может превратиться в настоящий кошмар! РНР решает эту проблему в раз, позволяя вкладывать одну страницу в другую. Достигается это с помощью операторов REQUIRE и INCLUDE. После этих операторов в круглых скобках должен стоять путь к вкладываемому файлу. Например, INCLUDE (" text.phtml"). Различие между указанными операторами заключается в том, что REQUIRE подменяется содержимым указанного файла и может быть использован только один раз, а INCLUDE — вставляет и выполняет содержимое указанного файла, что позволяет применить его несколько раз, например в цикле. В любом случае, при исполнении файла интерпретатор РНР (правильно говорить — парсер) пребывает в состоянии HTML, и для его включения код надо заключить в конструкцию <? php …? >. Вложения файлов могут происходить только внутри серверного пространства, доступного РНР. Другими словами, Вы не можете использовать в имени файла https://

 

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

< html>

…начало файла …

<? php

$url = " ";

if ($link == 1) { $url = " name1.phtml"; }

if ($link == 2) { $url = " name2.phtml"; }

if ($link == 3) { $url = " name3.phtml"; }

if ($link == 4) { $url = " name4.phtml"; }

if ($url == " ") { $url = " error.phtml"; }

INCLUDE ($url);

? >

… конец файла …

< /html>

 

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

 

Есть и другой путь. Его суть заключается в том, что у РНР есть доступ к так называемым переменным окружения сервера. Одна из этих переменных — запрашиваемый посетителем путь относительно адреса сайта. И этот путь становится нам доступен для использования. В этом случае ссылки у нас будут такого вида: https://имя.ru/index.phtml? patch/name.phtml. Вторая часть ссылки — patch/name.phtml — будет нам доступна, если мы считаем параметр $QUERY_STRING. Например, так: $add = $QUERY_STRING. Теперь изменим наш головной файл index.phtml, чтобы все работало автоматически. А если запрашиваемый параметр не будет указан (правильно говоря — будет равен пустой строке), чтобы что-то открыть, присвоим переменной $add имя файла, который должен быть открыт как главная страничка. Пусть это будет файл main.phtml. Тогда код будет выглядеть следующим образом:

< html>

…начало файла …

<? php

$add = $QUERY_STRING;

if ($add == " ") { $add = " main.phtml"; }

INCLUDE ($url);

? >

… конец файла …

< /html>

 

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.