انجمن عمومی گسترش فناوری آگو
آموزش ساخت تصویر امنیتی ” captcha “ - نسخه‌ی قابل چاپ

+- انجمن عمومی گسترش فناوری آگو (http://forums.ago.ir)
+-- انجمن: انجمن های عمومی گسترش فناوری آگو (/forumdisplay.php?fid=1)
+--- انجمن: برنامه نویسی (/forumdisplay.php?fid=13)
+--- موضوع: آموزش ساخت تصویر امنیتی ” captcha “ (/showthread.php?tid=2381)



آموزش ساخت تصویر امنیتی ” captcha “ - agotd - 03-03-2014 04:30 PM

سلام خدمت کاربران عزیز phpro.ir
امروز می خام و استون آموزش ساخت کد امنیتی ( CAPTCHA ) رو بزارم…

امیدوارم این مطلب نیز مفید قرار به گیره.
کد امنیتی چیست و به چه دردی می‌خورد؟

شما هم در جستجو و مرور وب سایت ها و موقع ثبت نام و یا ارسال یک فرم با کد های امنیتی روبرو شده‌اید!

یک تصویر از یک کد امنیتی :

[تصویر:  recaptcha-example.gif]

کد های امنیتی به شکل‌های زیادی به چشم می‌خورند… و شکل بالا برگرفته شده از سایت دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
می‌باشد..
کد امنیتی به چه درد می‌خورد؟

زمانی که شما یک فرمی را برای ثبت نام کاربر و یا فرم تماس با ما ایجاد می‌کنید باید اطمینان حاصل کنید که شخصی که داره فرمه شما رو تکمیل می کنه و ارسال می کنه یک انسان باشه و نه یه روبات… روبات‌ها با ثبت نام پشت سرهم در وب سایت شما شاید بتوانند در هر ثانیه چنیدن کاربر و یا چندین فرم را کامل کنند و به سرور شما ارسال کنند.

امیدوارم توضیحاتم قانع کننده باشه..

میریم سراغ طراحی کد امنیتی

موارد مورد نیاز PHP و GD LIB

در صورتی که ازهاست های داخلی ( localhost ) و نرم افزار های ماننده WampServer و EasyPHP استفاده می‌کنید باید به قسمت php.ini بریدو کد : extension=php_gd2.dll; پیدا کنید. اگر با ” ; ” مواجه شدید حذفش کنید …

این کار برای فعال سازی GD می‌باشد…

شروع میکنم برای ایجاد کد امنیتی باید یک session ایجاد کنیم :

کد php:
@session_start(); 

حالا باید محتوای فایل PHP رو به تصویر تغیر بدیم :

کد php:
header('Content-Type: image/png'); 

و حالا یک تصویر ایجاد میکنیم همراه با سایز دلخواه :

کد php:
$width '200';
$height '100';

$phppro_im imagecreatetruecolor($width$height); 

حالا مغادیر رنگ ها رو مشخصی میکنیم :

خط آخر سازنده رنگ پس زمینه هستش

کد php:
$phppr_text_color imagecolorallocate($phppro_im000000);
$phpro_background imagecolorallocate($phppro_im867263);
imagefilledrectangle($phppro_im001000129$phpro_background); 

حالا باید یک عدد شانسی ( RAND ) بسازیم

کد php:
$phppr_int rand(1900000010900000); 

ساخت session برای کد تعین شده :

کد php:
$phppro_value $phppro_int;
$_SESSION['phpro-num'] = $phppro_value

انتخابه فونت :

کد php:
$font 'Age.otf'

و قدم های آخر

کد php:
// تعین مکان ها
$top rand(10,-15);
$right  rand(024);
$size  rand(1520);
// ایجاد متن
imagettftext($phppro_im$size$top$right42$phppr_text_color$font$phppro_int);
// ساخت تصویر و اتمام
imagepng($phppro_im);
// حذف کردن فایل
imagedestroy($phppro_im); 

استفاده :

کد php:
<form action="?register" method="post">

<
img src="(address file php )">

<
input type="text" name="captcha" />

<
input type="submit" value="click">

</
form


کد php:
if ( $_POST['captcha'] ) {

 if ( 
$_POST['captcha'] == $_SESSION['phpro-num'])

{ echo 
'sahih; }

else{echo ' 
ghalat '}

&nbsp;