|
Программирование >> Руководство по созданию web приложений
Просмотр прав сотрудника Пароль Рис. . Форма ввода идентификатора и пароля сотрудника User: frolw word Рис. /-9. Перечень прав сотрудника магазина, извлеченный из багы данных Похожие действия выполняла консольная программа ! :.; .: , .рассмотренная нами в главе. Именно эта программа И была в основу .1 расширения а А т . . опишем исходные тексты ISFORM. Исходный текст документа HTML, предназначенного для запуска этого расширения. Вы найдете в листинге Листинг 7-12 хранится в файле I на прилагаемом к книге компакт-диске. В этом документе имеется . ссылающаяся на . файл расши- рения isforra.dll: <fonn Помимо всего прочего, в этой форме определены два поля, предназначенные для ввода идентификатора и пароля: <tr> atrl и1ааГ1= 134 >Идантиикатвр: a,/t(Ja.td wi£lt:n= 23<3 > <input </tr> <tr> <td . . . ; - <input . ! . . a/tr> Исходный текст функции fictExtd п никаких особенностей не имеет и полностью аналогичен исходному примененному нами во всех расширений ISAPI. Все основные события происходят внутри функции HttpExtensicnProc. к описанию которой мы и приступаем. В области локальных ; функции мы определили вспомогатель- ных массива для храпения а также два указателя, применяемых для из- влечения параметров из блока отправленных браузером: CHAR CHAR tiia * szPtr; В начале работы мы помещаем пулевое в ноле блока ЕСВ. а затем в буфер - HTTP и начальный фрагмент документа HTML, формируемого динамически: Данные, отправленные браузером, копируются в буфер szTeipiuf: IpB.E:-. IpbData, lpECB->cbAvailable + 1) ; + 1] = -XO; Эти данные затем перекодируются функцией DecodeStr Исходный текст этой функции мы рассматривали в посвящеиных программам CGI. Далее мы запускаем цикл извлечения из принятых данных содержимого по-и El формы с идентификатором сотрудника и его паролем: .а >famoEaf Iir}E r:i...>ri:i\v- iilablel = К + 1] -- \0-; Данные из этих полей передаются расширению Исходный текст главного модуля приложения ISFORM приведен в листинге 7-13. Листинг 7-13 хранится в файле ctiTVISFORWNsform.c на прилагаемом к книге компакт-диске. Рассмотрим наиболее важные фрагменты исходного текста этого модуля. В области глобальных мы определили массивы для хранения идентификатора пользователя его пароля s . . . прав szUser- Higrits. а также текста сообщения об ошибках sErrMsg (если они возникнут при базе данных): char char - = szPtr + 1; . >= (szTempBuf + . break; else break; Здесь используется техника, с которой мы познакомили Вас в исходных текстах программ CGI. Она предполагает применение функций DecodeSt г и GetParam. Далее наша программа добавляет в буфер выходного документа HTML идентификатор пользователя и пароль: User: strcat(szBuff, Соответствующие строки извлечены из aaiiaaia. отправленных формой, при помощи ОеГРагаш. Затем наше вызывает . : . . передавая ей - пароль, а также указатель - . на буфер, в который эта функция должна записать права пользователя: else { stfoatf ааВагf. iiiw(wa</a2> ) strcat(szBuff, Если функция Qotiaaager,tah: a roan - к базе данных без ошибок, она возвращает нулевое значение. Наше при этом добав- ляет в выходной буфер права пользователя, извлеченные из ; гз базыданных Bookstore. Нри возникновении ошибок в выходной буфер копируется содержимое строки сообщения об ощибке sErrMsg. for(szParam = : f;. ) szPtr = sia- ran, &}; if(szPtr != NULL)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |