تقریبا میتوان گفت کمتر کسی هست که با کد کپچا آشنایی نداشته باشد و تابحال ندیده باشند.
کدی که اکثرا در تمامی فرم ها در وب سایت ها قرار دارد و شما میبایست با پر کردن آن از الگویی که به شما داده شده است , به وب سایت بفهمانید که روبات های هکر نیستید .
در این اسکریپت اول از همه یک شماره کاملا تصادفی (random) تولید و سپس از خروجی یک عکس می سازیم . اگر کاربر فرم را با مقدار درست کپچا – captcha ارسال کرد ، بقیه مراحل مثل insert کردن داده ها داخل دیتابیس یا ارسال ایمیل و…. انجام میدیم
قدم اول : ساخت یک صفحه HTML
کد زیر شامل یک ورودی اسم ، ایمیل و کپچا با دکمه submit است . این کد ها را در فایل index.php ذخیره میکنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<html> <head> <title>Simple CAPTCHA Script in PHP</title> </head> <body> <form action="" method="post"> <input type="text" name="name" /> <input type="email" name="email" /> <input type="text" name="captcha" /> <input type="submit" value="submit" /> </form> </body> </html> |
قدم دوم : ساخت کد کپچا
یک فایل captcha.php ایجاد و داخل بلاک php تابع session_start()
را فراخوانی می کنیم.بعد با تابع rand()
یک مقدار عدید ایجاد و داخل متغییر سئشن ذخیره میکنیم .
1 2 3 |
session_start(); $captcha_num = rand(1000, 9999); $_SESSION['code'] = $captcha_num; |
کد بالا فقط اعداد رندوم تولید می کند . اگر قصد دارید که ترکیبی از اعداد و حروف را ایجاد کنید از کد زیر استفاده کنید.
1 2 3 4 |
session_start(); $captcha_num = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz'; $captcha_num = substr(str_shuffle($captcha_num), 0, 6); $_SESSION["code"] = $captcha_num; |
از هرکدام از کد php بالا بنابر نیاز خود استفاده کنید.
تعریف اندازه تصویر کپچا و همچنین اندازه فونت
1 2 3 |
$font_size = 30; $img_width = 70; $img_height = 40; |
تعریف content type فایل captcha.php به صورت عکس
1 |
header('Content-type: image/jpeg'); |
ساخت کپچا در php با اندازه و رنگ پس زمینه دلخواه
1 2 |
$image = imagecreate($img_width, $img_height); // create background image with dimensions imagecolorallocate($image, 255, 255, 255); // set background color |
تعیین رنگ متن کپچا به صورت rgb
1 |
$text_color = imagecolorallocate($image, 0, 0, 0); // set captcha text color |
ساخت کپچا از رشته تولید شده و گرفتن خروجی عکس در مروگر با فونت دلخواه
1 2 |
imagettftext($image, $font_size, 0, 15, 30, $text_color, 'font.ttf', $captcha_num); imagejpeg($image); |
قدم سوم : نمایش کد امنیتی (captcha) در فرم
در قدم اول آموزشمان ، ما فیلد های مربوط به کپچا را اضافه کردیم . برای نمایش کپچا از تگ img و قرار دادن مقدار captcha.php در مشخصه src
استفاده می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<html> <head> <title>Simple CAPTCHA Script in PHP</title> </head> <body> <form action="" method="post"> <input type="text" name="name" /> <input type="email" name="email" /> <img src="captcha.php" /><input type="text" name="captcha" /> <input type="submit" value="submit" /> </form> </body> </html> |
قدم چهارم : بررسی کپچا بعد از ارسال فرم
حالا باید کد کپچا ارسال شده را چک کنیم . اگر مقدار ارسال شده با مقداری که در سئشن ذخیره شده یکسان بود مقدار true
و اگر اشتباه بود مقدار false
را داخل شرطمان بر میگردانیم
1 2 3 4 5 6 7 8 9 10 11 |
<?php session_start(); print_r($_POST); if(isset($_POST) & !empty($_POST)){ if($_POST['captcha'] == $_SESSION['code']){ echo "correct captcha"; }else{ echo "Invalid captcha"; } } ?> |
امیدوارم از آمورش ساخت کپچا در php (کد امنیتی) استفاده برده باشید و در پروژه هایی که می نویسید بخصوص در قسمت صفحات لاگین برای جلوگیری از حملات brute-force و در صفحه نظرات برای پیشگیری از اسپم شدن از این مکانیزم استفاده کنید.
اگر مشکلی در پیاده سازی این کد ها در پروژه هاتون داشتید لطفا از قسمت نظرات با ما در ارسال کنید . سریعا پاسخگوی سوالات شما هستیم .
برای دریافت سورس این پروژه لطفا از باکس دانلود پایین این بخش استفاده کنید .
موفق و پیروز باشید.
عرض ادب
برای فراخانی در وردپرس ، لینک captcha.php و لینک font.ttf رو چطور باید فراخانی کنیم ؟
سلام. داخل فایل functions.php خود قالب میتونید فراخوانی کنید تا بصورت سراسری در همه جای سایت قابل دسترسی و استفاده باشد