|
Программирование >> Руководство по созданию web приложений
Глава?. Расширения CGI и ISAPI cepsepaWeb 307 В области глобальных переменных мы определили два массива символов, предназначенных для хранения и пароля, введенного посети- телем в форме: char Перед началом работы программа CCJltJlliLM:) выводит в стандартный вы-поток заголовок документа HTML: cout COut - /- а--- HTML PUBLIC - HTML 3.2 EN\ > ; cout списка сотрудников Здесь мы пользуемся потоком класса cout, что вполне допустимо, так как он связан с потоком stdout. Па следующем этапе наша программа проверяет метод, использованный для передачи данных из формы: else cout << <h2>HoiCHO использовать только метод FfjST:/h2> ; Если в форме по ошибке применен метод GET, программа запишет сообщение об ошибке в создаваемый документ ПТМТ и ; . . свою работу. В том случае, если использован метод POST, а. определит размер данных, .... - формой, а затем сохранит . буфер szBuf; lial .. .:!-!-: ICi=- = : :.- а -.a LENGTH )): . . ICi=-, 1, St.tin); Па следующем этапе принятые данные копируются в буфер saSrcBaf и там перекодируются: char .. Далее программа запускает цикл сканирования принятых данных, чтобы извлечь из них содержимое полей формы (идентификатор пользователя и его пароль): szBuf[lSize] = I : &ziyf[iSlze + 1] = Ли; char * azPtr; char * szPa.ai; foriezParaa = szBuf;; ) szPtr = atrcHr(82Ptrai. i); ifCsaPtr != NULL) = szPtr + 1; if(szParam >= (szBut+ iSlze)) break; else break; Этот цикл Вам должен быть по программе CONTROLS, описанной ранее в этом разделе, В частности, мы рассказывали о функции DecodeStr. Здесь, однако, мыдополнительно . GetParam,извлекающую иденти- фикатор пользователя и пароль и сохраняющую эти данные в глобальных переменных szUserlD и Исходный текст функции Get Р аг а тпоказан ниже: void *szString) char szPtr; szPtr = != NULL) -szPtr = -Xft szPtr++; Получая через параметр szString указатель на пару вида эта функция последовательно сравнивает имя со строками UserlD и Pwd . При совпадении извлеченное значение содержимого поля формы сохраняется в глобальных переменных szUserlD и szUserPassword. После обработки данных, поступивщих от формы, программа . проверяет идентификатор и пароль пользователя, вызывая функцию login: Функцию getManagers мы также взяли из приложения CPPADO, изменив только формат вывода информации, извлеченной из базы данных. Перед началом цикла обработки набора записей эта функция формирует заголовок таблицы в документе записывая в столбцов: cout << <И2>Саисоа сотрудников . а >; cout < .а Ьаг(1ег=1> . cout << а1Ьадватиэикатора/ааа<1Г1аИач<Лаа . извлеченные из полей текущей записи форматируются для записи в ячейки таблицы, создаваемой в документе HTML: Ш1м( . OF ==VAR1ANT FALSE) vPassword = vLastLogin = : a ; vRights = . t<J>l1l)3</tu> . cout else В качестве - - - функции! указатели на глобальные с идентификатором и паролем. Функция login обращается к базе данных для проверки идентификатора, пароля, а также прав пользователя. Если запрос сделал пользователь с правами администратора, функция login возвращает true, а если шт - false. После прав пользователя вызывается функция oetNarni gers. Она записывает в формируемый документ ПТМЕ сведения о содержимом таблицы raanagers. Перед своей работы программа CGICPPADO записывает в выходной поток теги, завершающие формирование документа ПТМТ: cout функция login практически совпадаете одноименной функцией из гаан.ш жения CPPADO, описанной нами в четвертой главе. Однако есть и отличия - новый вариант функции принимает через свои параметры имя и пароль пользователя, а не вводит их из t . потока: frocl laela(char заУзегааше *
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |