میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

ساخت CAPTCHA در php

معمولآ در فرم ها و بخشهایی از اینترنت تصاویری می بینید که در آنها اعداد یا حروف به صورت نا مرتب دیده می شود ، نام این تست ها Captcha است که هدف آن تشخیص این است که کاربر انسان است یا رایانه

در واقع کپچا ابزاری برای جلو گیری از ورود هکر ها به سایت می باشد. برای مثال گوگل و سرویس جی میل را در نظر بگیرید که خدمات ایمیل مجانی به کاربران ارائه می دهد و اگر در زمان ساخت ایمیل از کاربران کد کپچا را نگیرد یک کاربر با ساخت یک برنامه هک کامپیوتری میلیونها ایمیل می تواند بسازد که این هم برای آن وب سایت مضر است هم برای کاربرانی که از سرویس آن وب سایت استفاده می کنند.

اولین بار این تست توسط آلن ترنینگ ساخته شد. هدف ترنینگ از ساخت این تست این بود که بفهمد آیا گجت ها هم مانند انسان فکر می کنند. در ابتدا این تست به شکل یک بازی تقلیدی انجام می شد که به مرور زمان پیشرفت و به شکل کنونی درآمد. هدف از ساخت کپچا این است که کاربر به راحتی این تست را انجام دهد و کامپیوتر به تنهایی نتواند از سد آن بگذرد. همان گونه که دیده اید این حروف یا اعداد از اصول خواصی پیروی نمی کنند زیرا اگه آنها یک مدل واحد داشتند طولی نمی کشید که هکرها برنامه ای برای گذشتن از این سد نیز پیدا می کردند.

به تازگی در کنار کپچا ها گزینه صوتی نیز جود دارد که با کلیک روی آن صدای همان حروف را می توانید بشنوید البته با مقداری صدای پس زمینه ، این صدای زمینه برای این است که برنامه ها و اپلیکیشنها نتوانند حروف را تشخیص دهند. البته به تازگی کپچاها به شکلهای مختلفی مانند ترجمه یا معادله ساده ریاضی نیز دیده می شود که تمام آنها یک هدف و آن هم تشخیص انسان از ماشین است را دنبال می کنند.


ساخت کد کپچا

یک فایل captcha.php ایجاد و داخل بلاک php تابع session_start() را فراخوانی می کنیم.بعد با تابع rand() یک مقدار عدید ایجاد و داخل متغییر سئشن ذخیره میکنیم .

 

session_start();
header("content-type:image/png");
$word='';
$letters='1234567890abqwertyuiopasdfghjklzxcvbnm0123456789';
$len=strlen($letters);
for($i=0;$i<5;$i++)
{
$letter=$letters[rand(0,$len-1)];
$word.=$letter;
}
$_SESSION['Captcha_string']=$word;
$dir='font/';
$image=imagecreate(265,70);
$font="A.otf";
imagecolorallocate($image,220,220,220);
$text_color=imagecolorallocate($image,0,0,0);
imagettftext($image,60,0,35,37,$text_color,$dir.$font,$_SESSION['Captcha_string']);

imagepng($image);

 

در قدم اول بعد از ساخت فایل captcha.php سیشن را صدا میزنیم چون سیشن باید قبل از هر کد و تگ html صدا زده بشه  تا برنامه خطایی نده

در قدم دوم چون قراره خروجی این فایل از نوع تصویر باشه پس ما اومدیم با تنظیم هدر خروجی فایل رو گذاشتیم روی تصویر png،

در مرحله بعد یک مقدار رندوم با استفاده از از کارکترهای متغیر letters با طول ۴ کاراکتر ایجاد و در متغیر word ریخته و متغیر word را هم سیشن می کنیم که بعدا در بررسی کد کیچا لازم داریم

خوب حالا با متد imagecreate و با دادن طول و عرض بهش یه تصویر می‌سازیم و اونو توی متغییر image قرار میدیم،

بعدشم با متد imagecolorallocate تصویر مون رو با رنگ خاکستری پر میکنیم(اون مقادیر عددی به صورت RGB هستن)

خوب حالا برای رنگ نوشته مون هم با همون متد یه  رنگ مشکی میگیریم و توی متغییر text_color قرار میدیم،حالا میخوایم با متد imagettftext متن کد رو روی تصویرمون بنویسیم.

خوب آخر کار هم با دستور imagejpeg که متغییر تصویر رو به عنوان ورودی میگیره،تصویر خودمون رو تولید میکنیم.


کد Html

برای نمایش کپچا از تگ img و قرار دادن مقدار captcha.php در مشخصه src ساخت CAPTCHA در phpمی کنیم.

 

 

<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 را داخل شرطمان بر میگردانیم

 

<?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 نیز برای شما مفید واقع شده باشد .برای مطالعه پست‌ها بیشتر ، ما را در مدرسه کدنویسی تلگرام  و یا در تی جوان اینستاگرام دنبال کنید.

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

 

ارسال دیدگاه

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

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟