VR
Virtual Reality On-line   Журнал
Новости   |     Журнал    |    Хаkер    |     Магазин   |   Проекты
[   Вход    ]
[Kарта сайтa]

[ Download  ]
[  Конкурс  ]
[ Анекдоты  ]
[  Ссылки   ]
[  Реклама  ]
[ Почтальон ]
[ О проекте ]






TopList
ActiveX
Программирование ASP-сервера. Часть 2
:
Logo

В прошлый раз я расказал тебе, как создавать простейшие приложения для ASP сервера. Мы посылали запрос написанному в Delphi модулю и получали от него ответ. Такая схема эфективна на 10-20%, потому что основное преимущество у ASP - возможность получения и обработки введённой пользователем инфы. Сегодня я научу тебя этому чуду природы.

Рассмотрим простейший пример - подписка на новости. Для этого пользователь должен ввести в HTML форме своё имя и e-mail адрес, и отправить информацию серверу. ASP сервер должен прочитать информацию и сохранить в базу. Сохранять мы не будем (это дело техники), а информацию поличим и разберём. Так что, ты сам сможешь увеличить функциональность нашего сервера. А с базами данных мы будем работать в следующий раз.

Итак, открой пример из предыдущей статьи и выбери из меню View-> Type Library. Назови его RequestData . После нажатия кнопки "Обновить", ты увидешь новую процедуру RequestData в модуле TesterUnit.

procedure TTester.RequestData;
var
 Str:String;
 i,j:integer;
begin
 Str:='';

 //Вывести приветственное сообщение
 Response.Write('<center><H2> Второй привет от ASP сервера </H2></center>');

 //Получить количество переданных параметров Request.QueryString.Count
 Str:=IntToStr(Request.QueryString.Count);
 //Вывести на форму количество параметров
 Response.Write('Количество членов -'+Str+ ' <HR> ');

 //Обнулить переменную, в которую сохраним информацию о параметрах.
 Str:='';

 //Если интерфейс Request действителен, то можно работать
 if Assigned(Request) then 
 //Если параметров больше 0, то пользователь передал данные.
 if Request.QueryString.Count>0 then
  begin
   //Запускаем цикл обработки всех переменных
   for i:=1 to Request.QueryString.Count do
    begin
     Str:=Str+'Ключь'+IntToStr(I)+'='+Request.QueryString.Key[i]+'<P>';
     if not VarIsEmpty(Request.QueryString.Item[i]) then
      if varType(Request.QueryString.Item[i])=varDispatch then
       begin
        if Request.QueryString.Item[i].count>0 then
         for j:=1 to Request.QueryString.Item[i].count do
          Str:=Str+'Значение: '+Request.QueryString.Item[i].item[j]+'<P>';
       end;
     Str:=Str+'<HR>';
    end;
  end;
 //Выводим информацию
 if Assigned(Response) then
  Response.Write(Str);
end;

Мы получаем информацию о введённых данных через строку URL, например: http://194.190.35.10/Tester.asp?text1=%C8%E2%E0%ED%EE%E2&text2=ivanov@mail.ru&button1=%CE%F2%EF%F0%E0%E2%E8%F2%FC. В этой строке сначала идёт адрес странички: http://194.190.35.10/Tester.asp, затем, после знака ? (вопрос) идут переданные параметры.

Вот именно они находятся в параметре QueryString интерфейса Request. Количество параметров находится в свойстве Count (Request.QueryString.Count).

Ключи находятся в списке Request.QueryString.Key[i], где i изменяется от 1 до Request.QueryString.Count. Заметь, что именно с единицы, а не с нуля. Почему? Спроси Microsoft. По этим ключам ты можешь определить имя компонента, который передал значения. А соответвующее значение можно найти в параметре Request.QueryString.Item[i].

Сами значения ключей находятся в отдельном списке Request.QueryString.Item[i], где i изменяется так же. Здесь может находится несколько значений, и их количество хранится в свойстве Request.QueryString.Item[i].count. Чтобы получить доступ к значению параметра нужно прочитать Request.QueryString.Item[i].item[j].

Для удобства я все данные собрал в кучу и наш запрос выведет их на экран. Тебе надо только выполнить ASP-запрос и ты сразу поймёшь всё, что написано в исходнике.

Перед компиляцией не забудь добавить в раздел Uses модуль Sysutils. В нём описана функция IntToStr, которую мы используем. Если ты этого не сделаешь, то могут возникнуть проблемы с компиляцией.

Запомни, что информация о кнопке типа "Отправить" тоже уйдёт серверу.

Теперь компилируй пример и запускай. Для запуска нам понадобится HTML форма (как на рисунке 1) для ввода данных:

<html>
<head>

<title> 
Тест ASP на получение данных
</title>

<body>
<form action="http://194.190.35.10/Tester.asp" metod="POST" name="QUERY">
<P>Name   <input type="text" size=20 name="text1"></P>
<P>e-mail <input type="text" size=20 name="text2"></P>
<P><input type="submit" name="button1" value="Отправить"></P>
</form>
</body>
</html>
Logo
Рис 1. HTML форма

Данные отправляются по адресу http://194.190.35.10/Tester.asp (194.190.35.10 - адрес моего сервера, замени на свой). Tester.asp - имя ASP-формы в главной директории моего WEB-сервера. Данные отправяться в виде URL форме Tester.asp, которая выглядит так:

<HTML>
<BODY>
<TITLE> тестирование сервера ASP </TITLE>
<HR>
<% Set DelphiASPObj = Server.CreateObject("ASPTester.Tester") 
   DelphiASPObj.RequestData
%>
</BODY>
</HTML>
Logo
Рис 2. ASP форма с результатом запроса

В форме Tester.asp я также, как и в прошлый раз создаю объект ASPTester.Tester. А во второй строке я вызываю новый метод DelphiASPObj.RequestData.

Всё. Используй на здоровсе. Если возникли проблемы, то качай мой исходник. А в следующий раз мы будем работать с базами данных, так что готовься.


Design by FMk group ©
Copyright©: Horrific aka Флёнов Михаил ©