У вас вопросы?
У нас ответы:) SamZan.net

ЛАБОРАТОРНАЯ РАБОТА 5 МНОГОКРАТНОЕ ИСПОЛЬЗОВАНИЕ КОДА 1

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 7.4.2025

ЛАБОРАТОРНАЯ РАБОТА №5

МНОГОКРАТНОЕ ИСПОЛЬЗОВАНИЕ КОДА

1. Использование оператора require()

Оператор require() позволяет нам разбить текст программы на несколько файлов. Его формат такой:

require (имя_файла);

При запуске (именно при запуске, а не при исполнении!) программы интерпретатор просто заменит инструкцию на содержимое файла имя_файла (этот файл может также содержать сценарий на PHP, обрамленный, как обычно, тэгами <? и ?>). Причем сделает он это только один раз (в отличие от include): а именно, непосредственно перед запуском программы.

Например, в файле с именем reusable.php хранится следующий код:

<?php

 echo 'А это очень простой PHP-оператор.<br />';

?>

В файле с именем main.php хранится такой код:

<?php

 echo "Это главный файл.<br />";

 require( "reusable.php" );

 echo "Сейчас сценарий должен завершиться.<br />";

?>

Когда Вы загружаете файл reusable.php, в окне браузера отображается текст: «А это очень простой PHP-оператор.». При загрузке файла main.php происходит нечто более интересное. Вывод этого сценария показан на рисунке:

При выполнении файла main.php оператор require() заменяется содержимым запрошенного файла. То есть файл main.php выполняется так, как если бы он имел следующий вид:

<?php

 echo "Это главный файл.<br />";

 echo 'А это очень простой PHP-оператор.<br />';

 echo "Сейчас сценарий должен завершиться.<br />";

?>

РНР игнорирует расширение имени запрашиваемого оператором require() файла. Это означает, что файл можно называть как угодно, если Вы только не собираетесь вызывать его непосредственно.

Пример:

Сайт вымышленной компании содержит несколько страниц, и все они выглядят как страница, изображенная на рис.

Сайт существует уже в течение некоторого времени и содержит сотни страниц, которые все выдержаны в одном стиле. Принято решение частично изменить стандартный вид: например, включить адрес электронной почты в нижний колонтитул или добавить новую запись в меню навигации по страницам. Перспектива вносить небольшое изменение в сотни страниц не очень радует.

Непосредственное многократное использование разделов HTML, общих для всех страниц – это более рациональный подход. Исходный код начальной страницы (home.html), показанной на рисунке выше, приведен в следующем листинге.

<html>

<head>

 <title>TLA Consulting Pty Ltd</title>

 <style>

   h1 {color:white; ; text-align:center;

       font-family:arial,sans-serif}

   .menu {color:white; ; text-align:center;

          font-family:arial,sans-serif; font-weight:bold}

   td {background:black}

   p {color:black; ; text-align:justify;

      font-family:arial,sans-serif}

   p.foot {color:white; ; text-align:center;

           font-family:arial,sans-serif; font-weight:bold}

   a:link,a:visited,a:active {color:white}

 </style>

</head>

<body>

 <!-- верхний колонтитул страницы -->

 <table width="100%" cellpadding="12" cellspacing="0" border="0">

 <tr bgcolor="black">

   <td align="left"><img src="../files/235/files/235/logo.gif"></td>

   <td>

       <h1>TLA Consulting</h1>

   </td>

   <td align="right"><img src="../files/235/files/235/logo.gif"></td>

 </tr>

 </table>

 <!-- меню -->

 <table width="100%" bgcolor="white" cellpadding="4" cellspacing="4">

 <tr >

   <td width="25%">

     <img src="../files/235/files/235/s-logo.gif"> <span class="menu">Домой</span></td>

   <td width="25%">

     <img src="../files/235/files/235/s-logo.gif"> <span class="menu">Контакт</span></td>

   <td width="25%">

     <img src="../files/235/files/235/s-logo.gif"> <span class="menu">Услуги</span></td>

   <td width="25%">

     <img src="../files/235/files/235/s-logo.gif"> <span class="menu">Карта сайта</span></td>

 </tr>

 </table>

 <!-- содержимое страницы -->

 <p>Добро пожаловать на сайт компании TLA Consulting.

 Пожалуйста, уделите некоторое время на знакомство с нами.</p>

 <p>Мы специализируемся на обслуживании ваших деловых нужд

 и надеемся скоро вас увидеть снова.</p>

 <!-- нижний колонтитул страницы -->

 <table width="100%" bgcolor="black" cellpadding="12" border="0">

 <tr>

   <td>

     <p class="foot">&copy; TLA Consulting Pty Ltd.</p>

     <p class="foot">Пожалуйста, просмотрите <a href="legal.php4">нашу страницу с официальной информацией</a></p>

   </td>

 </tr>

 </table>

</body>

</html>

Этот файл можно разделить на 3 части. Верхнюю и нижнюю части назовем header.inc и footer.inc.

Содержимое header.inc:

<html>

<head>

 <title>TLA Consulting Pty Ltd</title>

 <style>

   h1 {color:white; ; text-align:center;

       font-family:arial,sans-serif}

   .menu {color:white; ; text-align:center;

          font-family:arial,sans-serif; font-weight:bold}

   td {background:black}

   p {color:black; ; text-align:justify;

      font-family:arial,sans-serif}

   p.foot {color:white; ; text-align:center;

           font-family:arial,sans-serif; font-weight:bold}

   a:link,a:visited,a:active {color:white}

 </style>

</head>

<body>

 <!-- верхний колонтитул страницы -->

 <table width="100%" cellpadding="12" cellspacing="0" border="0">

 <tr bgcolor="black">

   <td align="left"><img src="../files/235/files/235/logo.gif"></td>

   <td>

       <h1>TLA Consulting</h1>

   </td>

   <td align="right"><img src="../files/235/files/235/logo.gif"></td>

 </tr>

 </table>

 <!-- меню -->

 <table width="100%" bgcolor="white" cellpadding="4" cellspacing="4">

 <tr >

   <td width="25%">

     <img src="../files/235/files/235/s-logo.gif"> <span class="menu">Домой</span></td>

   <td width="25%">

     <img src="../files/235/files/235/s-logo.gif"> <span class="menu">Контакт</span></td>

   <td width="25%">

     <img src="../files/235/files/235/s-logo.gif"> <span class="menu">Услуги</span></td>

   <td width="25%">

     <img src="../files/235/files/235/s-logo.gif"> <span class="menu">Карта сайта</span></td>

 </tr>

 </table>

Содержимое footer.inc:

<!-- верхний колонтитул страницы -->

 <table width="100%" bgcolor="black" cellpadding="12" border="0">

 <tr>

   <td>

     <p class="foot">&copy; TLA Consulting Pty Ltd.</p>

     <p class="foot">Пожалуйста, просмотрите

                   <a href="legal.php4">нашу страницу с официальной информацией</a></p>

   </td>

 </tr>

 </table>

</body>

</html>

Файл home.php будет служить заменой для home.html  и будет содержать уникальное содержимое страницы и 2 оператора require():

<?php

 require('header.inc');

?>

 <!-- содержимое страницы -->

 <p>Добро пожаловать на сайт компании TLA Consulting.

 Пожалуйста, уделите некоторое время на знакомство с нами.</p>

 <p>Мы специализируемся на обслуживании ваших деловых нужд

 и надеемся скоро вас увидеть снова.</p>

<?php

 require('footer.inc');

?>

2. Использование оператора include()

При использовании оператора include(), в отличие от require(), включаемый файл вставляется "в сердце" нашего сценария не перед его выполнением, а прямо во время.

В отличие от файлов, загруженных при помощи require(), файлы, загруженные при помощи include(), могут возвращать значение.

Пример:

Существует необходимость часто открывать файлы. Вместо того, чтобы каждый раз повторно вводить одни и те же строки кода, мы хотим, чтобы это делал за нас включенный файл. Назовем его openfile.inc и придадим ему такой вид:

<?php

@ $fp = fopen($name, $mode);

if (!$fp)

{

echo '<p><strong>Невозможно открыть файл.</strong></p>';

return 0;

}

else

{

return 1;

}

?>

Вызывать файл будем из следующего сценария:

<?php

$name = 'file.txt';

$mode = 'r';

$result = include('openfile.inc');

if($result == 1)

{

echo "Все нормально";

}

?>

Обратите внимание, что переменные можно создавать в основном файле, во включаемом или запрашиваемом файле, при этом переменная будет существовать в обоих файлах. В этом отношении и require(), и include() ведут себя одинаково.

3. Передача параметров по ссылке через адресную строку

Достаточно часто встречаются сайты, ссылки которых включают в себя специальные символы - &, ?, %. Все это может быть и результатом работы РНР. Дело в том, что если в конце ссылки добавить ?имя=значение, это значение будет доступно под этим же именем в файле, куда указывает ссылка. Если необходимо добавить несколько имен, они могут быть разделены знаком &. Теперь мы можем сделать сайт, который будет доступен с помощью только одной странички. А всю остальную информацию эта страничка будет выводить на основании полученных по ссылке данных. Вид такой ссылки будет примерно таким: http://имя.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 вкладывается и исполняется. Таким образом, начало и конец остаются одинаковыми, а изменяется только середина. И какие-либо изменения уже не кажутся такими страшными, как раньше. Ведь сделать их надо только в одном файле, а отразится это на всем сайте.

Есть и другой путь. Его суть заключается в том, что у РНР есть доступ к так называемым переменным окружения сервера. Одна из этих переменных - запрашиваемый посетителем путь относительно адреса сайта. И этот путь становится нам доступен для использования. В этом случае ссылки у нас будут такого вида: http://имя.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 ($
add);
?>
… конец файла …
</html>

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

Задания.

Создать страницу с таблицей следующего вида:

Ссылка 1

Ссылка 2

Ссылка 3

Для 1-го варианта

Для 2-го варианта

Для 3-го варианта

Для 4-го варианта

Для 5-го варианта

С помощью операторов include() или (и) require() осуществить переход по ссылкам в 1-вом столбце с заменой содержимого ячейки, соответствующей Вашему варианту, во втором столбце на сообщение вида: «Вы нажали на ссылку i». Использовать передачу параметров, определяющих номер ссылки, через адресную строку.




1. Билеты по георафии
2. Курсовая работа- Бухгалтерская отчетность
3. Поняття економої моделі її складові частини 2
4. Общая характеристика законодательства России об исполнении уголовных наказаний до 1917 год
5. . Только 71 из 27000 выпускников города правильно решили задачу.
6. Методы определения требований к кандидатам на замещение вакантной должности
7. участники настоящей Конвенции считая что в соответствии с принципами провозглашенными в Уставе Организа
8. Subjects in ddition to the primry subjects
9. Калейдоскоп 630004 г
10.  Суспільні функції історичної свідомості історичного знання та історичної науки в суспільстві