Re: О ПОСЛЕДНИХ ИСПРАВЛЕНИЯХ В WEB ИРБИС32
Пользователь:
Панев Максим (IP-адрес скрыт)
Дата: 28, September, 2006 20:40
Вот попал на тему и радилось еще одно соображение: я так понимаю, что подразумевается следующий механизм
1. Браузер формирует запрос серверу.
2. Запрос направляется в cgiflc.
3. Если cgiflc возвращает не 0 или не пусто, то вперед с песнями дальше.
А если логику изменить? Ведь ФЛК - это формат. А значит он возвращает данные. Так почему не сделать так: все параметры передаются в ФЛК. Далее для работы используется то, что вернул ФЛК. Т.е. есть ли он возвращает путоту, значит все параметры зарезаны на корню и работа завершается.
В этом случае мы дальше в цепочку можем послать вообще все. Единственное, что смущает, это парамеры с переменными именами. Следовательно, нужно вводить какую-то унификацию для них.
К примеру: обращение к переменым параметрам
(if v8765^n = 'P03' then if v8765^v = 'K=' then v8765^p,v8765^n'=DS=' fi fi)
в примере я подразумеваю следующее
поле v8765 cсодержит все переменные поля со следующим разделением:
подполе ^p - порядковый номер параметра (к примеру '003'), т.е. то, что идет до S21.
подполе ^n - имя параметра (к примеру 'P03'), т.е. то, что идет после S21 до знака =.
подполе ^v - значение параметра (к примеру 'K=').
Номер метки поля, куда писаться переменные парам етры задается в ини. Метки подполей для хранения разбитых параметров так же задаются в ини. Алгоритм разбивки параметров можно вынести в RegExp. Все что RegExp'у не соответствует, то отбрасывается.
Вот так вот все складно у меня получилось :).
В общем-то по логике мы получаем ТВП. Только вот это не ТВП, а формат. Не вижу ничего сложного в реализации такого механизма. Зато все эти рассуждения, что были выше, более чем вписываются в схему.
Нужно мне запретить запись в RDR, я так и пишу
if v2221='RDR' and v2222='R' then 'C21COM=F' fi
Еще раз поясню идею. Параметры шлюзу приходят именуемые. Он их преобразует в метки полей и засылает в ФЛК. ФЛК делает из них обратно строковые параметры и опять пропускает через механизм преоразования к меткам. Конечно двойная работа, но не думаю, что это сильно увеличит время работы ЦГИ.
ЗЫ. формат
&uf(|DRDR,!RI=|v1002|!,(if p(v112) then if (v112=&uf('+1R1'))or(v112='*.*.*.*') then &uf('+1W2#1'),break,fi fi)|)
что за новая функция break? Опять что-то не документированное. Чувствую я, что за горами моя мечта, когда весь ISIS-язык форматирования будет переработан. Не удивлюсь, если он станет объектно-ориентированным :). Это, кстати, еще одна моя мечта :)
Редактировано 1 раз. Последний раз 28.09.2006 20:46 пользователем Панев Максим.