Замечание: Сейчас можно указать только один параметр тега с одинаковым именем
<#p NAME="parameterName" [fmt=currency|money]> вставляет значение переданного параметра с заданным именем Имеет действие только в шаблоне. Если задан параметр fmt="currency", параметр будет написан прописными буквами. Если параметр не представляет десятичное число, будет выдано
ноль рублей 00 копеек.
fmt=money представляет денежный формат в соответствии с настройками системы, то есть
100,00 р.
Но, если в реестре задан иной формат валюты, будет использован заданный в реестре.
Шаблон .htt заголовок, тело и окончание, и может также содержать часть (ELSE) для случая, когда SELECT не возвращает ни одной записи.
Тело находится между тегами <#@> и <#/@>.
Все, что находится до <#@> считатется заголовком. Заголовок содержит примерно такой текст: <table>
Затем <#@> тег открывает тело. Тело- это повторяемые поля для одной строки со следующими тегами: <#f NAME="ИМЯПОЛЯ "..> Атрибуты используются для форматирования страницы/таблицы.
Окончание следует за закрывающим тегом <#/@>, содержит примерно такой текст: </table> Если Вы хотите специальным образом информировать пользователя о том, что SELECT не вернул ни одной записи, укажите перед тегом <#/@> тег <#!@> и поместите между ними необходимое оповещение.
Если нужно вывести поля для редактирования внутри шаблона , используйте соответствующие теги <INPUT>.
Ограничения: В теле (между тегами <#@> и <#/@>( или<#!@>) ), в заголовке и в окончании можно указывать теги <#p>. Теги <#f> можно использовать только внутри тела. Внутри ELSE (между тегами <#!@> тег <#/@>) ни один из тегов <#> не работает.
В запросе SQL параметры передаются со знаком ":":
:PARAMETER
Семейство не надо указывать, только имя параметра.
Знак двоеточия ":", если его надо поставить в запросе, можно ввести двумя знаками двоеточия "::".
Специальные параметры начинаются со знака "$". Например, параметр ":$FROM" подставляет в запросе значение ip адреса клиента. Имена специальных параметров перечислены в описании тега <#A name=sys> и <#A name=ip>
Файл параметров позволяет задать простые подстановки в параметры. При этом параметр разбивается на слова, и каждое слово участвует в sql запросе самостоятельно там, где это указывается символами %s.
Например, параметр :WORDS описан в файле .par так:
WORDS=" ( W.WWORD LIKE UPPER("%s") )
"
WORDS delimiter=" AND "
WORDS %chars="~.*"
WORDS min=3
WORDS empty=" ( W.WWORD LIKE "ENSEN" ) "
Допустим, параметр WORDS равен "слово1 слово2~ 12". Параметр разбирается на слова и заменяется на sql выражение
( W.WWORD LIKE UPPER("слово1") AND ( W.WWORD LIKE UPPER("слово2%")
Обратите внимание, знак тильды заменен на знак %, а слово 12 отброшено как короткое (короче 3 символов)
Теперь, если параметр WORDS пустой или, например, все слова оказадись короче трех символов, то в sql выражение будет добавлено выражение, заданное в строке WORDS empty:
(W.WWORD LIKE "ENSEN")
Описание строк
Строка в файле .par | Значение | Замечание |
ПАР=" | %s - вставка параметра | * |
ПАР delimiter= | Соединитель конструкций в sql выражении (обычно _AND_) | * ? |
ПАР %chars | Перечисление символов, вместо которых в sql выражение будут подставляться символы "%" | * |
ПАР min | Минимально допустимая длина слова | # |
ПАР empty | Строка, подставляемая в случае если параметр пустой | * |
*Обязательны кавычки в начале и конце. Допустимы кавычки внутри строки (между начальной и конечной кавычками)
? Не забудьте про пробелы в начале и конце этой строки, если это необходимо, (например, "_AND_", где знаком "_" изображены пробелы для отделения в выражении sql.
# Длина слова больше нуля. Опустите эту строку, если не надо делать контроль за минимальной длиной слова в параметре. Если ПАР min меньше или равен 0, минимальная длина слова в параметре не проверяется.
стре задан параметр CurrencySimple=0x1 (True), то вместо формата из настроек системы будет использован простой формат 100=00
Пример: <#p name="family1.P1">
<#t NAME="familyName">имя семейства файлов: запроса .sql, шаблонов .htt
Замечание: запрос должен быть SELECT Задает шаблоны для создания таблиц, но можно задавать теги не только, но и иначе форматировать текст. Имеет действие только в шаблоне.
Пример:<#t name=query1>
Можно задать параметры, передаваемые в форму, используя знак $ для обозначения параметра. Например,
<#t name=$Param_Name1$Param_Name2>
при значении параметров Param_Name1=form и Param_Name1=12 будет равнозначен
<#t name=form12>
Конец имени параметра определяется по символу, отличному от '_', '0'..'9', 'A'-'z' либо поначалу нового имени параметра (то есть если встречен символ $). Специальный случай- два знака '$' подряд. Он служит признаком конца параметра. Например, <#t name=$Param_Name1$$Param_Name2> будет заменен на <#t name=formParamName2>
<#e NAME="sqlFile" [stored=boolean]> Выполняет выражения. Имеет действие только в шаблоне
где boolean:
t[rue] | f[alse] |
1 | 0 |
Y[es] | N[o] |
Д[а] | Н[ет] |
Замечание: запрос должен быть INSERT, UPDATE, DELETE или, может быть, CREATE TABLE
Пример: <#e name="dosmth.sql">
Можно задать параметры, передаваемые в форму, используя знак $ для обозначения параметра. Пояснения смотрите в описании тега <#t>
Необязательный параметр stored=true указывает, что в файле .sql задано выражение EXECUTE PROCEDURE... в соответствии с синтаксисом INTERBASE или (в случае BDE и NC_OCI) как описано в файле SPPrsr.pas:
[EXECUTE|PROCEDURE]NAME(PARAMETER [IN|OUT][DEFAULT VALUE],..)
<#metas>вставляет теги META:
<META NAME="Generator" CONTENT=>
<META NAME="Request" CONTENT=>
...
для отладки (в основном для контроля передаваемых параметров, в особенности в случае использования метода CGI POST вместо GET)
<#firstno> первый номер
<#lastno> последний номер
<#pageline> строка листания страниц (см. также first, last, step)
<#qty> число строк в таблице
<#a name=sys value=параметр>
Параметр: STATUS | BANNER | SCRIPT | PATTERNPATH
| QTY | PAGELINE | PAGELINELIMIT | PAGELINESTEP
| ECCNAME | OPTMKNULL | OPTIONHTML | ECCXLAT
| FIRSTNO | LASTNO
| TODAY | TIME | NOW
| MAXTHREADS | ACTIVETHREADS | INACTIVETHREADS| CACHECONNECTIONS | QUERIES | PWD
<#A name=sys value=OPTMKNULL>. Тег возвращает значение CHECKED или пустую строку и показывает, подставляются ли значения NULL в пустых параметрах, передаваемых в sql предложения. По умолчанию - нет, это приведет к возникновению ошибок в sql предложениях, когда пользователь какой- либо параметр сделает пустым. SQL требует применения значения NULL. Чтобы активировать режим, отредактируйте соответствующий параметр реестра или каждый раз устанавливайте режим
../setup/...&mknull=true
Примечание: NOW возвращает комбинацию даты и времени (в форматах, задаваемых ShortDateFormat и LongTimeFormat).
<#A name=sys value=MAXTHREADS | ACTIVETHREADS | INACTIVETHREADS | CACHECONNECTIONS | QUERIES> возвращает максимальное число потоков, активных потоков и неактивных (закрытых) потоков, уничтожаются ли потоки после завершения потока (CHECKED=нет, а кэшируются, ''- уничтожаются). QUERIES показывает число запросов, выполненных is2sql.dll с момента последнего запуска is2sql.dll (что все равно, перезапуска web- сервера).
<#A name=sys value=pwd hash=НомерТелефона> вычисляет пароль для заданного номер телефона. Нельзя в качестве параметра hash передать другой тег, например, <#f>. Вместо этого используйте опцию fmt=hash тега <#f>.
<#A name=sys value=OPTMKNULL> возвращает CHECKED, если ставится NULL вместо пустых параметров.
<#A name=IP value=параметр>
Параметр:
USERAGENT|FROM|HOST|REFERER|DERIVEDFROM
CONNECTION | REMOTEADDR | REMOTEHOST | SERVERPORT | SCRIPTNAME | EXPIRES | SERVERVARLIST
Тег <#a name=ip value=host> может использоваться для управления предоставляемой клиенту информации внутри приложения. В следующей таблице приведен пример, какая информация об ip соединении доступна
USERAGENT | FROM | HOST | REFERER | derived from | connection | remote addr | remote host | server port | script | expires |
Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt) | ensen | http://ensen/stat/log/statnav.htm | Keep-Alive | 10.8.1.15 | 10.8.1.15 | 80 | /cgi-bin/is2sql.dll | 29.12.1899 |
В поле from возвращается email клиента, если браузер позволяет это делать.
Тег <#a name=ip value="SERVERVARLIST"> возвращает список 29 полей ECB и серверных переменных (каждая на новой строке, имя переменной=значение переменной):
Серверные переменные |
Описание | Значение (пример) |
SERVER_PROTOCOL |
протокол web- сервера | HTTP/1.1 |
URL |
/scripts/is2sql.dll | |
HTTP_CACHE_CONTROL |
||
HTTP_DATE |
||
HTTP_ACCEPT |
image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/x-comet, */* | |
HTTP_FROM |
||
HTTP_HOST |
ensen | |
HTTP_IF_MODIFIED_SINCE |
||
HTTP_REFERER |
http://ensen/quiz/ | |
HTTP_USER_AGENT |
Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt) | |
HTTP_CONTENT_ENCODING |
||
CONTENT_TYPE |
application/x-www-form-urlencoded | |
CONTENT_LENGTH |
44 | |
HTTP_CONTENT_VERSION |
||
HTTP_DERIVED_FROM |
||
HTTP_EXPIRES |
||
HTTP_TITLE |
||
REMOTE_ADDR |
62.76.127.26 | |
REMOTE_HOST |
62.76.127.26 | |
SCRIPT_NAME |
/scripts/is2sql.dll | |
SERVER_PORT |
80 | |
HTTP_CONNECTION |
Keep-Alive | |
HTTP_COOKIE |
||
HTTP_AUTHORIZATION |
поля ISAPI extension control block (ECB) (отмечаются в списке звездочкой):
поле ECB | Описание | Пример значения |
*METHOD |
GET или POST
ECB.lpszMethod |
POST |
*GET_QUERY_STRING | ECB.lpszQueryString | |
*PATH_INFO |
ECB.lpszPathInfo | |
*PATH_TRANSLATED |
ECB.lpszPathTranslated | C:\InetPub\wwwroot |
*POST_DATA |
ECB.lpbData
(число байт ECB.cbAvailable) |
dbs=equiz&form=%2Fquiz%2Fpin%2Fpin.htm&sno=1 |
<#a name=sys value=_pwd_> помещает значение пароля пользователя (для получения пароля пользователя нужно задать пароль администратора в параметре is2sql.dll pwd)
<#a name=sys value=_hash_> помещает значение номер телефона пользователя, по которому вычислен пароль для текущего года. Если не был задан пароль администратора, то пароль не вычисляется, а значение будет то, которое ввел пользователь.
<#a name=sys value=mail> отправляет письмо адресату. Нужно задать следующие параметры:
Параметр | |
host | Сервер smtp (имя или ip адрес) |
port | Порт сервера. По умолчанию 25. |
userid | Учетная запись пользователя на сервере smtp. |
from | email отправителя |
fromname | Имя отправителя |
address | email получателя или поле таблицы БД, где записан e-mail |
subj | Тема сообщения. Можно указать имя поля таблицы, которое содержит тему сообщения. |
banner | имя файла, содержимое которого помещается перед телом сообщения (банер в письме). |
body | Имя параметра в котором находится тело письма, или Имя файла (можно указывать алиасы web сервера) или содержание письма |
mime=plain|html|sgml|tab | Тип кодировки письма. По умолчанию text/plain (plain). Достаточно первой буквы. |
ok | Подтверждение об отправке, выводимое в форму в браузере. По умолчанию ничего не подставляется на месте тега. |
fail | Сообщение об ошибке при отправке, выводимое в форму в браузере. По умолчанию выводится описание ошибки. Этот параметр фактически подавляет сообщение об ошибке. Рекомендуется использовать параметр fail="", так как |
charset | Кодовая страница, в какой отправлять
адресату. Например, koi8-r, us-ascii, win-1251.По умолчанию
win-1251. Если тип mime- text/html, то внутри html также можно
указать кодировку. Один знак пробела понуждает использовать значение, наиболее подходящее для письма. Не делайте предположний относительно этого значения. Считайте его в таком случае неопределенным. А вообще- то это us-ascii. |
Следующие значения value в теге <#a name=sys value=..[newvalue=...]> могут быть вставлены или выставлены новые значения:
STATUS- строка статуса операции
BANNER- заголовок ответа
SCRIPT- имя файла скрипта (DLL библиотеки)- изменение этого параметра не приводит к использованию другой DLL
PATTERNPATH- путь к файлам по умолчанию
ECCNAME- имя кодировочного файла
CONTENT-TYPE- тип ответа (по умолчанию -'text/html')
Последний случай представляет наибольший практический интерес. Например, используйте следующие теги в ваших шаблонах:
<#a name=sys value=Content-Type newvalue="text/plain"> - тогда браузеру будет передано содержимое текстового типа, без HTML разметки.
<#a name=sys value=Content-Type newvalue="text/plain">
На месте тега не будет ничего вставлено. Следующий пример вставляет текущее значение типа ответа:
<#a name=sys value=Content-Type>
В sql выражениях можно подставлять значения, которые возвращают теги <#a name=sys> и <#a name=ip>. Для этого такой параметр должен начинаться символа доллара "$". Например,
SELECT ':$UserAgent' UA ...
вернет строку описания браузера в виде списка совместимости.
В конверте письма (поля subj, from) можно использовать кириллицу в кодировке WIN1251. Если обнаруживаются символы из расширенного набора символов ASCII, то поле кодируется.
Создает новый параметр <#P>, копируя значение в него из старого параметра. Операция присвоения (action="=") нужна в случае, когда параметр формы нужно передать дальше, но с другим именем, как это требует семейство.
Пример:
<#c name=family1.par1 action="=" value=family2.par1>
инкрементирует значение параметра. В type указывается тип параметра:
type | Тип | Величина инкремента |
i | целое число | 1 |
f | вещественное число | 1.0 |
d | дата | 1 день |
t | дата и время | 1 день |
По умолчанию i - целое число (десятичное или шестнадцатеричное , шестнадцатеричное должно предваряться символом '$')
Создает новый параметр если параметр отсутствовал и записывает значение, заданное в Значение.
Для чего должен использоваться - неясно.
Часто требуется передавать полученные в cgi запросе параметры из формы в форму. Параметры передаются в тег <input type=hidden ...>
<#h name=Параметр[,Параметр]>
Когда форма будет отправлена, параметр из скрытого параметра будет передан дальше. Через запятую (без пробелов) можно указать список передаваемых параметров. Наиболее часто нужно передавать параметры, отвечающие за соединение с базой данных db, user и key
Пример:
<#h name=dbs,user,key>
Параметры соединения с базой данных.
<#h name=first,last>
Параметры управления количеством одновременно отображаемых записей таблицы
<#f name="ИМЯПОЛЯ"
[fmt=currency|money|hash|datetime specifier="mmmm yyy"]
[replace=emptysame]
[http=encode][copy=ИмяПараметра]> тег поля. Используется в .htt между тегами <#@> и <#/@>. Подставляет значение поля, преобразованное для передачи http.
Опция replace, равная emptysame. Назначение этой опции- в том, чтобы не не помещать на странице повторяющиеся значения. Значение поля, отличающееся от предыдущего, будет помещено на странице. Значение поля, не отличающееся от предыдущего, не будет помещено на странице.
Опция http, равная encode, вызывает HTTPEncode для обеспечения прозрачности. Необходимо указывать модификатор http=encode в ссылках типа
<a href="http://localhost/cgi-bin/is2sql.dll/show?parameter=<#f name=field_name http=encode>
чтобы возможные символы были правильно преобразованы (пробелы- в знаки '+', управляющие и символы из расширенного набора - к виду %XX)
Если не указан параметр fmt=currency, значение поля будет приводиться к строковому представлению, используя свойство AsString. Это касается также полей дат, времени и денежных полей. Если задан параметр fmt=currency, целая часть числа будет преобразована в рубли, а дробная- в копейки и результат будет написан прописью (в рублях и копейках). При этом часть числа, меньшая 1 копейки, будет округлена функцией round(), то есть большее или равное в точности полкопейки будет округлять до следующего числа целого числа копеек, а меньшая- часть копейки будет отброшена.
fmt=money представляет денежный формат в соответствии с настройками системы, то есть 100,00 р. Но, если в реестре задан параметр CurrencySimple=0x1 (True), то вместо формата из настроек системы будет использован простой формат 100=00
Опция fmt=datetime specifier=xxx форматирует строку даты и(или) времени. Параметр specifier задает формат отображения даты и времени. Например, формат "mmmm yyyy" будет отображать полное название месяца и четыре цифры года, дата и время не будут показаны.
Опция fmt=hash вычисляет пароль по заданному полю, только когда в параметре передан правильный пароль администратора.
Опция copy предназначена для того, чтобы создать заново или изменить старое значение параметра формы. Может использоваться для передачи в следующую форму параметра значения из поля таблицы.
Если поле не найдено, тег <#f> пробует найти специальные поля.
<#f name="ИМЯ_BLOB_ПОЛЯ" fmt=external dll="" func="" [specifier=""]>
Специальный модификатор fmt=external имеет дополнительные параметры, которые отсутствуют в случаях других модификаторов формата fmt:
dll- имя динамически загружаемой библиотеки. В пути имени можно указывать алиасы web- сервера.
func- имя функции
specifier- необязательный строковый параметр, передаваемый в функцию динамически загружаемой библиотеки.
Этот тег используется для вызова функции из динамически загружаемой библиотеки для форматирования поля таблицы. В
Путь /show - основной путь is2sql.dll, действующий по умолчанию, то есть его можно опустить. Также можно использовать укороченный путь /s.
Производит подсоединение к заданной БД (параметр dbs) с указанным именем и паролем пользователя (параметры user, key), производит разбор шаблона, задаваемого в параметре form и выполняет найденные в шаблоне запросы к БД. Результат выполнения запросов может возвращаться в создаваемой по шаблону html странице.
Обязательный параметр form. Если в реестре не указан алиас БД, имя и пароль пользователя БД по умолчанию, тогда обязательны параметры dbs, user и key. Если в параметре form задана html форма, содержащая тег контроля доступа <#r>, обязательны параметры uid и ukey, идентифицирующие пользователя (в данном случае имеется в виду не пользователь базы данных, а пользователь web- приложения)
dbs Имя базы данных. Если задано несколько параметров dbs, берется первый.
Пример: dbs=ORACLE1&dbs=ORACLE1.
form Имя файла первой формы html, содержащей ни одного, один или несколько тегов. Если файл располагается в каталоге, отличном от принимаемого по умолчанию, нужно относитиельный или абсолютный путь. (Нельзя использовать алиасы web-сервера)
Пример form=queryform.htm
user Имя пользователя oracle. Берется первое (если несколько) Если было ранее установлено соединение с эти именем, соединение с БД продолжается
Пример: user=mary
key Пароль пользователя oracle. Берется первое (если несколько)
Пример: key=Kay
[family.]parameter1 Параметры будут переданы в запрос, ассоциированный с семейством family (задавемый тегами <#t> или <#e>) если указанный параметр существует в запросе. Можно опустить имя семейства.
Пример: family1.P1=Herb a life
cp По умолчанию cp= (нет преобразования)
Пример: cp=doswin (html формы преобразовать в Win CP1251 из DOS CP866)
push=HH:MM:SS
Параметр push принуждает is2sql посылать страницу через заданные интервалы времени. При этом браузер должен поддерживать режим проталкивания. Документ отправляется с полем ContentType: multipart/x-mixed-replace; boundary=EnSeN_UsEfUl_UtIlItIeS. Когда наступит время обновления документа, будет отправлена строка, задаваемая boundary- то есть EnSeN_UsEfUl_UtIlItIeS. Браузер по получении этой строки очистит содержимое и отобразит новую порцию информации. В режиме проталкивания соединение не теряется, и части документа вводятся в браузер, пока браузер сам не прервет соединение.
HH:MM:SS означают часы, минуты и секунды между посылками.
Замечание: использование этого параметра может привести к быстрому исчерпанию ресурсов web- сервера.
Замечание: задание этого параметра приведет к ошибке, так как хотя заголовок формируется правильно, посылается только 1 раз.
hash, pwd, forminvalid Три параметра hash, pwd, forminvalid осуществляют проверку вторичного пароля абонента. В параметре pwd передается пароль для проверки его правильности для абонента с номером телефона, передаваемом в параметре hash. Если pwd правильный, то выполнение запроса продолжается.
Если pwd неправильный, возвращается форма, указанная в параметре forminvalid. При этом, если форма не определена или неправильно задана, выдается предупреждение. Запрос независимо от этого не выполняется.
В параметре pwd может передать уникальный идентификатор администратора, записываемый в реестр. В таком случае is2sql.dll вычислит правильное значение pwd для абонента с номером телефона, заданном в параметре hash. В этом случае в теге <#a name=sys value=_pwd_> будет возвращен правильный пароль. В теге <#a name=sys value=_hash_> возвращается номер телефона, по которому вычислен пароль.
Замечание: Пароль изменяется от параметра реестра HashUniqueID
forminvalid используется не только для проверки вторичного пароля абонента. forminvalid задает форму сообщения об ошибке соединения с базой данных (то есть если пользователь ввел неверный пароль пользователя базы данных, указал неверный алиас или свое имя). Если этот параметр не задан, то использует форма, действующая по умолчанию. Такая форма задается параметром реестра DBConnectFailForm. Если в реестре не указана форма по умолчанию, или она не может загрузиться, то тогда выдается текстовое сообщение об ошибке.
В форме сообщения ошибки соединения можно использовать тег <#metas>. Все другие теги не разбираются и осталяются в теле формы без изменений.
/rec?dbs&user&key&cp&qry[[&qry.]param=..][&fld][&rec][&decode=z][&cp=eccxlat]
Путь /rec выдает значение одного поля одной записи. Этот путь предназначен для получения значения поля из других программ, например, ActiveX модулей из браузера. Рекомендуется использовать не в браузере, а только в других приложениях, например, для доступа к BLOB полям. BLOB поле может быть записано в компрессированном виде. Для компрессии поля должна быть использована библиотека zLib, входящая в поставку Delphi.
параметры dbs, user, key, qry.param такие же, как в /show. Параметр qry задает имя файла запроса (расширение .sql нужно опустить).
Необязательный параметр fld - имя поля таблицы,
Необязательный параметр rec - номер записи (начиная с 0)
Необязательный параметр decode указывает, делать или нет декомпрессию значения поля на сервере. По умолчанию поле не декомпрессируется и передается вызывающему ActiveX для декомпрессии и отображения в браузере. decode=z - декомпрессировать zLib'ом.
Пример: http://ensen/cgi-bin/is2sql.dll/rec?dbs=ALIAS&user=SYSDBA&key=masterkey&qry=textfile.sql&fld=FIELD1&rec=0
/info?key=xxx&show=[copyright,list,queries,threads]
Queries- показывает число запросов со времени
очередного старта is2sql.dll
threads- показывает число доступных, активных и неактивных потоков
list- показывает опции is2sql.dll, значения переменных по умолчанию
copyright- показывает информацию о is2sql.dll
Обязательный параметр key должен совпадать с паролем администратора. Необходимость указания пароля вызвана тем, что /info может выдать содержимое установленных по умолчанию переменных.
key=<administrator password>. Обязательный параметр, пароль администратора. Пароль хранится в реестре.
newkey=<password> Задает новый действующий пароль администратора
Следующие параметры зарезервированы для
последующего применения, не устанавливайте
их
banner=
PatternPath=
MkNull=<BOOL> Включает (и выключает) режим
замены пустых значений на строку 'NULL'
MaxThreads=<maximum number of threads> Задает
максимальное число потоков
CacheConnections=<BOOL> Включает и выключает
кеширование потоков. Не задавайте этот
параметр, равный 0 (или No, False) вместе с
другими параметрами (кроме key=<Admin password>),
так как другие параметры не возымеют
действия.
Более того, если кэширование отключено, то вы не сможете изменить любые значения ключом /setup. Параметры будут изменены только при включенном кэшировании. Поэтому всегда указывайте ..&CacheConnections=1 при изменении параметров. Затем, если Вы хотите отключить кэширование, сделайте это отдельно: CacheConnections=0
Перечисленные последние три параметра
задаются из реестра.
BOOL может принимать значения 1,0 или Yes, No или
Checked,<Пусто> или True,False
key=<administrator password>. Обязательный параметр, пароль администратора. Пароль хранится в реестре.
Прерывает выполнение всех потоков и считывает заново параметры из реестра. Будьте осторожны при использовании этого ключа. Используйте /reload после внесения изменений настроек в реестре. Иначе останвите сервис http и запустите заново, чтобы is2sql.dll выгрузилась и згрузилась заново (при новом обращении).
См. Соглашение о передаче списка параметров
функцию DLL поле передается как указатель на массив символов.
Функция в DLL объявляется как:
TFuncFmtDll = function(AData, Aspecifier: PChar; ABuf: PChar; ABufLen: Integer): Boolean; stdcall;
где передаются
ABufLen- размер буфера ABuf
<#X formParameter formatString>
<#X `long form Parameter` formatString>
Редактор html может не позволить вставить в шаблоне внутри тега псевдотег, например, <INPUT value=<#P name=chbank.pbankno>>. Символы '<' и '>' будут заменены на < и >. Тогда is2sql.dll не сможет найти теги и подставить значения. Чтобы избежать это, используется тег <#X> внутри которого можно поместить теги, используя знаки > и <. formParameter соответствует <#P name=family.par>. Если первый параметр в апострофах, и начинается с символа 'a', вместо параметра формы вставляется параметр sys или ip.
Новый стиль:
Новый стиль рекомендуется использовать вместо старого. По- новому нужно указать два дополнительных параметра тега - replace2fld= и tag=. Первый параметр задает имя поля таблицы или специальные поля ip и sys. Второй параметр задает имя создаваемого тега.
Примеры
Новый стиль:
<#X replace2fld="chbank.pbankno" tag="input" type="text" name="chbank.pbankno" size="20" value="**">
Старый стиль:
<#X chbank.pbankno <input" type="text" name="chbank.pbankno" size="20" value='**' >>
В передаваемом браузеру тексте будет следующее:
<input" type="text" name="chbank.pbankno" size="20" value='12345'>, где 12345- значение параметра формы chbank.pbankno.
<#x `A name="sys" value="TODAY" ` <input name="delnotes.pmdate" value='**' >>
В передаваемом браузеру тексте будет следующее:
<input name="delnotes.pmdate" value='31.12.1999'>
<#r name="FAMILY" gid="идентификатор группы" [form="FAILURE_FORM"] [encode=0|1]>
По умолчанию encode=1 (пароль хранится в базе в зашифрованном виде)
Иногда нужно разделить посетителей своего web- сайта на категории, например, на продавцов и покупателей. Вы можете использовать разные возможности, в том числе предоставляемые web- сервером для аутентификации и разграничения пользователей. Вы можете использовать также специальный тег <#r> для управления того, кому показывать или не показывать данную форму.
Преположим, что Вы ведете простую таблицу продавцов guid, состоящую из трех столбцов: guid, ggid, gukey. В первом столбце- идентификатор продавца, во втором- признак принадлежности к группе продавцов, в третьем- пароль продавца.
Вам нужно будет сделать такой CheckEmp.sql файл:
select count(ggid) from company.guid g
where (g.guid = ':uid') and (g.ggid=':gid') and (g.gukey=':ukey')
и поместить его вместе с шаблонами.
Затем в вызывающей html форме введите теги <input type=text name=uid> и <input type=password name=ukey>. Вы может передать и по другому, важно что в вызываемую защищаемую форму были переданы параметры uid и upwd. Имена этих параметров зафиксированы и не могут быть изменены. Точно также в sql выражении, приведенном выше, имена параметров нельзя изменять. В параметре uid передается идентификатор продавца , в параметре ukey- его пароль.
В вызываемой защищаемой форме вставьте тег <#r name=CheckEmp gid="идентификатор группы продавцов" form=/failformaccess.htm encode=0>
Параметр form тега <#r> можно опустить. Этот параметр задает форму, которая будет выдана в случае, если у пользователя нет в списке продавцов или он ввел неверный пароль. По умолчанию имя такой формы берется из реестра (параметр AccessDeniedForm), а если он не задан, то выдается текстовое сообщение.
В форме сообщения о невозможности доступ к странице можно использовать только тег <#metas>. Все другие теги не разбираются и осталяются в теле формы без изменений. На месте эжтого тега вставляется сообщение от сервера базы данных с описанием ошибки соединения.
Тег контроля прав доступа к форме <#r> используется в любом месте html формы. Если задано несколько тегов, действует первый из них.
<#list> Вспомогательные списки,выдаются независимо от существования соединения с БД <#list=user> выдает список существующих пользователей в виде: <select size="1"> <option>Фамилия ИО</option> <option>.