Пятница, 17.05.2024, 02:11
DigitalBox
Приветствую Вас Гость | RSS
Главная Взаимосвязь Web-страниц Регистрация Вход
Меню сайта

Взаимосвязь Web-страниц



Самые простые Web-приложения получают информацию от пользователей через HTML-формы, а затем используют ее для вывода, хранения или проверки условных выражений. (Несколько примеров таких приложений рассматривалось в предыдущем разделе) Однако Web-приложения могут быть и гораздо более сложными. Так, торговая тележка должна "уметь" собирать и отображать различную информацию, следить за заказом клиента, вычислять сумму покупки, налоги и стоимость доставки, проверять состояние кредитной карточки, а также выполнять множество других действий. Такое приложение должно состоять из нескольких сценариев, в которых используются одни и те же данные. Кроме того, разработчики Web-приложения должны обеспечить возможность приема от пользователей целых файлов, а не только данные формы. В этом разделе рассматриваются фундаментальные вопросы, связанные с разработкой сложных Web-приложений.


Независимость Web-страниц

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


Перемещение между страницами Web-узла

Большинство Web-узлов состоит из нескольких страниц. Так, на статических Web-узлах переход от одной страницы к другой осуществляется с помощью ссылок (иногда реализованных в виде кнопки), на которых щелкают пользователи. Таким образом, можно путешествовать по узлу и искать требуемую информацию. В динамических Web-приложениях для пepeхода между страницами можно использовать и другие методы, основные из которых приведены ниже:

  • Ссылки. На новую страницу пользователь может перейти, щелкнув на ссылке.
  • Использование форм. Формы позволяют перемещаться между страницами щелчком на кнопке Submit.
  • Перемещение пользователей. В языке РНР имеется функция header(), с использованием которой пользователь может перейти на новую страницу без выполнения каких-либо действий.

Все эти методы более подробно рассматриваются в следующих разделах.

Вывод ссылок

В языке РНР можно воспользоваться функцией echo и просто вывести ссылку HTML (точно так же, как и другой фрагмент HTML). После этого ее можно использовать для перехода на новую страницу:

echo "<a href='newpage.php';>Новая страница</а>";


Использование форм

Для перехода на новую страницу можно использовать и формы. Дескриптор <form> позволяет задать сценарий, который будет обрабатывать информацию, введенную пользователем. После щелчка на кнопке Submit этому сценарию будут переданы данные формы и отобразится новая Web-страница.

Безусловно, для перехода на новую страницу совсем необязательно использовать форму для сбора информации. Можно воспользоваться пустой формой с кнопкой, после щелчка на которой пользователь переместится на новую страницу. Например, можно создать кнопку Cancel (Отменить) или Next (Следующая) с использованием дескрипторов <form> и <input>. Тогда после щелчка на этой кнопке будет выполнен переход на страницу, адрес которой указан в атрибуте action дескриптора <form>.

Функции, которые следует вызывать первыми

В РНР существуют функции, которыми можно воспользоваться только до начала генерации всего остального содержимого Web-страницы. К таким функциям относятся header(), setcookie() и session(). Если их вызвать после завершения формирования содержимого страницы, будет выведено следующее сообщение:

Warning: Cannot modify header information - headers already sent by (output started at /test.php:2) in /test.php on line 3

(Предупреждение: Нельзя изменить заголовок — заголовки уже отправлены (/test.php:2) в файле /test.php в строке 3)

Как можно заметить, в этом сообщении указано имя файла и строка, в которой была сгенерирована ошибка. Вполне возможно, что сообщение об ошибке выведено не будет, а страница вообще не появится в окне браузера. (Это зависит от используемого режима вывода ошибок в РНР) Обработка следующего фрагмента кода приведет к возникновению ошибки, поскольку вывод заголовка расположен после раздела HTML:

<head><title>Тестирование функции header()</title></head>
<body>
‹?php
     header("Location: http://janetscompany.com");
?›
</body></html>

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

‹?php
     header("Location: http://janetscompany.com");
?›
<html>
<head><title>Tecтирование функции header()</title></head>
<body>
</body>
</html>

Следующий фрагмент приведет к генерации сообщения об ошибке:

  ‹?php
     header("Location: http://company.com");
?›
<html>
<head><title>Тестирование функции header()</title></head>
<body>
</body></html>

Причину вывода сообщения об ошибке обнаружить не так то просто. Однако при внимательном анализе перед открывающим дескриптором ‹?php можно заметить символ пробела. Этот символ также отображается на Web-странице, и, следовательно, функция header() вызывается после некоторого выражения (хотя оно и является пробелом). Это типичная ошибка начинающих разработчиков, на обнаружение которой можно потратить достаточно много времени.


Перемещение пользователей

Язык РНР предоставляет метод, с использованием которого можно перейти на другую страницу вообще без щелчка на ссылке или кнопке. Это позволяет осуществить функция header() со следующим синтаксисом:

header("Location: URL");

С помощью этой функции Web-серверу можно передать сообщение вида Location:URL. В ответ браузеру будет передан файл, расположенный по указанному URL-адресу. Ниже приведено несколько примеров корректного использования функции header():

header("Location: newpage.php");
header("Location: http://company.com/catalog/catalog.php");

Как уже отмечалось выше, функция header() имеет одно важное ограничение: она должна вызываться перед генерацией какого-либо содержимого страницы. Нельзя сначала поместить код HTML, а после него — где-то в середине сценария — вызов функции header(). Эти же ограничения касаются и функций setcookie() и session() (см. врезку "Функции, которые следует вызывать первыми").

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

‹?php
     if ($typeAcct == "admin")
     {
          header("Location: AdminPage.php");
     }
     else
     {
          header("Location: SiteHomePage.php");
     }
?›

В приведенном фрагменте для администратора выводится специальная страница администрирования, а для других пользователей — главная страница Web-приложения. Перед функцией header() можно использовать сколько угодно функций РНР, которые не связаны с формированием HTML-кода Web-страницы. Однако размещение перед вызовом функции header() какого-либо HTML-кода приведет к ошибке.

Форма входа

Мини-чат

Календарь новостей
«  Май 2024  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031

Поиск

Друзья сайта
Скажи сайту спасибо
ЯндексЯндекс. ДеньгиХочу такую же кнопку



Получить WMR-бонус на свой кошелек!

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Copyright MyCorp © 2024 Бесплатный конструктор сайтов - uCoz