
- •Оглавление
- •4.1. Разработка cgi-программ
- •4.1.2. Разработка cgi-программ в среде Visual Studio
- •If (login.Equals(dr["login"])) // в данных имени пользователя
- •4.2. Разработка активных страниц
- •4.2.1. Пример страницы asp.Net
- •4.2.2. Элементы страниц asp.Net
- •4.2.3. Создание страниц asp.Net в среде Visual Studio
4.1.2. Разработка cgi-программ в среде Visual Studio
Как уже отмечалось, обмен данными CGI-программ с сервером идет через входной и выходной потоки, поэтому разрабатываются они как консольные приложения.
Создание консольных приложений детально рассмотрено в п.п. 1.4, поэтому ограничимся рассмотрением примера.
Пример 4.2.
Создать Web-приложение, выполняющее регистрацию пользователя на основе введенного имени и пароля.
Приложение будет состоять из страницы для ввода данных, CGI-программы для обработки введенных данных и XML-файла, содержащего данные о зарегистрированных пользователях. Страница может быть создана с использованием любого средства, например, программы Блокнот или как файл HTML в среде Visual Studio.
Код HTML-страницы для ввода данных:
<html>
<HEAD>
<TITLE>CGI Program</TITLE>
</HEAD>
<body>
<CENTER><FONT size=6>Если Вы зарегистрированный пользователь, введите имя и пароль!</FONT></CENTER><BR><BR>
<form action=log_reg.exe >
<b>Имя</b>
<input type=text name=log>
<b>Пароль</b>
<input type=text name=pass>
<input type=hidden name="tip" value="log">
<input type=submit value=" Вход ">
</form>
<b>Если вы не зарегистрированы, зарегистрируйтесь!</b>
<form action=log_reg.exe >
<b>Имя</b>
<input type=text name=log>
<b>Пароль</b>
<input type=text name=pass>
<input type=hidden name="tip" value="reg">
<input type=submit value="Регистрация">
</form>
</body>
</html>
Вид страницы в окне браузера:
Страница содержит две формы, одну для ввода данных зарегистрированных пользователей, другую – для регистрации новых. Скрытые поля в формах будут использованы для распознавания источника данных. В качестве запрашиваемого ресурса при отправке данных указана программа log_reg.exe. Метод отправки данных – GET (по умолчанию).
Для хранения данных о пользователях предлагается использовать XML-файл users.xml, такой структуры:
<?xml version="1.0" standalone="yes"?>
<DataSet>
<user>
<login> </login>
<pass> </pass>
</user>
</DataSet>
Для каждого нового пользователя в файл будет добавляться тег <user> …</user>.
Программа обработки должна выделить переданные данные из переменных окружения, проверить значение скрытого поля (name="tip") и если оно установлено reg (новый пользователь), сравнить значение из поля name=log с именами зарегистрированных пользователей из файла users.xml. При совпадении в выходной поток направляется страница, содержащая предложение выбрать другое имя. Если такого имени нет, имя и пароль добавляются в файл, клиенту сообщается об успешной регистрации.
Если значение скрытого поля равно log (пользователь зарегистрирован), то имя и пароль сравниваются с теми, что хранятся в users.xml. При совпадении предлагается продолжить работу с ресурсом, в противном случае – повторить попытку ввода.
В среде Visual Studio создается новый проект, выбирается тип C# и Console Application, указывается место на диске и присваивается имя log_reg. В окне программы добавляется пространство имен System.Data (если его нет по умолчанию) и в объявлении класса Program вводится код программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace log_reg
{
class Program
{
public static DataSet DS;//Объект для работы с данными о польз.
public static void LoadDs()
{
DS = new DataSet(); //чтение из файла
DS.ReadXml(@".\users.xml");// данных о пользователях
}
private static void SaveDs()
{
DS.WriteXml(@".\users.xml");//запись в файл данных
} //о пользователях
public static bool NewUser(string login, string pass)
{
LoadDs();
foreach (DataRow dr in DS.Tables[0].Rows)
{ // проверка наличия