ایجاد Captcha برای فرم های ASP.Net

جمعه 27 شهریور 1394

در این مقاله آموزش می دهیم که چگونه برای فرم های ASP.Net می توان captcha ایجاد کرد.برای جلوگیری از تولید اسپم توسط کاربران، از captcha استفاده می کنیم. راه های زیادی برای تولید captcha در ASP.Net وجود دارد. ما راه های مختلفی را امتحان کرده و یک راه قابل استفاده در پروژه های مختلف را معرفی می کنیم.

ایجاد Captcha برای فرم های ASP.Net

Captcha چیست؟

Captcha کوتاه شده عبارت "Completely Automated Public Turing test to tell Computers and Humans Apart" می باشد، به این معنا: تست تورینگ کاملا اتوماتیک که انسان و کامپیوتر را از هم تفکیک می کند. این Captcha ثابت می کند که کاربر ما، انسان است.

در این مثال، ما فایل aspx ای داریم که خروجی captcha را تولید می کند. این صفحه خروجی یک عکس می باشد. برای استفاده از این فایل aspx، می توانیم این صفحه را به عنوان منبع (Source) یک تگ Image قرار دهیم. با هر reload صفحه، عکس Captcha با عکس جدیدی جایگزین می شود.

برحسب نیاز شما، captcha می تواند شامل حروف بزرگ و کوچک، اعداد و کاراکترهای خاص باشد. حال به جزییات پیاده سازی آن می پردازیم:

پیاده سازی:

Random.cs یک کلاس مهم است که عکس های تصادفی موردنیاز را تولید می کند. این کلاس سازنده ای (Constructor) دارد که متن تصویر، عرض و ارتفاع آن را دریافت می کند.

دو متد دیگر نیز در این کلاس استفاده شده است:

- جهت تنظیم ابعاد

- جهت تولید عکس

در صفحه Captcha.aspx رشته تصادفی ایجاد می شود.

    Variables are:  
    Random r = new Random();  
    string s = ""; 

حلقه ای به اندازه طول موردنیاز:

    for (int j = 0; j < 5; j++)  
    {  
       //Code for creation  
    }  

با توجه به معیار مشخص شده، تابع موردنیاز متفاوت می باشد.

حروف کوچک:

    ch = r.Next(0, 26);  
    s = s + (char)('a' + ch); 

حروف بزرگ:

ch = r.Next(0, 26);  
s = s + (char)('A' + ch); 

اعداد:

    ch = r.Next(0, 9);  
    s = s + (char)('1' + ch);

بعد از ایجاد رشته، مقدار آن به Session یا Cookie اضافه می شود. سپس این مقدار با عرض و ارتفاع موردنیاز به سازنده کلاس تصویر تصادفی ارسال می شود. Response صفحه یک عکس خواهد بود.

// Change the response headers to output a PNG image.
this.Response.Clear();
this.Response.ContentType = "image/png";

تصویر captcha با اشاره به آدرس تصویر در تگ Image به صفحه اضافه می شود. برای refresh تصویر، تنها با استفاده از یک اسکریپت جاوااسکریپت، آدرس تصویر را rebind می کنیم.

نکته: زمانی که آدرس تصویر به تگ Image متصل (bind) می شود، بعضی از مرورگرها با refresh مشکل پیدا می کنند. برای جلوگیری از آن یک پارامتر query string اضافه می کنیم که می تواند زمان و تاریخ فعلی باشد، بنابراین آدرس تصویر همیشه یکتا خواهد بود و تصویر به روزرسانی می شود.

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید