Школа начинающего Юзера

TopList
Rambler's Top100Rambler's Top100



SSI. Ответы на вопросы.

После публикации заметкок "Передача и обработка данных средствами SSI" и "Сайт с использованием SSI" мне пришло довольно много писем писем с вопросами по данной теме. Вторая статья была также опубликована в журанале "Программист" (Москва, 2001, № 4), а первая перепечатана на нескольких сайтах (возможно, и вторая тоже). В основном вопросы одни и те же, почему-то off-line читатели менее любопытны (или более закомплексованы?).

1

Самый "популярный" вопрос-восклицание: "Ничего не работает!". В журнале была допущена опечатка. Вызов директив SSI выглядит как
<!--#директива -->
то есть после восклицательного знака и перед знаком "больше" должно быть по два "минуса", а не одно тире, как было напечатано. После прояснения этого вопроса, большинство респондентов сообщало, что "все в порядке".

1a

Для директивы include путь к подключаемому файлу указывается относительно файла, содержащего данную конкретную директиву. Другими словами, если вы из файла А включаете файл Б из другого каталога, то для include, содержащихся в Б, путь относительно Б и указывается, а не относительно А, как может показаться на первый взгляд. При этом на директивы SSI не действует <base href="url">, так как это команда броузеру, а не серверу, обрабатывающему директивы.

2

<!--#if expr=(условие) --> Вполне возможно, что у вас вместо скобок надо использовать кавычки или апострофы. Смотрите, не запутайтесь в них. В отличие от скобок, кавычки и апострофы не делятся на открывающие и закрывающие.

3

<!--#echo var="$name" -->
Как выяснилось, с помощью мне писавших, есть несколько вариантов обращения к переменной, а не два, как было написано. Это
"$name"
"name"
"${name}"
"$(name)"
Причем, синтаксис написания <!--#set var="name" --> один для всех.

4

On-line читатели решили, что фраза "именно так работает на сервере, где расположен мой хоумпейдж", относится ко всему тексту, хотя это относилось только к предыдущему пункту.

5

Не везде данные, переданные через URL, подвергаются предварительному анализу. Поэтому, попытавшись использовать file.shtml?param1=value1[&paramX=valueX], не у всех получилось. Я не зря советовал использовать printenv, чтобы посмотреть, какие переменные у вас доступны. Зато у всех есть доступ к переменной QUERY_STRING, в которой содержится та часть url, которая после знака вопроса. И вы можете смело ее использовать. Правда, в этом случае получить и передать вы сможете только одно какое-нибудь значение, а не несколько. Создайте файл с одной-единственной строкой <!--#printenv --> и вызовите его, к примеру, file.shtml?action=test. Если среди списка доступных переменных появилась action - хорошо, если нет - у вас тот самый тяжелый случай. Вам остается только использовать QUERY_STRING, если она, конечно, доступна. Есть еще переменная QUERY_STRING_UNESCAPED. В нее тоже заносится часть url после знака вопроса, но при этом имеющиеся пробелы, специальные символы и буквы русского алфавита отображаются как есть.

6

Если вы передаете через url имя файла, который надо бы включить, это можно сделать так. Вызов строки, к примеру,file.shtml?supertext, а в нужном месте <!--#include virtual='"$QUERY_STRING".txt' -->. Это пример подключения файла supertext.txt, находящегося в том же каталоге, что и файл, содержащий include на него. Если supertext.txt находится в другом каталоге, можно использовать <!--#include virtual='catalog/"$QUERY_STRING".txt' -->

7

Для "не программистов". Прежде, чем делать необходимые SSI-вставки, сначала сделайте свою страницу полностью. Затем выделяйте нужные фрагменты кода и применяйте "вырезать". Сохраняйте вырезанный кусок в отдельном файле таким, каким он вырезался, а на его месте вставляйте include. Не нужно добавлять какие-либо еще теги во вставку. Вставляться будет содержимое подключаемого файла, а не интерпретация содержимого броузером. А то у некоторых в итоговой страничке получалось, к примеру, по десятку тегов html, head, title и body. Также не имеет значения, какое расширение у подключаемого файла. Если файл не содержит директив SSI, расширение может быть любым.

8

Опять-таки для "не программистов". По адресу http://mysite.hut.ru/example/ssi.shtml находится "ноу-хау", как все это организовано у меня самого - описание структуры сайта и полный текст основных файлов.

9

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




Внимание! Это оригинал сайта. Копия находится по адресу http://user.dax.ru/ Если данный сайт окажется недоступным или скорость загрузки вас не устроит, вы всегда можете прочитать интересующие вас статьи здесь

X