Web Creation - еженедельный сетевой журнал для вебмастеров

   
Обработка форм

Автор: Марат Гатеев
Информация взята с сайта Мой WWW

В этой статье будут рассмотрены основы обработки форм на ASP. Вначале рассмотрим случай, когда для передачи данных от формы на скрипт используется метод POST. Для удобства программные строки пронумерованы, на практике этого делать не надо. Ну-с, приступим... Имеется простейшая форма:

1   <FORM action="somescript.asp" method="post">
2   <INPUT type="text" name="login">
3   <INPUT type="password" name="password"> 
4   <INPUT type="submit" value="Отправить">
5   </FORM>

В результате получится вот так:

Форма имеет два поля: одно текстовое с именем "login", второе - для ввода пароля с именем "password". В таком поле текст отображается в виде "звездочек". Для обработки данных используется скрипт somescript.asp, располорженный в той же папке на сервере, где и файл формы. Скрипт для обработки может выглядеть следующим образом:

1   <!-- somescript.asp -->
2   <HTML>
3   <HEAD>
4   <TITLE>Обработка формы</TITLE>
5   <HEAD>
6   <BODY bgcolor="#FFFFFF">
7   <%
8   formLogin = Request.Form("login")
9   formPassword = Request.Form("password")
10  %>
11  </BODY>
12  </HTML>

C помощью элементов <% и %> в ASP файле ограничивается область, в которой описываются ASP-инструкции. Объект Request с помощью метода Form читает информацию из элемента формы его вызвавшей: значение поля login формы копируется в некоторую переменную formLogin, подобно работает вторая строка. Теперь сделаем так, что бы при неверном пароле или логине выдавалось соответствующее сообщение.

1   <!-- somescript.asp -->
2   <HTML>
3   <HEAD>
4   <TITLE>Обработка формы</TITLE>
5   <HEAD>
6   <BODY bgcolor="#FFFFFF">
7   <%
8   rightLogin = "petrov"
9   rightPassword = "sim-sim"
10  formLogin = Request.Form("login")
11  formPassword = Request.Form("password")
12  if (LCase(formLogin) <> LCase(rightLogin)) or_
      (formPassword <> rightPassword) then
13    Response.Write("<P>Неверный логин и(или) пароль!</P>")
14  else
15    Response.Write("<P>Все в порядке!</P>")
16  end if
17  %>
18  </BODY>
19  </HTML>

В строках 8 и 9 задаются переменные с контрольными значениями логина и пароля. Строка 12 начинает блок IF, проверяя логин и пароль, введеные на форме, с конрольными, и в случае ошибки выдает сообщение (строка 13). Здесь используется объект Response и его метод Write, который выводит в окне броузера сообщение об ошибке. Если все правильно - выводится сообщение о правильно введенных данных. Обратите внимание, что при проверке логина сравниваемые строки переводятся в нижний регистр функцией LCase. Это сделано для того, чтобы исключить влияние регистра. Для случая с паролем этого нет, так как обычно для пароль джелают чувствительным к регистру.

А что если нужно сохранить информацию с формы в файл? Рассмотрим пример скрипта, который считывает информацию из формы и сохранияет ее в файле. Например, это может быть пример страницы для отправки автору сайта какой либо информации. Итак, есть файл формы, для экономии времени рассмотрим его фрагмент, непосредственно содержащий форму. Пусть файл формы называется formproc.html. Вот он:

1   <!-- фрагмент formproc.html -->
2   <FORM action="savemess.asp" method="post">
3    Имя <BR>
4   <INPUT type="text" name="name" value="Ваше имя">
5   <BR>
6   Сообщение <BR>
7   <TEXTAREA name="message" WRAP>Ваше сообщение</TEXTAREA> 
8  <BR>    
9   <INPUT type="submit" value="Отправить">
10  </FORM>

И вот что это дает:

Имя

Сообщение

Скрипт для обработки формы такой:

1   <!-- savemess.asp -->
2   <HTML>
3   <HEAD>
4   <TITLE>Обработка формы</TITLE>
5   <HEAD>
6   <BODY bgcolor="#FFFFFF">
7   <%
10  formName = Request.Form("name")
11  formMessage = Request.Form("message")
12  basepath = Server.MapPath("/users/Gamar/")
13  Set fs = CreateObject("Scripting.FileSystemObject")
14  Set f = fs.OpenTextFile(basepath & "\store.txt", 8, True, False)
15  f.WriteLine("  ") ' пустая строка для отделения записей
16  f.WriteLine(now) ' дата
17  f.WriteLine(formName) ' имя
18  f.WriteLine(formMessage) ' сообщение
19  f.Close
20  Set fs = nothing
21  Set f  = nothing
22  %>
23 <CENTER><BIG>Ваше сообщение принято! Спасибо!</BIG></CENTER>
24 <META http-equiv="refresh" content="1; url=formproc.html">
25  </BODY>
26  </HTML>

Подробности: в строке 13 создается файловый объект, в строке 14 файл store.txt открывается для добавления записи в конец. В строках 15-18 в файл вносится новая запись. Строки 20, 21 - освобождение памяти. Для возврата к formproc.html в строке 24 содержится автопереход.

В заключении хочу остановится на методе передачи данных GET. В данном случае, как известно, информация из формы передается в строке URL. Например, если некто в предыдущей форме ввел имя "clinton", а в качестве сообщения указал "monica", но при этом метод передачи GET, а не POST, то при открытии savemess.asp URL будет таким savemess.asp?name=clinton&message=monica. Как нужно изменить скрипт? Все очень просто: вместо Request.Form использовать Request.QueryString.

<%
formName = Request.QueryString("name")
formMessage = Request.QueryString("message")
%>

На этом позвольте завершить

Автор: Марат Гатеев
Информация взята с сайта Мой WWW

 

© журнал принадлежит Web Creation
по всем вопросам обращаться А. Кузьмин