Гостевая
Форум
Разделы
Главная страница
Js скрипты
Php скрипты
Html шаблоны
Книги по Web дизайну
Статьи


Главная страница статей --> Хитрости при программировании php, заметки по базам данных

Передача и обработка данных средствами SSI

Источник: realcoding.net

Передача данных (1-й способ):


Данные передаются точно так же, как и для обычных html файлов - через URL либо с помощью формы методом GET. В принципе, и обрабатывать их можно точно так же. Но, если вы хотите изменять SSI-вставку в зависимости от переданных данных, читайте дальше.

Особенности:


Для SSI данные лучше передавать в виде name=value. Метод GET формы так и делает, а вот если вы самостоятельно формируете строку запроса, она должна выглядеть так:

file.shtml?var1=value1&var2=value2 и т.д.

Получение данных:


Нам мало передать данные. Нам надо еще и получить их. Для того, чтобы увидеть, что мы там себе передали, включите в файл строку

<!--#printenv -->

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

Самый простой способ использования:


Допустим, у вас на сайте есть FAQ, но ответы на вопросы такие объемные, что хотелось бы выводить их по одному и при этом, если потом приспичит поменять дизайн, чтобы долго не возиться. Мы делаем одну страничку (назовем ее faq.shtml), оформляем ее как положено, а в том месте, где должен быть ответ, пишем

<!--#include virtual=${file} -->

Учтите, что может быть, для вашего сервера надо использовать не фигурные, a круглые скобки или даже вообще без них обойтись.
Теперь ответы на вопросы пишем каждый в своем html-файле, в котором нет ничего, кроме текста да тегов, с ним связанных (B, FONT и т.д), и желательно не использовать атрибуты COLOR, чтобы потом не мучаться.
Ссылки на ответы надо делать следующим образом

<a href=faq.shtml?file=url>

где url - адрес html-файла, содержащего ответ, можно относительный - только смотрите не запутайтесь.

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

Обработка данных:


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

<!--#set var=name value=value -->

Передача данных

file.shtml?username=Alexey&birth=1974

эквивалентно

<!--#set var=username value=Alexey -->
<!--#set var=birth value=1974 -->

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

Можно просто вставить переменную в документ:

<!--#echo var=name -->

Например, используя переданные ранее данные, можно написать

Привет, <!--#echo var=username -->

В результате чего на экране появится Привет, Alexey
Пример посложнее. Если в файле написать

<!--#set var=title value=заголовок -->

то потом в вызывающем файле можно использовать

<title><!--#echo var=title --></title>

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

Можно поизвращаться и попробовать проанализировать переданные данные и на их основе что-нибудь сделать.

Условные операторы выглядят так:

<!--#if expr=condition -->
<!--#elif expr=condition -->
<!--#else -->
<!--#endif -->

Элемент endif является обязательным. elif можно повторять сколько угодно раз. После if и elif пишется HTML-код, который будет подставляться при истинности условия. После else пишется код, который подставится, если ни одно из имеющихся ранее условий не выполнилось.

Например:

<!--#if expr=$username=Alexey -->
<h1>Привет, <!--#echo var=username --></h1>
<!--#else -->
<h2>Привет, <!--#echo var=username --></h2>
<!--#endif -->

Такой нехитрый код выводит приветствие, но если человека зовут Alexey, буквы будут чуть-чуть побольше.

Передача данных (2-й способ)


Можно передавать данные и средствами SSI. Плюс у этого метода в том, что он, в отличие от первого способа, проходит незамеченным для пользователя. Чтобы передать данные, надо их присвоить какой- нибудь переменной. Все переменные, объявленные в файле, доступны и в вызываемых, и в вызывающих файлах. Но!!! Само cобой разумеется, что надо сначала подключить файл, а потом использовать имеющиеся в нем данные, а в подключаемых файлах использовать можно только то, что имеется к моменту подключения.


Второй способ организации сайта:


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

<html>
<!--
#set var=description value=описание -->
<!--#set var=title value=Заголовок -->
<!--#set var=keywords value=ключевые слова -->
<!--#set var=file value=url статьи -->
<!--#include virtual=файл интерфейса.shtml -->

Как видите, мы указали в нем заголовок, ключевые слова, описание и "приватный" файл, в котором содержится статья (text.html). Можно еще написать то, что вы там еще обычно пишете в заголовке. Я чаще всего ограничиваюсь одним title. Как-то спокойно отношусь к тому, что релевантность маленькая окажется :-).
Теперь создаем файл интерфейса (*,shtml). Начало его выглядит так:

<html><head>
<
title><!--#echo var=$title --></title>
<meta name=description content=<!--#echo var=$description -->>
<
meta name=keywords content=<!--#echo var=$keywords -->>
</
head>

Далее оформляем внешний вид - вешаем баннеры, вставляем счетчики, добавляем новости и т.д. Наконец в том уголке, где должна быть статья, пишем

<!--#include virtual=$file -->

Теперь для радикального изменения дизайна всего сайта достаточно изменить лишь наш файл интерфейса.
Нюансы
В зависимости от ситуации а так же различного программного обеспечения может быть разным синтаксис написания имен переменных. Если вы все сделали как тут написано и ничего не вышло, попробуйте следующее:
Вставьте строку <!--#printenv -->
и посмотрите, есть ли вообще у вас хоть какие-то переменные. Если есть, но использовать их не получается, попробуйте другой способ написания :

name
$name
$name
${name}
$(name)

Один из них сработает.


Если у вас не работает даже printenv, Возможно, вам сначала нужно сделать из своего компьютера сервер. Самый простой способ - установить программу Small Http Server. Проста в установке и использовании, инструкция на русском языке. После установки сможете тестировать на своем компе CGI, SSI, PHP и т.д.

Не всегда и не везде можно получить переданные через URL данные описанным выше способом. В большинстве случаев вам можно будет передать только одно значение file.shtml?value. Переданное таким образом значение value хранится в переменной QUERY_STRING или QUERY_STRING_UNESCAPED, если вам позарез нужно было передать буквы русского алфавита. Впрочем, может оказаться так, что на вашем сервере даже доступ к QUERY_STRING не предусмотрен. Используйте printenv, чтобы определить это. Если эта директива показывает, что среди доступных переменных QUERY_STRING и не пахнет, вам остается возможным передавать данные только средствами SSI. Если QUERY_STRING есть, но при попытке передать несколько значений в переменной сохраняются и знак равенства, и амперсант (&), значит сервер не выполняет предварительный анализ входящих данных и не воспринимает передаваемые значения как пары переменная-значение.



Похожие статьи:
- Как поднять тИЦ или 3 вида обмена ссылками
- Защита от hotlinking
- Почему не работает Интернет - сайт?
- Преимущества локальной оптимизации
- Основы ООП
- Баннеры, как достичь высокого CTR
- Таблица специальных символов
- Создавая свой веб-сайт, не превращайте его в призрака
- Аккуратный HTML
- HTML_AJAX в действии
- Создаем статистику для сайта своими руками на ASP.NET
- Почему веб-зеваки ничего не стоят
- Всплывающее меню для одностраничного портала


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |
[0.001]