FLUIdS
Параметры вызова CGI модуля

  • Методы вызова
  • Параметры вызова
  • Определение кодировки клиента

  • Методы вызова

    CGI модуль обеспечивает обработку как GET, так и POST запросов, хотя генерируемый им бланк запроса пользует только метод GET:

    <form method="GET" action="fluids.cgi">
    ...
    </form>

    Более того, эти методы могут использоваться совместно (то есть часть параметров может передаваться методом GET, другая часть - методом POST):

    <form method="POST" action="fluids.cgi?w=sch&page=50&word=ок">
    Ваш запрос: <input type="text" name="q" maxlength="10000" size="32" value="">
    </form>

    Размеры запросов имеют ограничения. Максимальный размер запроса для метода POST составляет 200K (значение константы ZCGI_MAX_POST_SIZE файла ./src/libzex/zcgi.h), для метода GET он определяется используемым Web-сервером (для Apache, например, используется цифра в 8K).


    Параметры вызова

    Ниже перечислены все возможные параметры запроса для CGI модуля поисковой системы.

    Имя параметра Описание
    w Сокращение от what.
    Может принимать два значения - frm и sch. Если указано первое значение, то будет сгенерирована страница с бланком запроса, если второе - страница с результатами поиска. Если параметр отсутствует или имеет какое-то другое значение, то будет показана страница с бланком запроса. Если w установлен в sch, но указан пустой запрос (параметр q), то будет сгенерирована страница с бланком запроса.
    cfg Указывает на имя конфигурационного файла, используемого вместо основного, задаваемого параметрами компиляции FLUIDS_CONF_FILE и FLUIDS_ROOT_DIR. Имя дополнительного конфигурационного файла отсчитывается от корневой директории (т.е. от значения параметра компиляции FLUIDS_ROOT_DIR), и не может задаваться как полное имя файла или же как имя, содержащее символы ../. В противном случае, будет использован основной конфигурационный файл. Дополнительный конфигурационный файл обязан иметь расширение .cfg, но само имя должно указываться (в параметре cfg) без этого расширения.
    q Сокращение от query.
    Указывает на пользовательский запрос.
    cs Сокращение от charset.
    Означает кодировку пользовательского запроса. Этот параметр является внутренним параметром CGI модуля и используется им для передачи кодировки клиента от страницы с бланком запроса к страницам с результатами поиска. Администраторам поисковой системы не рекомендуется пользоваться этим параметром. Если отключена поддержка русского языка или используется Web-сервер Russian Apache, то значение этого параметра игнорируется.
    word Своим значением должно иметь специальное слово ок (в нем все буквы - русские!), находящееся в кодировке клиента. По нему CGI модуль будет пытаться определить удаленную кодировку. Применение параметра удобно при передаче кодировки клиента со статической страницы к CGI модулю, если для последнего разрешена самостоятельная перекодировка. Если отключена поддержка русского языка или используется Web-сервер Russian Apache, то значение этого параметра игнорируется.
    ind Указывает на идентификатор индексного файла, прописанного в конфигурационном файле CGI модуля. При необходимости в CGI запросе может присутсвовать несколько параметров ind, каждый со своим значением. Действие параметра(ов) ind зависит от типа запроса (параметр qt) и от того, какая сейчас будет сгенерирована страница - бланка запроса или результатов поиска (параметр w):

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

  • Запрос - "внутренний", генерируется страница бланка запроса
    В бланке запроса отсутствует явный список индексных файлов поиска, но перечисленные идентификаторы сохраняются в скрытом виде. В дальнейшем по ним будет произведен поиск.

  • Генерируется страница результатов поиска
    В поиске будут участвовать только индексные файлы с указанными идентификаторами.
  • qt Сокращение от query type.
    Тип запроса, может принимать два значения: ef и if для, соответственно, внешнего и внутреннего запросов.
    trs Сокращение от terse.
    Модель представления результатов поиска, может принимать три значения: srt, std или dtl для, соответственно, компактной, стандартной или детализированной модели.
    page Размер страницы результатов. Может равняться 10, 20, 30, 40 или 50 найденым ссылкам на одну страницу.
    ar Область поиска в проиндексированных документах. В качестве значения для этого параметра выступает строка, каждая буква в которой отвечает той или иной области поиска:
    • c - содержимое документа (его контент);
    • n - имя документа;
    • t - заголовок документа.
    start Номер генерируемой страницы результатов. Отсчитывается от нуля (то есть значение 0 - start=0 - означает вывод самой первой страницы результатов). Если указанное значение для параметра start слишком велико (ну нету стольких результатов поиска), то будет показана пустая страница результатов.
    fl Флаги поиска.
    Пока определен только один флаг cd (сокращение от case dependent). Если он задан, то поиск будет вестись с учетом регистра ключевых слов.

    Если для CGI параметра предусмотрено одно значение, а их в запросе указано несколько, то будет использовано последнее.


    Определение кодировки клиента

    Очень важно правильно определить удаленную кодировку (т.е. ту, с которой работает пользователь), поскольку от этого зависит корректность работы с пользовательским запросом. Ошибка при его перекодировании приведет к выдаче результатов поиска, не имеющих ничего общего с самим запросом. С другой стороны, верное определение кодировки клиента - не такая тривиальная задача, как может показаться, поскольку пользователь имеет право работать с любой кодировкой, с любым браузером, с любой операционной системой. Поэтому для CGI модуля на всякий случай оставлена возможность выбора кодировки самим пользователем. Необходимо также учитывать то, что CGI модуль может исполняться из под Web-сервера Russian Apache, который может взять на себя функции по определению пользовательской кодировки и по проведению перекодировки пользовательского запроса и непосредственно сгенерированных страниц. Ниже перечислены шаги, совершаемые CGI модулем при определении кодировки клиента. Если на каком-либо этапе определится кодировка клиента, то дальнейшие шаги не будут выполняться.

    Шаг первый
    В самом начале необходимо выяснить, происходит ли исполнение CGI модуля из под Web-сервера Russian Apache. Для этого CGI модуль смотрит, определены ли две переменные окружения с именами CHARSET и SOURCE_CHARSET. Если они заданы, то считается, что выполнение происходит из под Russian Apache. (Здесь, безусловно, CGI модуль можно обмануть, выставив для CGI процесса эти две переменные окружения. Нужно также иметь в виду и обратную ситуацию, а именно то, что используемый Web-сервер действительно может являться Russian Apache, однако для CGI модуля может действовать его директива CharsetDisable on, которая запретит выставление этих переменных окружения и, соответственно, все перекодировки со стороны Web-сервера.)
    CGI модуль рассматривает значение первой из двух переменных окружения, CHARSET, как имя кодировки клиента, а второй, SOURCE_CHARSET, - как имя кодировки, в которой находится пользовательский запрос и в которой необходимо передавать Web-серверу сгенерированные страницы. Если кодировка, задаваемая переменной окружения SOURCE_CHARSET, не известна поисковой системе (всякое может случиться), то в ее качестве будет использована рабочая кодировка. Если значение CHARSET не известно системе, то вместо него будет использовано значение для SOURCE_CHARSET.

    Шаг второй
    На этом этапе проверяется значение параметра cs в CGI запросе. Если параметр отсутствует или у него выставлено некорректное значение, то делается попытка определить кодировку клиента по пробному слову (параметр word). Если и это не помогло, то смотрится значение переменной окружения процесса с именем CHARSET.

    Шаг третий
    Делается попытка определения кодировки пользователя по его браузеру. Для этого используются директивы раздела user-agent конфигурационного файла CGI модуля.

    Шаг четвертый, и последний
    Если все предыдущие предпринятые шаги не привели к определению кодировки клиента, то считается, что она совпадает с рабочей кодировкой.


    На предыдущую страницу valera@sbnet.ru