Июнь 2010

Самоучитель по креативному веб-дизайну. Книга 4, стр.51





DIM firstName, lastName, eMailAddr

1 Получение данных, введенных в форму

firstName = Request. Form(«firstName»)

lastName = Request. Form(«lastName»)

eMailAddress = Request. Form(«eMailAddr»)

‘ Отображение введенных данных

With Response

.writer «Имя: » & firstName & «

»

.write «Фамилия: » & lastName & «

»

.write «E-mail: » & eMailAddress & «

»

End With

, .%>

Самоучитель по креативному веб-дизайну. Книга 4, стр.52

Чтобы не нарушить конфиденциальность данных, принятых из формы, в дес- крипторе

следует установить атрибут method равным POST — тогда брау — зер отправит эти данные в теле HTTP-сообщения. Метод POST можно использо — вать для приема подробностей заказа или имени, адреса и номера телефона

посетителя. Если же форма содержит очень важные данные, такие как номер кредитной карточки, имя пользователя и его пароль или номера счетов, то мож — но установить защищенное соединение между браузером и сервером. При ис — пользовании метода POST для пересылки данных, принятых из формы, по защи- щенному соединению данные передаются через Internet в теле HTTP-сообщения

в зашифрованном виде.

И наоборот, если вы хотите записывать данные, принятые из формы, в файле протокола на сервере для последующего анализа или же позволить посетителям создавать закладки (или список избранных данных), которые можно использо — вать в дальнейшем для автозаполнения формы, то атрибут method дескриптора

Самоучитель по креативному веб-дизайну. Книга 4, стр.53





DIM symbol(6), i

1 Получение данных, введенных в форму

symbol(l) — Request. QueryString(«si»)

symbol(2) = Request. QueryString(«s2″)

symbol(3) = Request. QueryString(«s3″)

symbol(4) = Request. QueryString{«s4″)

symbol(5) = Request. QueryString(«s5″)

symbol(6) = Request. QueryString(«s6″)

1 Отображение введенных данных

With Response

% For i=l To Request. QueryString. Count

.Write «Обозначение » & i & «: » & symbol (i) & «

» Next

End With

%>





В данном примере сценарий сначала выбирает значения элементов формы по

ИХ именам ИЗ КОЛЛекЦИИ Request. QueryStrin g И Присваивает ЭТИ Значения ЭЛе —

ментам массива symbol. Затем для отображения всех значений, принятых из

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

метода GET, ИЗ КОЛЛекЦИИ Request. QueryString. Кроме ТОГО, Значения всех элементов можно получить по их именам.

580 Глава 11. Активные серверные страницы (ASP)







Вообще-то обычно значения элементов формы выбираются по их именам — если эти имена осмысленны. Однако в предыдущем примере имена элементов формы никак не описывают их значения. Поэтому в данном случае значения

элементов формы удобнее выбирать из коллекции Request. Querystring не по именам, а по их числовым индексам, как показано ниже:



!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN»>







DIM symbol(6), I

1 Получение и отображение имен и значений данных, введенных в форму

With Response

For i = 1 To Request. Form. Count

.write «» & Request. QueryString. Key(i) & «: » &__

Request. QueryString(i) &»•’

Next

End With

%> f

Самоучитель по креативному веб-дизайну. Книга 4, стр.54





For Each itemName In Request. ServerVariables

Response. Write «» & itemName & » = » &

Request. ServerVariables (itemName) & «

» Next

%>

Самоучитель по креативному веб-дизайну. Книга 4, стр.55

ботающих с данными таблиц баз данных. На самом деле, если вы (как и посети — тели вашего сайта) входите в Internet, чтобы проверить состояние своего счета, совершить покупку или проверить состояние какого-то заказа, весьма вероятно, что вы прямо или косвенно сталкиваетесь с базой данных SQL. Сценарии на стороне сервера незаметно для пользователя выбирают данные из таблиц баз

данных и генерируют с их помощью видимое содержимое Web-страницы. Кроме этого, сценарии обновляют данные в базах данных — если вы введете соответ — ствующие инструкции и отправите их на Web-сервер с помощью HTML-форм.

Прежде чем принимать и обрабатывать запросы и другие SQL-операторы, ASP-сценарий должен открыть соединение с системой управления базами дан — ных (СУБД). Например, для открытия соединения с СУБД MySQL ASP-сцена —

рию должен быть доступен драйвер открытого соединения с базой данных (ODBC — Open DataBase Connectivity), работающий в качестве посредника. Сце- нарий передает ODBC-драйверу строку (с инструкциями по открытию/авториза — ции или SQL-операторами). ODBC-драйвер, в свою очередь, преобразует строку

в формат, понятный СУБД (такой как MySQL), и передает строку с операторами открытия базы или выборки данных для обработки СУБД. Затем ODBC-драйвер форматирует выходные данные, выданные СУБД (например, результат выполне —

Самоучитель по креативному веб-дизайну. Книга 4, стр.56

ния запроса), и передает результат выполнения операторов ASP-сценарию.



ПРАКТИКУМ

На момент написания данного текста ODBC-драйвер, посредством которого ASP-сценарий должен взаимодействовать с СУБД MySQL, вместе с MySQL не поставлялся. Вы можете выгрузить драйвер MyODBC по адресу http:/ /

www. MySQL. com/Downioads/. (В разделе API-интерфейсов этой Web-страницы

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

584 Глава 11 . Активные серверные страницы (ASP)





MyODBC. zip с указанного сайта в какую-нибудь папку (типа

C:\My DownLoad Files ) на компьютере, на котором установлена СУБД

MyODBC. Затем распакуйте архив В папку вроде C:\My Download Files\MyODBC.

И, наконец, завершите процесс инсталляции, выполнив следующие шаги:

1. Найдите в папке, в которую вы распаковали архив MyODBC. zip, программу

Setup. exe. ШШ

2. Запустите программу setup. exe, дважды щелкнув на. ее имени. Вы увидите окно программы установки Microsoft ODBC.

3. Щелкните на кнопке Continue (Продолжить). Появится диалоговое окно

Install Drivers (Установка драйверов).



4. Выберите в списке выбора доступных драйверов ODBC MySQL и щелкните на кнопке ОК. Появится диалоговое окно Data Sources (Источники данных).

5. Щелкните на кнопке Close (Закрыть) и затем на ОК в нижней части окна

программы установки Microsoft ODBC — для завершения работы инсталля — ционной программы.



После щелчка на кнопке Close на пятом шаге программа инсталляции уста — новит драйвер MyODBC в вашу систему, и появится окно с сообщением Microsoft ODBC Setup Complete (Установка Microsoft ODBC завершена). Щелкните на кноп —

ке OK, и программа инсталляции завершит свою работу.

После установки драйвера ODBC для СУБД MySQL (MyODBC) ваши ASP- сценарии могут открывать соединение с СУБД с помощью строки соединения со следующим синтаксисом:



DRIVER={MySQL};SERVER=;

ию= пользователя^* РК0=;0АТАВА8Е=



Например, предположим, что ваш Web-сервер находится на компьютере с именем NVBizNet, и вы хотите открыть соединение с базой данных hwdtt. (Имя базы данных получено из первых букв английского названия книги: HTML & Web Design Tips & Techniques.) В таком случае вам необходимо воспользоваться следующей строкой открытия соединения:



DRIVER={MySQL};SERVER=NVBizNet;UID=root;PWD=;DATABASE=hwdtt



В данном примере ASP-сценарий открывает базу данных с именем привиле — гированного пользователя roo t и без пароля. После этого для отображения ре- зультатов запроса на Web-странице в виде HTML-таблицы в сценарии потребует —

ся вызвать подпрограмму наподобие следующей:



Sub SubmitQuery (queryString)

Const cMySQLConStr =

«DRIVER={MySQL};SERVER=NVBizNet;UID=root;PWD=;DATABASE=hwdtt» Dim objMySQLCon, objResultsSet

Dim field

1 Создание объекта базы данных

Set objMySQLCon = Server. CreateObject(«ADODB. Connection»)

Глава 11. Активные серверные страницы (ASP) 585





With objMySQLCon

1 Открытие соединения с СУБД MySQL, прием запроса

1 и сохранение множества результатов запроса в объекте VBScript

.Connectionstring = cMySQLConStr

.Open

Set objResultsSet = .Execute (queryString)

1 Отображение запроса на Web-странице

Response. Write «PesynbTaTbi выполнения запроса: » & _

queryString & «»

1 Отображение имен столбцов и результатов запроса в HTML-таблице

Response. Write » border=’ 1′ cellpadding=’ 5′>»

1 Отображение имен столбцов SQL-таблицы в строке шапки HTML-таблицы

Response. Write «
»

For Each field In objResultsSet. Fields

Response. Write «» & field. Name & «» Next

Response. Write «

»

1 Отображение значений результатов запроса в строках HTML-таблицы

Do While Not objResultsSet. EOF

Response. Write «
»

For Each field In objResultsSet. Fields

Response. Write « » & field & «

» Next

Response. Write «

»

1 Сдвиг указателя записи на следующую строку результататов objResultsSet. MoveNext

Loop

Response. Write «« End With

End Sub

%>

Как видно из приведенного примера, следующие операторы сценария исполь —

зуют объект соединения (objMySQLCon) и его метод Open для открытия соедине — ния с базой данных MySQL:



objMySQLCon. ConnectionString = cMySQLConStr

objMySQLCon. Open



Далее в сценарии используется оператор Set — для передачи запроса из строки

queryString В СУБД И пересылки результатов Запроса В Объект objResultsSet:



Set objResultsSet = objMySQLCon. Execute(queryString)

В данном примере VBScript сохраняет результаты запроса в коллекции Fields объекта набора результатов (или записей) objResultsSet. По существу, результа — ты запроса сохраняются в объекте objResultsSet в виде пар ключ/элемент (т. е.

имя/значение). Программисту доступны и имя элемента (или ключ), и его зна —

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

Самоучитель по креативному веб-дизайну. Книга 4, стр.57

586 Глава 11. Активные серверные страницы (ASP)



Организация доступа к Web-сайту по имени пользователя и паролю

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

страниц, содержание которых доступно всем посетителям. Но доступ к страницам в закрытой (только для зарегистрированных членов) области должен быть разре — шен Web-сервером только посетителям со специальными учетными записями.



ПРАКТИКУМ

Каждая учетная запись содержит имя пользователя и пароль, которые пользова- тель должен ввести, чтобы получить доступ к закрытой информации. Чтобы ав —

торизованные посетители могли войти на сайт, создайте HTML-форму с предло — жением посетителю ввести свое имя и пароль. Например, можно сохранить следующее определение формы в Web-странице с именем Login. htm:


method=»POST»>

Имя:
name=»username» size=»20″Xbr>

Пароль:
type=»password» name=»password» size=»20″XbrXbr>

type=»submit» value=»Bxofl»>







Атрибуту actio n дескриптора

нужно присвоить URL-адрес ASP-стра — ницы, содержащей сценарий аутентификации и входа на сайт. В данном приме —

ре атрибут actio n задает ASP-страницу authenticate. asp. Таким образом, пос —

ле того как посетитель введет в форму свои имя и пароль и щелкнет на кнопке

«Вход», браузер отправит введенные данные сценарию, содержащемуся в тексте

authenticate. asp. Если введенные имя и пароль совпадают с парой имя/па — роль, хранящейся в файле, сценарий позволит посетителю вход на страницу в области с ограниченным доступом.

Пары имя/пароль, описывающие зарегистрированных пользователей сайта, можно хранить в обычном файле или в таблице базы данных SQL. ASP-сценарий аутентификации посетителя ищет в списке пар имя/пароль запись, совпадаю — щую с парой, введенной в HTML-форму на странице регистрации. Если такая пара найдена, сценарий отправляет посетителя со страницы регистрации на зак — рытую страницу. Если же имя и пароль, введенные в форму, не найдены в списке лиц, имеющих доступ к закрытой области, сценарий отказывает в доступе к сай —

Самоучитель по креативному веб-дизайну. Книга 4, стр.58

ту и возвращает пользователя на страницу регистрации для совершения новой попытки входа.

Если имена и пароли пользователей хранятся в таблице SQL, то каждая стро —

ка этой таблицы содержит допустимую комбинацию имя/пароЛь: в одном столб —

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

Глава 11. Активные серверные страницы (ASP) 58 7





щить СУБД SQL, какую базу данных вы хотите использовать и затем выполнить

SQL-оператор CREATE TABLE:



USE hwdtt;

CREATE TABLE siteAccessList(

username VARCHAR(20) NOT NULL, password VARCHAR(20) NOT NULL) ;

Первый оператор этого примера указывает СУБД, что надо использовать базу данных hwdtt. (Имя базы данных получено из первых букв английского назва — ния книги: HTML & Web Design Tips & Techniques.) Синтаксис SQL-оператора CREATE TABLE выглядит следующим образом:



CREATE TABLE имя таблицы>(

тип столбца> [],



столбца> [атрибутов столбца>]);



Для использования SQL-таблицы ее необходимо наполнить списком имен и паролей, которые можно добавлять с помощью SQL-операторов INSERT. Напри — мер, для вставки данных в таблицу siteAccessList необходимо выполнить опе — ратор INSERT наподобие следующего:



INSERT INTO siteAccessList VALUES («Kris», «mfe2275″);

INSERT INTO siteAccessList VALUES («Andy», «687fc»);



Синтаксис SQL-оператора INSERT таков:



INSERT INTO имя таблицы> (, , . . . , )

VALUES (Оначение 1>, Оначение 2>, . . . , Оначени е N>) ;



(Как видно из данного примера, если в операторе INSERT заданы значения

для всех столбцов одной строки таблицы, то сам список столбцов, следующий за именем таблицы, можно опустить.)

Далее, чтобы использовать в нашем примере эту таблицу для входа на сайт, ASP-сценарий должен открыть соединение с СУБД и сформировать запрос в форме SQL-оператора SELECT. Например, для отображения всех имен и паролей

в таблице необходимо выполнить такой оператор:

SELECT username, password FROM siteAccessList;

Для проверки, ввел ли посетитель правильные имя и пароль, следует добавить конструкцию WHERE, которая указывает СУБД возвращать только те строки, в ко — торых имя и пароль совпадают со значениями, введенными посетителем в форму

на странице регистрации. Например, если пользователь ввел в форме имя «Andy»

и пароль «passl454″, запрос должен выглядеть так:



SELECT COUNT (*) FROM siteAccessList

WHERE username=»Andy» AND password=»passl454″;

Если запрос вернет «1″ , это значит, что посетитель ввел верные имя и па — роль, поскольку они присутствуют в списке зарегистрированных пользователей сайта. Если же посетитель ввел пару имя/пароль, отсутствующую в таблице (как

Самоучитель по креативному веб-дизайну. Книга 4, стр.59

в вышеприведенном примере), запрос вернет «0м, что означает, что ни в одной

учетной записи нет такой комбинации имени и пароля.

58 8 Глава 11. Активные серверные страницы (ASP)





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

Метод server. Createobject в следующем коде создает объект соединения с ба — зой данных:





objMySQLCon. Connectionstring =

«DRIVER={MySQL};SERVER=NVBizNet;UID=root;PWD=;DATABASE=hwdtt»

objMySQLCon. Open

%>



Свойство объекта Connectionstring содержит значения, необходимые сцена- рию для регистрации в СУБД. В данном примере метод objMySQLCon. open ис —

пользует ODBC-драйвер для MySQL, чтобы присоединиться к СУБД MySQL на

NT-сервере с именем NVBizNet. Соединение регистрируется под именем (UID)

root, без пароля, и выбирает для использования базу данных hwdtt.

После установки соединения с СУБД можно выполнить запрос, воспользовав — шись методом Execute объекта соединения:



queryString = /

«SELECT COUNT(*) Count FROM siteAccessList» & _

» WHERE username = ‘ » & Request. Form(«username») & «‘» &

11 AND password = ‘» & Request. Form («password») & «‘»

Set objResultsSet = objMySQLCon. Execute(queryString)

If objResultsSet. Fields(«Count») = 1 Then

Response. Redirect «/hwdtt/MemberWelcome. asp» End If

%>

В данном примере сценарий использует метод Execute объекта соединения

(objMySQLCon) для передачи строки с запросом (queryString) СУБД MySQL, ко — торая, в свою очередь, выполняет запрос и возвращает строки столбцов, удовлет — воряющих критерию поиска (т. е. набор результатов запроса), в объекте objResultsSet.

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

столбце с именем count. (Приведенная в запросе функция count(*) — это агре — гатная функция SQL, возвращающая количество строк таблицы, удовлетворяю — щих условию (условиям) поиска в конструкции WHERE.) Если СУБД найдет в

таблице siteAccessList соответствующие имя и пароль, то поле Count будет содержать «1″ , и сценарий перенаправит браузер на начальную страницу защи- щенной области сайта. Если же имя или пароль, введенные в форме регистра —

ции, неверны, СУБД в поле Count вернет «0м. После этого сценарий перейдет к

HTML-дескрипторам и тексту (не показанным здесь), которые сообщат посети- телю, что ему следует повторить ввод имени и пароля.

Web-страница, содержащая форму регистрации, и ASP-страница со сценарием аутентификации, описанным в данном разделе, находятся в архиве

chptiiTipO9.zip, который доступен для выгрузки на Web-сайте издательства

РУССКОЯЗЫЧНОЙ редакции ЭТОЙ КНИГИ (http://www. diasoft. kiev. ua) .

Глава 11. Активные серверные страницы (ASP) 58 9





Обратите внимание, что задание атрибута type элемента формы равным «password» визуально скрывает текст, вводимый посетителем в этот элемент. (Браузер на месте каждого символа, вводимого пользователем, отображает звез —

дочку.) Но после того как посетитель щелкнет на кнопке «Вход», браузер посы — лает все данные, введенные в форму (в том числе и введенный пароль), в виде незашифрованного ASCII-текста. В этом случае какой-то злоумышленник сможет перехватить тело HTTP-сообщения (в виде обычного текста), в которое браузер поместил имя и пароль, посылаемые серверу.

Чтобы защитить важную информацию (наподобие имен пользователей и их паролей), попросите Internet-провайдера, предоставляющего хостинг для вашего сайта, установить протокол SSL. Провайдер должен сначала получить сертифи — кат безопасности {security certificate) для вашего сайта от специальной уполно — моченной фирмы, такой как VerySign Corporation (http://www. verysign. com), Thawte Consulting (http://thawte. com) ИЛИ Entrust (http://www. entrust. com). После того как провайдер установит на Web-сервере сертификат безопасности для вашего сайта, сервер и браузер будут шифровать свои HTTP-сообщения пе — ред отправкой их в Internet. Шифрование данных, передаваемых браузером и сер — вером, защищает данные, введенные в форму (и остальное содержимое сообще- ния), от несанкционированного доступа, поскольку теперь злоумышленник, глядя на тело зашифрованного HTTP-сообщения, увидит лишь непонятную ме- шанину из букв, цифр и специальных символов.

Самоучитель по креативному веб-дизайну. Книга 4, стр.60

SSL-шифрование и дешифрация происходит вне сферы действия ваших

ASP:c4eHapHeB — в том смысле, что можно использовать тот же самый сцена — рий регистрации (или любой другой), работая и по защищенному, и по неза —

щищенному соедий^нию. Единственное заметное для вас отличие будет в том, что ваши защищенные URL-адреса будут начинаться не со стандартного (незащищенного) «http://» , а с «https://» . Таким образом, чтобы при пе — ресылке результатов, введенных в форму ASP-сценария, использовать защи — щенное соединение, следует указывать адрес наподобие https:/ /

www. NVBizNet. com/hwdtt/authenticate. asp ВМеСТО незащищенного http: //

www. NVBizNet. com/hwdtt/authenticate. asp.

После получения зашифрованного HTTP-запроса на ASP-страницу сервер де —

шифрует сообщение и пересылает расшифрованные данные (вроде данных, при — нятых из формы) вместе с запросом на Web-страницу обработчику сценариев ASP. Обработчик сценариев, в свою очередь, вызывает интерпретатор сценариев

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

59 0 . Глава 11. Активные серверные страницы (ASP)



Запуск сеанса и работа с переменными сеанса

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

а пользователь за время одного сеанса может получать одну или несколько Web — страниц. Например, во время сеанса посетитель может просмотреть прогноз по- годы на местном сайте новостей. Или же посетитель может войти на. банковский сайт, проверить состояние счетов, оплатить квитанции или перевести деньги со



Полезные ссылки
Случайные записи
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 074
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.56
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 126
  • 17.11.2011">Обзор SandyBridge E
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.5
  • 10.03.2011">Руководство по actionscript. часть 4, стр. 027
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.82
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.109
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.19
  • 13.03.2011">Руководство по actionscript. часть 3, стр. 093
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 113
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.89
  • 20.03.2011">Руководство по actionscript. часть 2, стр. 058
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 047
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.89
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...