کپچا یک قابلیت امنیتی و روند ارزیابی است که برای جلوگیری از برخی حملههای خرابکارانهٔ رباتهای اینترنتی بهکار میرود. در واقع با captcha می توان مشخص کرد که مراجعه کنندگان به یک وبگاه و یا سایر خدمات آنلاین انسان هستند یا کامپیوتر. بدین منظور برنامهٔ کپچا آزمونهایی را تولید میکند که تنها انسانها قادر به پاسخگویی به آنها باشند. چون کامپیوترها و نرمافزارهای فعلی احتمالاً نمیتوانند پاسخ درستی به این آزمون بدهند، هر کاربری که آنرا درست حل کند، انسان فرض میشود. کپچا می تواند یک تصویر شامل متن ، یک متن ساده ، یک سوال ریاضی و … باشد . ما در این آموزش قصد داریم تا برای وب سایت خود یک کپچا ایجاد کنیم .
برای این کار از زبان برنامه نویسی php کمک می گیریم. ابتدا یک متن تصادفی ایجاد می کنیم . این متن حاوی حرف و عدد می باشد .
$num = substr(str_shuffle(str_repeat(“0123456789abcdefghijklmnopqrstuvwxyz”, 5)), 0, 5); // تولید یک متن تصادفی
سپس یک تصویر در اندازه ۵۰×۱۳۵ به کمک php می سازیم . پس از آن به کمک تابع imagecolorallocate یک رنگ ایجاد می کنیم .
به کمک تابع imagestring می توان یک متن تولید کرد و متن را به تصویر ایجاد شده چسباند . پارامتر اول آن تصویر ساخته شده ، پارامتر دوم آن فونت متن می باشد و اگر می خواهید از فونت پیش فرض استفاده کنید کافی است فقط اندازه فونت را که از بین اعداد یک تا پنج می باشد قرار دهید ، پارامتر سوم و چهارم بیانگر نقاط شروع نوشته یا همان نقاط x,y در صفحه می باشند . پارامتر بعدی متن تولید شده و پارمتر بعدی رنگ نوشته می باشد . تا این جای کار تصویر و متن آماده است .
حال می خواهیم بر روی نوشته های ما خطی نیز قرار بگیرد . برای این کار از تابع imageline کمک می گیریم .پارامتر اول تصویر مورد نظر بوده و پارامتر دوم و سوم این تابع نشان دهنده نقاط x,y خط و پارامترهای چهارم و پنجم بیانگر نقاط x,y پایان خط می باشند . پارامتر ششم هم رنگ خط می باشد .
حال به کمک تابع imagejpeg تصویر ایجاد می شود و آماده نمایش است . پارامتر اول این تابع تصویر مورد نظر ، پارمتر دوم آن محلی برای ذخیره تصویر که می توانید آن را null قرار دهید و پارامتر آخری بیانگر کیفیت تصویر می باشد .
پس از این مراحل کافی است تصویر ایجاد شده را print_r یا نمایش دهیم .
در آخر تصویر ایجاد شده را حذف می کنیم .
$im = imagecreate(150,30); // ساخت یک تصویر
$background_color = imagecolorallocate($im, 200,100,5); // اختصاص رنگی برای پس زمینه تصویر
$color = imagecolorallocate($im, 200, 200, 50);
imagestring( $im,5,49,5,$num,$color ); // ساخت نوشته
imageline($im, 50, 15, 100, 10, $color); // ساخت خط
ob_start();
imagejpeg($im,null,200);
printf(“<img src=’data:image/jpeg;base64,%s’ />”,
base64_encode(ob_get_clean()));
imagedestroy($im);
برای استفاده از کپچای ایجاد شده فقط کافی است آن متن تولید شده در Session تنظیم کنید و در هنگام ورود به سایت یا ارسال دیدگاه آن session تنظیم شده را بررسی کنید .
I’m truly enjoying the design and layout of your blog. It’s a very easy on the eyes which makes it much more enjoyable for me to come here and visit more often. Did
you hire out a developer to create your theme? Fantastic work!