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

اردیبهشت ۲۴, ۱۳۹۱ توسط : مادیار

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

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

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

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

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

کد امنیتی

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

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

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

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

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

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

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

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

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


@session_start();

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


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

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


$width = '200';
$height = '100';

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

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

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


$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);

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


$phppr_int = rand(19000000, 10900000);

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


$phppro_value = $phppro_int;
$_SESSION['phpro-num'] = $phppro_value;

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


$font = 'Age.otf';

و قدم های آخر

// تعین مکان ها
$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);

استفاده :

<form action="?register" method="post">

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

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

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

</form>

 

if ( $_POST['captcha'] ) {

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

{ echo 'sahih; }

else{echo ' ghalat '}

&nbsp;

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

Captcha Learn

منبع : PHPro

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

بازدید : ۱۰۵۴۵

zani
اردیبهشت ۲۴, ۱۳۹۱ @ ۱۱:۱۸ ب.ظ

vaghean mamnon khili ali bod

پاسخ دادن
تیر ۱۱, ۱۳۹۱ @ ۶:۲۷ ب.ظ

عالی بود

پاسخ دادن
محمد
شهریور ۲۵, ۱۳۹۱ @ ۶:۱۲ ق.ظ

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

پاسخ دادن
ehsan
آذر ۷, ۱۳۹۱ @ ۱۰:۴۳ ق.ظ

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

پاسخ دادن
    سعید
    تیر ۶, ۱۳۹۲ @ ۴:۳۱ ق.ظ

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

    پاسخ دادن
ehsan
آذر ۷, ۱۳۹۱ @ ۱۰:۴۳ ق.ظ

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

پاسخ دادن
    سعید
    تیر ۶, ۱۳۹۲ @ ۴:۳۲ ق.ظ

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

    موفق باشید

    پاسخ دادن
sahar
بهمن ۸, ۱۳۹۱ @ ۱۲:۱۲ ب.ظ

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

پاسخ دادن
saeid
خرداد ۹, ۱۳۹۲ @ ۱:۳۲ ب.ظ

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

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

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

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

پاسخ دادن
    سعید
    تیر ۶, ۱۳۹۲ @ ۴:۳۷ ق.ظ

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

    موفق باشید

    پاسخ دادن
saeid
خرداد ۹, ۱۳۹۲ @ ۱:۳۵ ب.ظ

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

پاسخ دادن
web developer
شهریور ۲۶, ۱۳۹۳ @ ۳:۰۲ ب.ظ

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

پاسخ دادن
اردیبهشت ۱, ۱۳۹۵ @ ۱۰:۵۷ ب.ظ

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

پاسخ دادن

پاسخ دهید

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


*