معرفی CAPTCHA
CAPTCHA مخفف Completely Automated Public Turing Test To Tell Computers And Humans Apart بوده و به معنی تصدیق این امر که داده دریافتی توسط یک انسان ایجاد شده است.
یک راه حل آسان و قابل فهم ، جهت ساخت تصاویر امنیتی و استفاده از این تکنیک وجود داره . باید تصویری بصورت داینامیک ایجاد کنیم که نشان دهنده متن اتفاقی باشد. کاربر با مشاهده این تصویر ، متن درون آن را وارد کرده و امکان ارسال فرم برای او فراهم می شود. در واقع تا زمانی که متن صحیح وارد نشود فرم ارسال نمی شود.
خب برای این کار ما باید یک صفحه ساده aspx ایجاد کنیم و در بخش code behind (فایل aspx.cs ) صفحه وارد میشیم و در Page_Load کد های زیر رو قرار میدیم.
باید این دو فضای نام رو فراخوانی کرد
using System.Drawing;
using System.Text;
کد:
//ایجاد شیء گرافیک و دیگر ملزومات
Bitmap objBMP = new System.Drawing.Bitmap(80, 25);
Graphics objGraphics = System.Drawing.Graphics.FromImage(objBMP);
objGraphics.Clear(Color.DarkBlue);
objGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
//تنظیم فونت نوشته روی عکس
Font objFont = new Font("Viner Hand ITC", 13, FontStyle.Bold);
//ساخت رشته تصادفی ۵ رقمی
string randomStr = "";
Random autoRand = new Random();
randomStr = Convert.ToString(autoRand.Next(12345,99999));
//اضافه کردن متن در جلسه
Session.Add("randomStr", randomStr);
//نوشتن متن
objGraphics.DrawString(randomStr, objFont, Brushes.White, 6, 3);
//تنظیم نوع عکس و برگرداندن آن به عنوان خروجی
Response.ContentType = "image/GIF";
objBMP.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Gif);
//آزاد کردن منابع
objFont.Dispose();
objGraphics.Dispose();
objBMP.Dispose();
الان ما یک page داریم که هر بار یک عدد تصادفی تولید میکنه
کافیه برای استفاده اون از یک asp:Image استفاده کنیم و ImageUrl رو برابر اسم صفحه بگذاریم.
برای بررسی کردن اینکه این کد صحیح وارد شده یا نه در بخش کد دکمه تایید Captcha
کد:
if (TxtCaptcha.Text != "")
{
if ((string)Session["randomStr"] == TxtCaptcha.Text.Trim())
{
//Submit Form
Label1.Text = "Captcha is Correct";
}
else
{
//Show Error - Please Enter Security Code that show in Image
Label1.Text = "Captcha isn't Correct";
}
}
else
{
Label1.Text = "Please Enter the Captcha!";
}
من اینجا از یه lable برای نشون دادن پیغام استفاده کردم.
امیدوارم بدردتون بخوره