Использование класса QuickTemplate

Несмотря на то что он выглядит слишком простым, работает он достаточно хорошо. В завершение темы код в листинге 7.6 показывает класс QuickTemplate вдействии.

include('quicktemplate.php'); // Определение класса Stemp_data = arrayCmain1 => arrayt’file’ ■> ‘index.thtml1), ‘leftnav’ -> array (’file’ => ‘link.html’),
‘content’ => array(’content’ => ‘Это содержимое: ADYNAMIC!’), ‘title’ ~> array (’content’ => (more…)

Tags: , ,

Related posts

Механизм шаблонов Smarty

Smarty — это необычайно мощная и сложная система шаблонов, доступная разработчикам РНР. Возможно, это наилучшее универсальное базовое решение на когда-либо существующих, которое разделяет логику представления и логику приложения без принесения в жертву удобства и практичности. Несмотря на то что она функционирует как полный сценарно-шаблонный язык, применение этой функциональности не является обязательным. Когда автор впервые познакомился с пакетом Smarty, то немедленно отвернулся от него, увидев первый (more…)

Tags: , ,

Related posts

РНР-строк

После того, как вы скопируете соответствующие файлы и создадите необходимые каталоги, следующим шагом будет настройка механизма Smarty. Это делается путем открытия файла Smarty,class.php и модификации соответствующих переменных-членов (определены в начале класса).
Хотя в самом классе кратко описана каждая из переменных, ниже представлено руководство по некоторым важным конфигурационным переменным, доступным механизму Smarty.
$template_dir Путь поиска шаблонов для использования Smarty — указывает на каталог с только что заданным вами именем (по умолчанию (more…)

Tags: , ,

Related posts

Инсталляция Smarty

Чтобы начать пользоваться Smarty, вы должны выполнить несколько шагов для его правильной инсталляции. Во-первых, необходимо загрузить последнюю версию Smarty, которая доступна по адресу http: / /smarty. php. net.талогов с файлами. Из них всех только небольшая часть представляют собой сам механизм Smarty — три класса (Smarty.class.php, Smarty_Compile.class.php н Conf ig_File. class. php) и каталог plugins. Все три файла нужно скопировать в каталог, находящийся в пути включаемых файлов вашей инсталляции РНР. Если нет возможности поместить их в такой каталог (например, у вас нет доступа к файлу ph (more…)

Tags: , ,

Related posts

DOMAIN_NAME

Обратите внимание, что в качестве значения параметра DOMAIN_NAME используется не просто coggeshall.org, а .coggeshall.org (с ведущей точкой). Это еще одна гарантия от злоупотребления cookie-наборами. Параметр DOMAIN_NAME должен иметь как минимум две точки в имени домена, а в некоторых случаях — и три. Это позволяет предотвратить передачу cookie-наборов с именем домена, такого как . com (который совпадает со всеми доменами, оканчивающимися на .com). Для того чтобы определить, сколько точек нужно указывать в (more…)

Tags: , ,

Related posts

Сеансы РНР

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

Tags: , ,

Related posts

Реализация cookie-наборов в сценариях

Теперь, когда мы познакомились с реализацией cookie-наборов, посмотрим, как применить эти знания для создания cookie-наборов, используемых внутри сценариев.
Наиболее очевидным методом установки cookie-набора в PHP-коде является создание заголовка Set-Cookie с помощью PHP-функции header (), как показано в листинге 6.2.
Листинг 6.2. Установка cookie-набора с использованием функции header ()

header("Set-Cookie: mycookie=myvalue; path=/; domain=.coggeshall.org");

Поскольку эта функция используется для отправки HTTP-заголовков, она должна быть выполнена до пересылки содержимого {например, с помощью операторов echo или print). Хотя это работает, такой метод не может быть рекомендован для установки cookie-наборов с использованием PHP-функций. Чуть позже мы рассмотрим функцию setcookie (), используемую для решения этой задачи.
Второй (и, возможно, менее известный) метод установки cookie-наборов — использование HTMI.-дескрипторов. В частности, HTML-дескриптор <МЕТА> можно использовать для имитации HTTP-заголовков внутри HTML-страницы, применяя атрибуты HTTP-EQUIV и CONTENT. Например, чтобы установить такой же cookie-набор, как в листинге 6.2, можно воспользоваться HTML-кодом, представленным в листинге 6.3.
Листинг 6.3. Установка cookie-набора с использованием HTML-дескриптора <мета>

<МЕТА HTTP-EQUIV-"Set-Cookie"
CONTENT="mycookie=myvalue; path=/; domain=.coggeshall.org">

НА ЗАМЕТКУ -
Дескриптор хорош не только для установки cookie-наборов. Несмотря на то что он зависит от используемого браузера, большинство известных браузеров поддерживают НТТР-э а головки, заключенные в дескриптор <МЕТА>. Например, с помощью HTTP-заголовка Refresh можно перенаправить браузер на новую страницу:
<МЕТА HTTP-EQUIV=11 Refгеsh" CONTENT="0; url=http://www.coggeshall.org">
Третий и возможно наиболее известный метод установки cookie-наборов — использование PHP-функции setcookie (). Функция setcookie [) имеет следующий синтаксис:
setcookie (Sname [,$value [, $expire [, $path [, Sdomain [, $secure] ] ] ] ]);
Эта функция применяется как для создания, так и уничтожения cookie-наборов в клиентском браузере. Как и в случае с отсылкой HTTP-заголовков из РНР-сценария, эта функция должна быть выполнена до отправки клиенту любого содержимого. Перед тем как перейти к исследованию этой функции, вкратце рассмотрим каждый параметр. Для большинства частей назначение каждого параметра такое же, как и у за-головка Set-Cookie, рассмотренного ранее. В частности, Sname представляет имя переменной cookie-набора, Svalue — ее текущее значение, Sexpire — метка времени Unix актуальности cookie-набора, Spath — путь на сервере, для которого создан cookie-набор, Sdoraain — домен, для которого создан cookie-набор, и, наконец, Ssecure — это булевское значение, показывающее, что cookie-набор создан только для защищенного HTTP.
При использовании функции setcookie!) любые необязательные параметры мо-гуг быть при необходимости установлены в NULL. В листинге 6.4 показа пример применения функции setcookie!) для установки cookie-набора, аналогичного приведенному в листинге 6.2.
Листинг 6.4, Использование функции setcookie ()

setcookie("mycookie", "myvalue", NULL, "/", ".coggeshall.org");

Если нужно изменить значение cookie-набора, как в случае, когда мы напрямую работали с заголовком Set-Cookie, нужно убедиться, что значения Spath, Sdomain и Sname функции setcookie!) идентичны первоначально использованным. Для удаления cookie-набора можно использовать небольшую хитрость — задать параметр $value равным NULL (при этом параметры Spath, Sdomain и Sname должны быть установлены должным образом). Пример удаления cookie-набора, установленного в листинге 6.4, представлен в листинге 6.5.
Листинг 6.5. Удаление cookie-набора с использованием функции setcookie ()

setcookie("mycookie", NULL, NULL, ".coggeshall.org");

После того как cookie-набор установлен, он остается неактивным до момента, когда браузер запросит у Web-сервера другой документ. Для получения доступа к значению cookie-набора, полученного от браузера, РНР использует суперглобальный массив S_C0OKIE. Этот массив аналогичен массивам 5GET и $_P0ST за исключением того, что он хранит значения cookie-наборов. Каждый ключ в этом суперглобальном массиве представляет отдельный cookie-набор (имя ключа — это имя переменной cookie-набора) .
Для иллюстрации этого примера выполним обитую задачу и напишем сценарий, определяющий, активен ли cookie-набор на клиентском браузере. Для этого, во-первых, потребуется создать cookie-набор, а потом заставить браузер перезагрузить страницу. Когда браузер перезагрузит страницу, он, если примет этот cookie-набор, немедленно вернет его серверу. Проверив наличие этого cookie-набора при перезагрузке страницы, можно проверить работоспособность cookie-набора.
Единственная хитрость в этом сценарии — определить, был ли установлен cookie-набор или браузер по какой-либо причине его отверг. Для того чтобы дать возможность сценарию определить, был ли установлен cookie-набор, при перенаправлении браузера необходимо использовать параметр GET, как показано в листинге 6.6.

Tags: , ,

Related posts

Форматирование строк

Ecjui для компьютера строки — это не более чем коллекция символов, то для человека они часто представляют концепции и данные, которые должны следовать определенным соглашениям. И даже когда вы имеете дело с компьютерами, все равно иногда необходимо гарантировать, чтобы содержимое строк следовало определенным правилам. Например, строки, которые должны быть переданы Web-браузеру, должны форматироваться в соответствии со стандартами HTML, чтобы они могли корректно ото б ражаться. (more…)

Tags: , ,

Related posts

Основы разработки на РНР

РНР представляет собой мощный язык написания сценариев для Web, который продолжает развиваться, начиная с версии РНР 3, выпущенной в 1997 году. С точки зрения разработчика РНР поддерживает невероятный большой диапазон Inlernel-технологий, что делает его на сегодняшний день ведущим языком сценариев для Web. Цель настоящей главы — быстро ознакомить вас с основами разработки на РНР, тем самым заложив фундамент для понимания остальной части книги.
Мы начнем со “скелета” процесса разработки на РНР, а затем постепенно перейдем к некоторым более сложным фундаментальным аспектам РНР. (more…)

Tags: , ,

Related posts

Базовый синтаксис РНР

Теперь, когда вы знакомы с тем, как выполняются PHP-сценарии, поговорим о написании вашего первого РНР-сценарпя. Все РНР-сценарни пишутся в виде блоков кода. Эти блоки при необходимости могут быть встроены в HTML, и обычно определяются с помощью строки в начале и ' — в конце. Все, что вне этих идентификаторов блока, интерпретатор РНР игнорирует и передает обратно Web-серверу для отображения на стороне клиента. В листинге 1.1 показан пример простого РНР-сценария, выводящего приветственную строку, с которого вполне можно начать.Как и ожидалось, первые три строки интерпретатором РНР (more…)

Tags: , ,

Related posts

Основы разработки на РНР


Sanswer = (5а < $b) || ($с > $d); /* хорошо */ $answer = $а < Sb |I $с > $d; /* плохо */
(more…)

Tags: , ,

Related posts