Книги, научные публикации Pages:     | 1 | 2 | 3 | 4 | 5 |   ...   | 6 |

Вячеславович Фролов, Григорий Вячеславович Фролов в Интернете практическое руководство по созданию Web-приложений с базами данных Издание исправленное УДК 004.7 ББК 32.973.202 Фролов А. В., Фролов Г. ...

-- [ Страница 3 ] --

Листинг 4-3 хранится в файле на прилага емом к книге компакт-диске.

Ограничение CONSTRAINT на поле автоматизирует записи даты добавления книги в таблицу books:

CREATE TABLE ( [bOOksID] [int] (1, 1) NOT NULL, [Author] [varchar] (50) NOT NULL, [Title] [varchar] (200) NOT NULL, [Publisher] [varchar] (50) NOT NULL, [Price] [money] NOT NULL, [AddDate] NOT NULL CONSTRAINT DEFAULT [Annotation] [varchar] (2048) NOT NULL, CONSTRAINT PRIMARY KEY ( [booksID] ) ON [PRIMARY] ) ON [PRIMARY] Ни одно из полей данной не может содержать пустые значения NULL, поэтому при добавлении книги в базу данных предоставить полную информацию о ней.

Таблица orders Когда покупатели отбирают понравившиеся им книги для покупки, записи до в таблицу orders. Поля этой таблицы описаны Таблица 4-9. Поля таблицы orders Поле Тип Int записи таблицы orders (ключевое поле) booksID Int Идентификатор книги, для покупки ClientID Int выбравшего данную книгу AddDate Datetime Дата и время отбора книги money отобранной книги в условных Поля booksID и ClientID собой внешние ключи к таблицам books и clients соответственно. Используя эти поля, мы можем определить, ка кую книгу отобрал тот или иной покупатель.

Глава 4. Связь приложений с данных через ADO Поле хранящее дату и время книги, применяют для очистки корзин от записей. Например, Вы можете принуди тельно удалять записи об отобранных книгах, сделанные более года назад.

Сценарий SQL, создающий таблицу orders, представлен в 4-4.

Листинг 4-4 Вы найдете в файле на при лагаемом к книге компакт-диске.

Обратите на ограничение CONSTRAINT поля AddDate:

CREATE TABLE ( [ordersID] [int] IDENTITY (1, 1) NOT NULL, [int] NOT NULL, [ClientID] [int] NOT NULL, [AddDate] NOT NULL CONSTRAINT [DF_orders_AddDate] DEFAULT [money] NOT NULL, CONSTRAINT [PK_orders] PRIMARY KEY С [ordersID] ) ON [PRIMARY] ) ON С его помощью в данное автоматически время и дата до бавления книги в корзину покупателя.

Подготовка хранимых процедур Для приложений нашего мы подготовили ряд хранимых Серверные сценарии, расположенные на страницах ASP его приложе ний, будут обращаться к этим процедурам для выполнения операций с ба зой данных.

Для примера мы привели в листинге 4-5 текст хранимой процеду ры ClientLogin. предназначенной для подключения к Интернет-магазину заре гистрированных покупателей.

Листинг 4-5 Вы найдете в файле ch4\BookShopScripts\ на прилагаемом к книге компакт-диске.

В качестве входных параметров мы передаем этой процедуре идентификатор пользователя @User и пользователя @Pass:

PROCEDURE ClientLogin varchar(50), output AS SELECT FROM clients WHERE AND UPDATE clients SET WHERE Результат аутентификации записывается процедурой ClientLogin в параметр Попутно наша процедура обновляет поле таблицы в нее время и дату подключения, полученные от встроенной функции GETDATE.

Сейчас мы не будем подробно описывать работу этой и других процедур Ч о ней мы расскажем в разделах, посвященных описанию страниц ASP нашего ма газина. Отметим только, что процедуры Вы добавить в базу данных при приложения SQL Server Query Analyzer.

Базы данных в Интернете.

этого не забудьте выделить Интернета на их выполнение. Для этого приложение SQL Server Enterprise Manager, откройте базу данных Bookstore и папку с хранимыми Stored Procedures. Выберите процедуру и щелчком правой клавиши мыши откройте страницу Stored Procedure Properties, рис. 4-8.

:

FROM Pas L Рис. 4-8. Страница Stored Здесь Вы можете редактировать текст процедуры. Для измене ний щелкните кнопку ОК. Что касается прав на процедуры, то их нужно добавить кнопкой Permissions. Открыв Object Properties, от метьте на вкладке Permissions в столбце EXEC в строках тех которым Вы хотите предоставить доступ на цедуры.

Создание источника данных когда мы создали базу с таблицами и хранимыми процедурами, необходимо обеспечить к ней со стороны сервера Web. Для этого нужно определить данных.

Рис. 4-9. Страница New Data Глава 4. Связь с базами данных через ADO Откройте на компьютере, играющем роль Web, папку Panel и дважды щелкните пиктограмму ODBC Data Sources. После того как на экра не появится ODBC Data Sources Administrator, откройте вкладку Sys tem DSN и нажмите кнопку Add. Вы увидите страницу мастера создания источ ников данных с названием New Data Source (рис. 4-9).

В расположенном на странице, выберите драйвер SQL Server, a затем щелкните кнопку Finish. На экране появится первая страница мастера источника для SQL Server, на рис. 4-10.

New to How do war* the Рис. Первая мастера источника данных для SQL Server В поле Name этой страницы введите имя создаваемого источника данных Ч BookStore. В поле Description Вы также можете описать источник данных.

Далее в списке Server выберите сервер базы к которому будет вы полняться подключение. Если серверы Web и SQL Server на одном компьютере (как у нас), нужно выбрать в этом строку (local). Если же сервер SQL Server работает на другом компьютере, в этом списке укажите нуж ный сервер базы Заполнив поля на первой странице, щелкните кнопку Next.

На следующей странице мастера (рис. 4-11) Вы должны выбрать способ при подключении к SQL Server.

t New (a SQL To to Рис. Выбор способа аутентификации Базы данных Интернете. Практическое При использовании аутентификации Windows NT Вы можете оставить пере ключатели в том положении, как они показаны на рис. 4-11. Щелчок кнопки Client Configuration позволит Вам выбрать сетевую библиотеку и указать пара метры подключения для выбранной библиотеки (рис. 4-12).

!

I РИС. 4-12. Выбор сетевой библиотеки и настройка ее параметров При создании источника для Интернет-магазина Вы можете оставить эти параметры в состоянии.

Чтобы продолжить процесс, щелкните Next в панели выбора спосо ба аутентификации, показанной на рис. 4-11. На экране появится третья мастера, на которой нужно выбрать базу данных по умолчанию (рис. 4-13).

С -:

quoted Use Рис. 4-13. Выбор базы данных по умолчанию Остальные элементы управления, расположенные в этой панели, можно не менять.

щелкните кнопку Next. В панели, показанной на рис. 4-14. укажите нужный язык системных сообщений и пометьте переключатель Use regional settings when outputting currency, numbers, dates and times.

Для работы мастера щелкните в этой панели кнопку Finish. На экране описание конфигурации источника данных (рис. 4-15).

Вам нужно работоспособность источника, например, при помощи кнопки Test Data Source. Щелкните ее, и если Вы все сделали правиль но, на экране об успешном завершении теста (рис. 4-16).

Глава 4. Связь с базами данных через ADO language E to Log Рис. 4-14. Последняя панель мастера создания источника данных A ODBC MO Yes temporal) disconnect Quoted ANSI Yes Рис. Описание конфигурации созданного источника данных SQL Data Attempting FULLY!

. !

Рис. 4-16. Сообщение об успешной проверке источника данных Базы данных в Интернете. Практическое руководство готово для того, чтобы приступить к настройке виртуальных ка талогов сервера Web и к созданию ASP нашего Интернет-магазина.

Подготовка виртуальных каталогов сервера Web Наш Интернет-магазин состоит из двух приложений ASP. Первое предназначе но для сотрудников магазина, и мы назовем его Второе будут посетители Вашего магазина. Мы назовем его при ложением покупателя.

Виртуальный каталог приложения покупателя В виртуальном каталоге приложения покупателя хранятся страницы ASP, до ступные покупателям. Они предназначены для просмотра списка товаров (книг), отбора товаров в и расплаты за покупку.

Этот виртуальный каталог, так же как и виртуальный каталог ного средствами управляющей консоли Microsoft Mana gement Console. Укажите имя каталога как BookShopClient, проследив за тем, чтобы для были и исполнение сценариев. Для этого в панели BookShopClient Properties откройте вкладку Virtual Directory и пометь те переключатели Read и Script (если они были выключены).

Разрешите также настройку и клиентских сценариев на вкладке Арр Debugging и с помощью переключателей Enable ASP server-side script debugging и Enable ASP client-side script debugging. Для того чтобы эти изме вступили в силу, закройте панель и перезагрузите компьютер.

После завершения отладки реального проекта возможность его настройки отменить, убрав отметки с упомянутых переключателей.

Виртуальный каталог административного приложения BookShop Этот каталог содержит страницы ASP, предназначенные для про смотра только сотрудниками Вашего магазина. Обычные посетители не долж ны иметь к никакого доступа.

Bookshop | | Х Access and г Secure a a SSL tor and Name a Рис. Настройка доступа к виртуальному каталогу Глава 4. Связь приложений с базами данных ADO каталог с BookShop, воспользовавшись для этого приложением Microsoft Management Console. Для ограничения доступа отредактируйте свойства виртуального каталога BookShop, в панели BookShop Properties вкладку Directory Security (рис. 4-17).

Прежде всего, на этой вкладке Вы можете запретить доступ анонимных Интернета к данному каталогу. Для этого щелкните кнопку Edit в поле Anonymous Assess and Authentication Control. На экране появится па нель Authentication Methods (рис. 4-18).

Methods or resource Г to access Account Windows NT and * ts disabled is using Рис. Отмена доступа анонимных пользователей Снимите в этой панели у переключателя Allow Anonymous Access и оставьте ее у переключателя Windows NT Challenge/Response.

таг Ч создание списка адресов IP для Щелкните кнопку Edit в поле IP Address Domain Name Restrictions на Directory Security (рис. Вы увидите спис адресов IP, на рис. 4-19.

and Domain Name Address Рис. Панель IP Address Name Restrictions Отметьте этой панели переключатель Denied Access. В результате к дан ному виртуальному каталогу будет запрещен доступ со всех адресов IP, исклю перечисленных в Список редактируется с помощью Add нового Remove (удаление адреса) и Edit (редактирование адреса).

Вы должны добавить в список IP-адреса рабочих станций сотрудников Ва шего работающих с административным приложением. При этом поза ботьтесь о том, чтобы у них были постоянные, а не динамические адреса IP.

Базы данных в Интернете. Практическое Дополнительный уровень безопасности административного приложения ре ализуется парольной системой доступа, в само прило Приложение покупателя Приложение покупателя будут магазина, поэтому при его реализации мы решили обойтись без клиентских сценариев, Это позволило нам номенклатуру браузеров, способных правильно показывать страни цы публичной части чем приступить к рассказу о том, как реализовать страницы ASP приложения покупателя, рассмотрим логику его работы.

Когда посетитель попадает на эту страницу, в окне его браузера появляется форма, показанная на рис. 4-20.

для покупателей зарегистрируйтесь Рис. 4-20. Первая страница приложения покупателя Прежде всего посетитель должен зарегистрироваться, выбрав среди всего прочего идентификатор (имя для входа) и пароль. Это позволит нам не только получить информацию о покупателях, по и просто необходимо для создания в базе индивидуальных электронных корзин, куда покупатели отклады вают товар перед оплатой.

Вам Рис. Сообщение новым покупателям о необходимости Глава 4. Связь приложений с базами данных через ADO Если посетитель зарегистрировался то, для того чтобы попасть в магазин, ему нужно ввести в поле Имя свой идентификатор, а в поле Пароль Ч свой пароль. Новые пользователи должны зарегистрироваться, щелкнув кноп ку Регистрация.

В тех случаях, когда идентификатор пользователя отсутствует в регистрационной базе данных или когда пароль указан неправильно, посетитель получает о необходимости регистрации (рис. 4-21).

Щелкнув ссылку Вам нужно зарегистрироваться, посетитель попадает на входную страницу, показанную на рис. 4-20.

Таким образом, мы не сообщаем посетителю, допустил ли он ошибку при вводе идентификатора или пароля, а просто информируем о необходимос ти регистрации.

Форма регистрации новых посетителей показана на рис. 4-22.

- И ' новых покупателей отмеченные нужно Иван | Русский i о v е m ei l_s Адрес уп Пер о I Не посылать в] Рис. 4-22. Форма регистрации нового покупателя Здесь посетителю предлагается ввести такие сведения, как полное его имя, выбранный идентификатор и пароль, язык, на котором следует отображать стра ницы адрес электронной и обычной почты, а также ответить на вопрос, хочет ли он получать рекламные извещения о появлении в магазине то варов.

Как мы уже говорили раньше, при описании полей таблицы clients, содер жащей сведения о поля идентификатора пользователя и электрон ного адреса сделаны уникальными. Если при регистрации посетитель укажет или адрес электронной почты, введенный ранее другим посети телем и хранящийся в базе данных, он получит сообщение об ошибке с предло жением повторить Форма с этим сообщением показана на рис. 4-23.

Базы данных в Интернете.

"3 - I..

при формы с ом и адресом уже Выберите другой Рис. 4-23. Сообщение ошибке при В случае успешной регистрации увидит на экране другое сообще ние Ч приглашение для входа (рис. 4-24).

Рис. 4-24. Приглашение для входа Щелкнув ссылку посетитель вновь на страни цу, на рис. 4-20. Теперь ему ввести свой и пароль, а затем кнопку Вход.

описанные выше действия, покупатель наконец на глав ную страницу магазина, из трех фреймов (рис. 4-25). Левый пред ставляет собой меню команд, состоящее всего из двух строк Ч Выход и Опла тить покупки. Верхний фрейм имеющихся в а в фрейме отображается содержимое корзины покупателя. При первом посещении магазина корзина пуста.

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

Как видно из рис. в правом верхнем фрейме отображается информация из таблицы books, описанной нами Эта информация вводится и редакти руется сотрудниками Вашего при административного прило жения, которое мы рассмотрим Справа от названия книги, под ее стоимостью находится ссылка, которую покупатель добавит в свою корзину. Список отобранных книг появится в правом нижнем фрейме (рис. 4-26).

Глава 4. Связь приложений с базами данных через ADO - by - - - Х " _ _ _ д Сегодня в Фролов. Г.В. г для л ХРусская Эта книга собой практическое руководство по Web с данных для а также Б ней смотрены с Active Pages Е Русская J..

Вы отобрали для Рис. 4-25. Страница, которая отображается при первом посещении магазина _ _ Сегодня в продаже Фролов. Г.В. Фролов.

Интернет и в редакция с по с данных а также Б ней рас созданные oft с Скотт Pages В;

АН книга....

Вы отобрали для А.Е. Фролов. Г.В. Фролов. с данных для и ' Скотт из Server Рис. 4-26. Список книг, которые покупатель отобрал в свою корзину 152 Базы данных в Интернете. Практическое руководство Ссылка Удалить из корзины позволит посетителю отказаться от покупки той или иной книги.

Вы можете рассчитать стоимость книг с учетом доставки, а также позволить посетителю указывать количество приобретаемых книг. Стоимость доставки определяется автоматически, если Вы добавите в базу данных магазина табли с о стоимости доставки для различных регионов, а при регис трации посетитель из списка город и страну проживания. Не забудьте также учесть способ доставки (поездом, самолетом, курьером и т. д.).

Кроме того, стоит создать на которой пользователь мог бы редак тировать некоторые или все регистрационной информации.

Ссылка покупки посетителю оплатить покупку или сде лать предварительный заказ. Мы рассмотрим соответствующие процедуры поз же в этой главе, а сейчас опишем тексты страниц ASP приложения покупателя.

Файл global.asa В корне виртуального каталога созданного для страниц клиен тского приложения, необходимо разместить файл (листинг 4-6).

Листинг 4-6 Вы найдете в файле на прилагае мом к книге компакт-диске.

В начале этого файла мы поместили ссылку на библиотеку типов ADO, нуж ную для использования констант в серверных сценариях ASP:

Проверяя работу нашего отредактируйте путь, указанный в параметре FILE тега METADATA, таким чтобы он указывал на файл Вашего Web.

Страницы входа и начальной регистрации Несколько страниц приложения покупателя предназначены для аутентифика ции посетителей и для регистрации посетителей. Они взаимосвязаны, и поэтому мы будем рассматривать Вход зарегистрированных посетителей Форма входа покупателей, показанная рис. 4-20, опре делена в файле (листинг 4-7).

Листинг 4-7 Вы найдете в файле на прилагае мом к книге компакт-диске.

Вы должны настроить свой сервер Web таким образом, чтобы при просмот ре виртуальных каталогов пользователю файл с именем Кроме того, следует запретить посетителям прямой просмотр содержимого вир туальных каталогов сервера Изучая листинг 4-6, Вы можете заметить, что в нем находятся две формы.

Первая форма входа зарегистрированных покупателей:

для

Она ссылается на страницу Вторая форма содержит кнопку с над писью Регистрация, щелкнув которую, посетитель попадает на реги Вначале мы рассмотрим исходный текст страницы enter.asp (листинг 4-8), Листинг 4-8 Вы найдете в файле на прилагаемом к книге компакт-диске.

При загрузке этой передается из формы содержимое полей с име нами и PWD (идентификатор посетителя и его пароль соответственно).

расположенный на странице enter.asp, получает иден тификатор пользователя и пароль, обращаясь к объекту а сохра няет соответствующие строки в переменных с именами и var var Далее сценарий создает объект Connection и открывает с источ ником данных, вызывая для этого метод Open:

connect;

connect = = 15;

= 10;

С целью обработки ошибок зта и последующие операции с базами данных выполняются сценарием в блоке try.

Мы методу Open в качестве параметров имя источника базы данных Интернет-магазина Bookstore, нами ранее, имя базы дан ных и пустую строку пароля. В реальном проекте мы рекомендуем определить отдельные учетные записи для работы с источником данных и пароли.

154 Базы в Интернете. Практическое руководство На следующем этапе сценарий создает объект Command, для выполнения процедуры аутентификации var = "ClientLogin";

= = connect;

процедура ClientLogin имеет два входных (идентифи катор и пароль посетителя) и один выходной (результат аутентификации).

параметры определяются в объекте Command следующим образом;

adVarChar, "Pass", adVarChar, adParamlnput, 50, Имена параметров указаны как и Pass. Это текстовые строки, тип параметров мы указываем как adVarChar. adParamlnput определяет, что параметры User и Pass являются входными. Длина текстовых строк, переда ваемых через данные параметры, не превышает 50 байт. И наконец, значения параметров берутся из sUser и sPassword.

Выходной параметр определяется аналогичным образом, но с применением константы ParamOut = adVarChar, 50, После формирования параметров они добавляются к команде метолом Append, чего команда при помощи метода Execute:

cmd.

Если в создания с источником данных, команды и ее параметров, а также при команды возникло ника ких ошибок, закрывается методом Close:

Строго говоря, можно не закрывать соединение подобным образом, так как после того как пользователь обратится к другой странице, оно будет автомати чески закрыто. Однако это может произойти не сразу 20 минут), поэтому для ресурсов сервера SQL Server мы закры ваем соединение явным образом.

Далее мы проверяем значение, полученное от хранимой процедуры Client Login через параметр ParamOut.

Если пользователя прошла успешно, в этом бу дет находиться значение, отличное от null. В этом случае мы сохраняем в менных сеанса результат аутентификации, признак успешной идентификации и идентификатор а затем передаем управление странице != null) Глава 4. Связь приложений с базами данных через ADO else { Переменная с Rights никак не нашим приложе нием, хотя Вы можете применить ее для дифференциации посетителей. В этом случае в таблице clients Вы можете предусмотреть поле Rights и в нем права устанавливая их в зависимости от тех или иных условий.

пользователи, сделавшие покупки на суммы, могут доступ к страницам Вашего магазина.

Содержимое переменной сеанса Ok проверяется перед отображением всех страниц приложения покупателя, кроме страниц аутентификации и регистрации.

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

И наконец, сеанса идентифицирует покупателя и исполь зуется, для формирования его персональной корзины.

При неудачной аутентификации содержимое указанных переменных сеанса а пользователю выдается страница с о необходимости Обработка ошибок В том случае, когда при обращении к базе данных возникли ошибки, мы их обрабатываем в блоке catch. Использованная при этом методика была описана поэтому здесь мы только скажем, что сообщение об ошибке передается При этом через ERROR мы передаем имя файла страницы, в которой произошла ошибка, а в переменной Ч сообщение об ошибке, подготовлен ное в блоке catch.

Исходный текст страницы error.asp показан в 4-9.

Листинг 4-9 Вы найдете в файле ch4\BookShopClient\error.asp на прилагаемом к книге компакт-диске.

Здесь мы информируем посетителя о том, что произошла ошибка в приложе нии, для исправления которой необходимо вмешательство администратора сер вера Web. Далее отображается страницы, в которой произошла ошиб ка, и текст сообщения об ошибке:

в <р>0братитесь к администратору сервера Web.

На рис. 4-27 показано сообщение, появляющееся в том случае, если Вы пы таетесь создать соединение с несуществующим источником данных.

Базы данных в Интернете. Практическое руководство --.. ' Ошибка в к not found and no driver в] Done Рис. 4-27. Сообщение об ошибке при соединении с источником данных Другое сообщение появится в случае, если Вы назначить права до ступа к хранимой процедуре:

SQL Server permission denied on object database owner Кстати, если мы вовсе опустим обработку ошибок на странице enter.asp, то ошибка все равно будет обработана, но уже системой интерпретации страниц ASP. При этом в случае, например, прав на выполнение хранимой про цедуры в окне браузера посетителя появится показанное на рис. 4-28.

I..

MS] OLE for ODBC error SQL on owner Рис. 4-28. об ошибке, отображаемое ASP Хотя оно содержит даже больше нужно для отладки стра ницы (дополнительно отображается номер строки, в которой произошла ошиб ка), пользователю оно будет непонятно. Мы можем пользовате лю те или иные действия в зависимости от логики работы приложе ния или от того, где возникла ошибка, а также в ряде случаев полностью лик видировать ее последствия от пользователя.

Хранимая ClientLogin Теперь мы расскажем Вам о том. как устроена хранимая ClientLogin, которая вызывается из сценария cnter.asp и выполняет аутентифика цию пользователей посетителей магазина.

Глава 4. Связь с данных через ADO Исходный текст хранимой процедуры приведен в листинге 4-10.

Листинг 4-10 Вы найдете в файле на прилагаемом к книге компакт-диске.

Процедура ClientLogin имеет входных параметра и @Pass и один CREATE PROCEDURE ClientLogin output AS SELECT FROM clients WHERE AND clients SET WHERE С оператора SELECT процедура выбирает теля из столбца таблицы clients так, чтобы идентификатор, записанный в этом столбце, совпадал с содержимым параметра Кроме того, проверя ется совпадение пароля (хранящегося столбце Password) и содер жимого переменной Если в результате такого запроса в таблице clients найдена под ходящая запись, считается, что аутентификация прошла успешно. С помощью оператора UPDATE процедура ClientLogin поле LastLogin найденного пользователя, записывая в него дату и время подключения, полученные от фун кции GETDATE.

Определение фреймов главной страницы После успешной аутентификации страница enter.asp загружает в окно браузера посетителя страницу фреймов покупателя с именем Исходный текст этой подготовленной при помощи Microsoft FrontPage, Вы найдете в листинге Листинг 4-11 хранится в файле на прилагаемом к книге компакт-диске.

С помощью тегов и мы определили три фрейма с имена ми left, rtop и Для посещения нашего сервера нужен браузер, способный работать с