آموزش ساخت تصویر امنیتی ” captcha “

می 13, 2012 توسط : مادیار

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

امیدوارم این مطلب نیز مفید قرار به گیره.

کد امنیتی چیست و به چه دردی می‌خورد؟

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

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

کد امنیتی

کد های امنیتی به شکل‌های زیادی به چشم می‌خورند… و شکل بالا برگرفته شده از سایت http://www.captcha.net می‌باشد..

کد امنیتی به چه درد می‌خورد؟

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

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

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

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

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

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

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

[php]

@session_start();
[/php]

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

[php]

header(‘Content-Type: image/png’);

[/php]

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

[php]

$width = ‘200’;
$height = ‘100’;

$phppro_im = imagecreatetruecolor($width, $height);

[/php]

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

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

[php]

$phppr_text_color = imagecolorallocate($phppro_im, 00, 00, 00);
$phpro_background = imagecolorallocate($phppro_im, 86, 72, 63);
imagefilledrectangle($phppro_im, 0, 0, 1000, 129, $phpro_background);

[/php]

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

[php]

$phppr_int = rand(19000000, 10900000);

[/php]

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

[php]

$phppro_value = $phppro_int;
$_SESSION[‘phpro-num’] = $phppro_value;

[/php]

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

[php]

$font = ‘Age.otf’;
[/php]

و قدم های آخر

[php]
// تعين مکان ها
$top = rand(10,-15);
$right  = rand(0, 24);
$size  = rand(15, 20);
// ايجاد متن
imagettftext($phppro_im, $size, $top, $right, 42, $phppr_text_color, $font, $phppro_int);
// ساخت تصوير و اتمام
imagepng($phppro_im);
// حذف کردن فايل
imagedestroy($phppro_im);

[/php]

استفاده :

[html]
<form action="?register" method="post">

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

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

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

</form>

[/html]

 

[php]
if ( $_POST[‘captcha’] ) {

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

{ echo ‘sahih; }

else{echo ‘ ghalat ‘}

&nbsp;

[/php]

دانلود فایل کامل

Captcha Learn

منبع : PHPro

دوستان ببخشید یکم عجله داشتم.
اگر مفهوم رو نرسوندوم بگید حتما جواب میدم.
هر مشکلی بود و سؤال من در خدمتم با تشکر از شما…
مادیار

zani
می 13, 2012 @ 11:18 ب.ظ

vaghean mamnon khili ali bod

پاسخ
جولای 1, 2012 @ 6:27 ب.ظ

عالی بود

پاسخ
محمد
سپتامبر 15, 2012 @ 6:12 ق.ظ

کليه مطالب سايت عالي است

پاسخ
ehsan
نوامبر 27, 2012 @ 10:43 ق.ظ

با سلام و خسته نباشید من کارایی رو که گفتید انجام دادم ولی به من کدو نشون نمیده لطفا راهنماییم کنید

پاسخ
    سعید
    ژوئن 27, 2013 @ 4:31 ق.ظ

    سلام.
    آیا کتاب خانه GD فعال هست؟

    پاسخ
ehsan
نوامبر 27, 2012 @ 10:43 ق.ظ

در ضمن من با زمپ کار میکنم و GD رو هم چک کردم فعال بود

پاسخ
    سعید
    ژوئن 27, 2013 @ 4:32 ق.ظ

    شما کد رو Copy & Paste کنید . و با کد خودتون مقایسه کنید.

    موفق باشید

    پاسخ
sahar
ژانویه 27, 2013 @ 12:12 ب.ظ

سلام
من هم نتونستم کد رو ایجاد کنم
با زمپ کار می کنم و gd هم فعال بود…

پاسخ
saeid
می 30, 2013 @ 1:32 ب.ظ

اموزش هاتون بد نیست از اینکه دارید علمتون رو در اختیار دیگران میگذارید

منها دوست من توضیحات یک خطی برای اون کدها کافی نیست

مخصوصا وقتی که همه رو سرهم کنیم وبعدش هم کار نکنه

بهترین روش برای اموزش درست کردن فیلم اموزشیه و اگر مقدور نیست
لطفا توضیحات بیشتری بگذراید تا خیلی راحت تر وقابل فهم تر باشه

پاسخ
    سعید
    ژوئن 27, 2013 @ 4:37 ق.ظ

    اتفاقاً حرف شما کاملاً درست هستش .
    هر یک از کد های که در آموزش ها استفاده میشن شاید توضیح دادن بعضی هاشون به چند خط هم برسه! و 100% چیزی که اینجا قرار یاد بگیریم معرفی توابع و طرز استفاده از آنها هست.
    درضمن جا داره بگم به شدت دلم میخواست که وقتشو داشتم . و تک تک توابع استفاده شده را توضیح بدم . اما از بخت بد ما ! همانطور که میبینید همین آموزش هم با عجله نوشته شده و فقط جنبه آموزش روش کار داره نه معرفی توابع.

    موفق باشید

    پاسخ
saeid
می 30, 2013 @ 1:35 ب.ظ

دیدگاه تکراری دیگه چه صیغه ایه م س خ ر ه است

پاسخ
web developer
سپتامبر 17, 2014 @ 3:02 ب.ظ

سلام
در کد ها یک اشتباه دارید، یادم نمیاد کدام خط بود.
حرف O در تابع phppro جا افتاده بود.قرار دادم درست شد.
ممنون از این آموزش

پاسخ
آوریل 20, 2016 @ 10:57 ب.ظ

عالیییییییییییییییییییییییی بود ممنون از سایت خوبتون
سایتتون رو به اشتراک میذارم
بازم ممنون

پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


*