43
Обработка CGI-скриптом данных формы составляет шаблонную часть
скрипта.
Данные, введенные в форме, передаются CGI-модулю в виде
последовательности символов через входной поток (метод POST) или переменную
CGI-окружения (метод GET) в формате:
имя=значение&имя1=значение1&...&имяN=значениеN,
где имяi – значение параметра name из элемента HTML-формы, значениеi –
введенное или выбранное значение независимо от его типа.
Алгоритм обработки передаваемой в CGI-скрипт строки данных состоит в
разделении ее на пары имя=значение и декодировании каждой пары с учетом, что
все пробелы в введенных значениях в форме сервером были заменены символом
"+" и символы с десятичным кодом больше 128 преобразованы в символ "%" и
следующим за ним шестнадцатеричным кодом символа.
После шаблонной части CGI-скрипта следует содержательная часть, в
которой можно анализировать полученные данные, обращаясь при необходимости
к различным таблицам баз данных. При написании CGI-скрипта на языке ESQL/C
работа с базой данных ведется средствами встроенного языка SQL и главных
переменных, через которые передаются и возвращаются данные к серверу баз
данных. Результаты обработки данных, полученных из базы данных, а также
другие информационные сообщения передаются функцией printf() в выходной
поток с учетом форматирования HTML-документа.
CGI-скрипт, запускаемый из среды WWW, должен содержать информацию
о сервере баз данных в своем теле. Эта информация состоит в задании в CGI-
скрипте системных переменных, определяющих каталог с программным
обеспечением сервера, имя сервера, параметры перекодировки и прочие
параметры.
Важной особенностью работы с базой данных посредством CGI-скрипта
является обеспечение достаточных условий безопасности в отношении данных. В
том случае, когда любой пользователь без ограничений может иметь доступ к
данным, средствами программы dbaccess либо средствами иного программного
приложений владелец базы данных SQL-оператором
Grant connect to nobody
предоставляет пользователю операционной системы nobody минимальные права, в
том числе в отношении баз данных. Это позволяет при написании CGI-скрипта
использовать простейший вариант подключения к серверу баз данных без
проверки индивидуальных полномочий пользователя:
$Connect to 'database@server_name'.
После окончания работы с приложением владелец базы данных должен
отобрать полномочия у пользователя nobody: