Практическая работа «Разработка программы регистрации пользователя с проверкой методом captcha»

2
0
Материал опубликован 27 February 2023



ТЕМА: Разработка программы регистрации пользователя с проверкой методом captcha

Цель урока: научить применять полученные ранее знания по теме «Элементы управления при создании приложения на языке c#.

ТИП УРОКА: практическая работа

ОБОРУДОВАНИЕ К УРОКУ: Персональный компьютер, мультимедийный проектор, интерактивная доска.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ: ОС Windows 10, VisualStudio 2022


Ход урока


1. Организационный этап: тема урока, постановка целей и мотивация учебно-познавательной деятельности.

2. Актуализация опорных знаний

Слово Capcha - это английская аббревиатура выражения "Completely Automated Public Turing test to tell Computers and Humans Apart", которое можно перевести, как "полностью автоматический публичный тест Тьюринга для разли­чия компьютеров и людей". Другими словами, это компьютерное тестирование, используемое в каком-либо пользовательском интерфейсе для того, чтобы опреде­лить, кем является пользователь системы: человеком или компьютером.

Процедура капча чаще всего используется при необходимости предотвратить вредоносное использование интернет-сервисов ботами (программами-роботами).

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

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

3. Постановка задачи

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


Прстановка задачи – создать форму регистрации, в которой необходимо ввести имя пользователя, логин и пароль.

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

t1677450553aa.png

Рис 1.- Форма регистрации


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

t1677450553ab.png

t1677450553ac.png

Рис. 2 – Сообщения при регистрации

Рис. 3- Успешная регистрация

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

Решение задачи.

Для начала нужно сформировать каталог с рисунками капчи, например Res, и разместить его в каталоге проекта, причем имя каждого файла должно совпадать с текстом, отображенным в файле (captio.png и т.д.).

t1677450553ad.png

Рис. 4 – Каталог Res



Разработка интерфейса приложения

Разработать интерфейс формы регистрации при помощи элементов TextBox, Label. Все элементы должны быть сгруппированы при помощи элемента Panel1.Поверх разработанной формы регистрации наложить элемент Panel3, где будут отображаться результаты проверки капчи.

t1677450553ae.pngt1677450553af.gift1677450553ag.gif

t1677450553ah.pngt1677450553ai.gift1677450553aj.gift1677450553ak.gif



Разработка кода программы



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

Так как мы знаем что все картинки с капчами хранятся в папке Res и имя каждого файла это и есть имя текста капчи, то перед нами становится задача выделения из имени файла его части (например из tibra.png нужно выделить слово tibra).

- Определяем все имена файлов папке res и заносим их в массив pathFiles.

t1677450553al.png

- Затем случайным образом выбираем файл с капчей

t1677450553am.png

- Определяем текст из названия файла

t1677450553an.png

- Отображаем рисунок на форме и возвращаем текст с капчи

//отображение капчи

picCaptcha.Image = yourPic;

textCaptcha.Text = "";

password.Text = "";


//возвращаем текст с капчи

return yourText;

Полный текст функции:



t1677450553ao.png




Разработка функции проверки правильности заполнения полей.

Если данные, введенные в поля пользователя, логина и пароля занимают меньше 4 символов, поле выделяется красным цветом и выдается сообщение об ошибке.


t1677450553ap.png

Обработка события нажатия на кнопку Регистрация и Осуществление проверки правильности введения текста капчи.

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

t1677450553aq.png

Полный текст программы

using System;

using System.Drawing;

using System.Windows.Forms;

using System.IO;


namespace Captcha

{

public partial class Form1 : Form

{

string CreatedCaptcha; //здесь хранится текст с капчи

public string CreateCaptcha()//создание капчи

{

//массив путей файлов картинок

string[] pathFiles = Directory.GetFiles("../../Res/", "*.png", SearchOption.AllDirectories);


//выбор рандом капчи

Random r = new Random();

int id = r.Next(0, pathFiles.Length);

Bitmap yourPic = new Bitmap(pathFiles[id]);


//нахождение текста капчи(для проверки)

FileInfo yourFile = new FileInfo(pathFiles[id]);

string yourText = yourFile.Name;

yourText = yourText.Replace(".png", "");


//отображение капчи

picCaptcha.Image = yourPic;

textCaptcha.Text = "";

password.Text = "";


//возвращаем текст с капчи

return yourText;

}

public bool IsText(string name, string log, string pass)//проверка на то, чтоб поля не были пустыми

{

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

//и обновляем капчу

if (name.Length < 4)

{

CreatedCaptcha=CreateCaptcha();

username.BackColor = Color.Red;

MessageBox.Show("Имя пользователя должно быть длиннее 4х символов");

}

else if (log.Length < 4)

{

CreatedCaptcha = CreateCaptcha();

login.BackColor = Color.Red;

MessageBox.Show("Логин должен быть длиннее 4х символов");

}

else if (pass.Length < 4)

{

CreatedCaptcha = CreateCaptcha();

password.BackColor = Color.Red;

MessageBox.Show("Пароль должен быть длиннее 4х символов");

}

else

return true;

return false;

}


public Form1()//конструктор формы: инициализация

{

InitializeComponent();

panel3.Visible = false;


//генерируем капчу

CreatedCaptcha=CreateCaptcha();

}


private void button1_Click(object sender, EventArgs e)//регистрация

{

//проверка на ввод данных

if (IsText(username.Text, login.Text, password.Text) ==true)

{

//проверяем капчу

if (textCaptcha.Text.Equals(CreatedCaptcha) == false)

{

result.Text = "Капча введена неправильно!";

}

else

{

button4.Visible = false;

result.Text = "Вы успешно зарегистрировались!";

}

panel1.Visible = false;

panel3.Visible = true;

}

}


private void button3_Click(object sender, EventArgs e)//завершение

{

Application.Exit();

}


private void button4_Click(object sender, EventArgs e)//вернуться

{

CreatedCaptcha=CreateCaptcha();

panel1.Visible = true;

panel3.Visible = false;

}


//изменение текста пользователя

private void username_TextChanged(object sender, EventArgs e)

{

username.BackColor = Color.White;

}

//изменение логина

private void login_TextChanged(object sender, EventArgs e)

{

login.BackColor = Color.White;

}


//изменение пароля

private void password_TextChanged(object sender, EventArgs e)

{

password.BackColor = Color.White;

}

}

}



Подведение итогов урока и рефлексия

в формате Microsoft Word (.doc / .docx)
Комментарии
Комментариев пока нет.