تصویر CAPTCHA
مقدمه :
شما مطمئناً با این چنین آزمونها زمان باز کردن یک Mail box جدید و یا یک حساب forumمواجه شده اید. این فرم ممکن است شامل تصویر پیچ خورده ای باشد، درست شبیه به همان تصویری که در بالا ملاحظه کرده اید، که در نهایت شما مستلزم هستید که در قسمت text box آن حروف و اعدادی را که می بینید تایپ کنید.
هدف از این ایده جلوگیری از اسپمرها، در استفاده از رباتهای وب در ساختن mail ها ( برای ارسال Spam)، ثبت کردن نظرات و یا ورودی های Guestbook (دفترچه ای که افراد می توانند نام و مشخصات به همراه نظراتشان را در آن قرار دهند) که همراه با پیام های Spam هستند، می باشد. متنی که در داخل تصویر آمده معمولاً بهم ریخته و پیچ خورده است تا OCR یا Optical Character Reader ها نتوانند آن را بخوانند. Hotmail, PayPal, Yahoo و تعداد دیگری از وب سایتها از این روش استفاده می کنند.
این مقاله روش ساخت چنین تصویری را درصفحات وب ASP.net نشان می دهد.
قبل از اینکه از این تکنیک استفاده کنید، باید این مسئله را مد نظر داشته باشید که این روش میتواند چه تأثیراتی بر قابلیتهای وب سایت شما برای افرادی که ناتوانایی جسمی دارند داشته باشد. برای مثال افرادی که نابینا هستند به چه شکل می توانند این اعداد و حروف را تشخیص دهند؟. PayPal سعی کرد که این مشکل را با اضافه کردن لینکی به یک فایل صوتی، که این صوت پخش شده همان ارقام و حروفی هستند که در متن نوشته شده اند، این مشکل را حل کند. پس شخص نابینا می تواند با گوش دادن به این فایل صوتی اعداد و حروف را جایگزین کند.
کدی که در زیر آمده فقط همان روش اول را توضیح می دهد یعنی استفاده از یک تصویر.
استفاده از کدها :
فایلها :
- Default.aspx, Default.aspx.cs : نمونه ای از فرم وب.
- JpegImage.aspx, JpegImage.aspx.cs : صفحه وبی که طراحی شده تا یک تصویر Jpeg را به خروجی بدهد به جای اینکه به HTML بدهد.
اجازه دهید نگاهی به هر جزء و اهدافش بیندازیم :
شئ CaptchaImage یک تصویری می سازد که پارامترهایی برای متنی که می خواهد ارسال شود می فرستد. برای مثال ابعاد و فونت تصویر.
قلب تمام این کدها متد، GenerateImage() می باشد که در زیر آمده است. این متد یک تصویر bitmap با طول و عرض خاصی می سازد. این متد از طریق سازنده CaptchaImage فراخوانی شده، پس تصویر درست زمانی که شما یک مثالی از شئ ساختید، آماده است.
برای ساختن تصویر، ما اول پس زمینه را بوسیله یک برس، هاشور میزنیم( هرچقدر تصویر کثیفتر باشد، تشخیص آن از طریق برنامه OCR سختتر می باشد).
برای ساختن متنی که با تصویر مرتبط باشد، ما اول با یک قلم با سایزی که مبنای آن برطول و عرض تصویر است و با استفاده از متد Graphics.MeasureString() برای پیدا کردن ابعاد نهایی از متن نقاشی شده شروع می کنیم. در صورتی که متن، از ابعاد تصویر تجاوز کند، ما سایز قلم را کم خواهیم کرد و دوباره امتحان می کنیم و به همین ترتیب ادامه می دهیم تا سایز مناسب را پیدا کنیم.



برای تکمیل این خمیده گی، ذرات کوچک به طور تصادفی روی تصویر پراکنده شده است. شما می توانید از حالتهای دیگر آن نیز استفاده کنید ولی فراموش نشود که باید برای انسانها قابل درک باشد. (مثلاً برای کسانی که اختلال بینایی دارند).
Default.aspx
این یک مثال ساده از فرم وب است که تنها شامل چند المان پایه است، برای مثال یک تگ <IMG> برای تصویر، یک Text Box، و یک دکمه ثبت.

کدهای پشتیِ (code behind) Default.aspx به سادگی و به صورت تصادفی متنهایی برای تصویر انتخاب کرده و ارزیابی می کند که آیا این متن توسط کاربر زمانی که فرم به ثبت رسیده وارد شده یا خیر؟ کلید این کار ذخیره کردن رشته در قسمت شئ Session می باشد.


JpegImage.aspx :
در کدهای پشتی، در مرحله اول ما یک شئ CaptchaImage با استفاده از متنی که از شئ session بازگرفته شده، می سازیم. که این یک تصویر bitmap برای ما می سازد.

معرفي سايت مرتبط با اين مقاله
تصاوير زيبا و مرتبط با اين مقاله