IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  Open source  >

Изучаем PHP: Часть 1. Страница регистрации, формы и взаимодействие с базой данных

developerWorks
На предыдущую страницуСтраница 6 из 10 На предыдущую страницу

Опции документа

Обсудить


Выскажите мнение об этом учебном пособии

Помогите нам улучшить содержание


Наведем порядок: включение кода из файлов

Зачем нужно включение кода из файлов?

До сих пор весь код нашего скрипта хранился в одном PHP-файле. В этом разделе мы перераспределим его по нескольким файлам и изучим операторы включения. Причина появления такого механизма, как включение, в том, что некоторые сегменты кода используются на многих страницах, и выделение их в отдельный файл помогает избежать дублирования и упростить сопровождение кода.

В PHP существует два оператора включения файлов. Один из них используется для включения обычной информации, например, заголовков или сообщений, а другой -- для критической, например, для включения функций, вызываемых из Web-страницы.



В начало


Файлы для включения

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

Для начала создадим файл с именем top.txt и включим в него следующий текст:

<html>
<head>
<title>Workflow System</title>
</head>
<body>
<table>
<tr><td colspan="2"><h2>The Workflow System</h2></td></tr>

<tr>
   <td width="30%">
      <h3>Navigation</h3>

      <p><a href="register.php">Register</a></p>

   </td>
   <td>
   

Во второй файл, который мы назовем bottom.txt, добавьте следующие строки:

   </td>
</tr>
</table>
</body>
</html>

Сохраните файлы в том же каталоге, где уже находится файл registration.php.



В начало


Оператор включения include

Теперь включим созданные нам файлы в страницу регистрации. Внесите в файл registration.php следующие изменения:

                    <?php

   include("top.txt");

?>

<h1>Register for an Account:</h1>
<form action="registration_action.php" method="POST">

Username: <input type="text" name="name" /><br />
Email: <input type="text" name="email" /><br />
Password: <input type="password" name="pword[]" /><br />
Password (again): <input type="password" name="pword[]" /><br />
<input type="submit" value="GO" />

</form>

<?php

   include("bottom.txt");

?>
                

Мы убрали текст, с которого начинается и которым заканчивается обычно HTML-страница и добавили два оператора include с именами только что созданных файлов. Посмотрим, какова будет реакция браузера на эти изменения.



В начало


Посмотрим на результаты

Обновите страницу регистрации в браузере и вы увидите, что ее внешний вид сильно переменился, новый вариант показан на Рисунке 14.


Рисунок 14. Новый вид регистрационной страницы
XML error: The image is not displayed because the width is greater than the maximum of 500 pixels. Please decrease the image width.

Если вы нажмете клавишу просмотра исходного кода страницы в своем браузере, то увидите, что в нем объединены все три файла:

<html>
<head>
<title>Workflow System</title>
</head>
<body>
<table>
<tr><td colspan="2"><h2>The Workflow System</h2></td></tr>

<tr>
   <td width="30%">
      <h3>Navigation</h3>

      <p><a href="register.php">Register</a></p>

   </td>
   <td>


<h1>Register for an Account:</h1>
<form action="registration_action.php" method="POST">

Username: <input type="text" name="name" /><br />
Email: <input type="text" name="email" /><br />
Password: <input type="password" name="pword[]" /><br />
Password (again): <input type="password" name="pword[]" /><br />
<input type="submit" value="GO" />

</form>

   </td>
</tr>
</table>
</body>
</html>

Внесите такие же изменения в файл registration_action.php и отошлите данные регистрации, ваша вторая страница будет иметь новый внешний вид, сходный с первой.

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



В начало


Оператор включения require

Если PHP не может найти файла заголовка или нижнего колонтитула, то это плохо, но не катастрофично, приложение все равно будет работать. Если отсутствует файл, указанный в операторе include, PHP выводит предупреждение и продолжает обработку страницы.

Однако в некоторых случаях отсутствие включаемого файла является катастрофой. Например, мы могли решить, что полезно поместить описание функций validate() и db_connect() в отдельный файл и затем включить этот файл в registration_action.php при помощи оператора include. Если PHP не сможет найти файла с функциями, но не прекратит работу, то возникнет масса проблем. Для того чтобы предотвратить эту ситуацию, следует использовать оператор require вместо include:

<?php

   include("top.txt");
   require("scripts.txt");
?>

    <p>You entered:</p>

<?php 

    foreach ($_POST as $key=>$value) {
       echo "<p>".$key." = " . $value . "</p>"; 
    }

    $passwords = $_POST["pword"];
    echo "First password = ".$passwords[0];
    echo "<br />";
    echo "Second password = ".$passwords[1];

    if (validate($_POST) == "OK") {
        echo "<p>Thank you for registering!</p>";
...

В целом оператор require работает также, как и include, но если PHP не может найти включаемого файла, то он сообщает о фатальной ошибке и выполнение скрипта прекращается.



В начало


Предупреждение возникновения дубликатов.

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

<?php

   include_once("top.txt");
   require_once("scripts.txt");
?>

    <p>You entered:</p>

<?php 

    foreach ($_POST as $key=>$value) {
       echo "<p>".$key." = " . $value . "</p>"; 
    }
...

Когда PHP встречает операторы include_once или require_once, то происходит проверка, не было ли включения указанных файлов ранее, таким образом предупреждается включение файлов-дубликатов.



В начало



На предыдущую страницуСтраница 6 из 10 На предыдущую страницу
    IBM в России Конфиденциальность Контакты