ورود به حساب کاربری        عضویت
مشاوره تلفنی    05136615381 - 09155249646 - 05136639567  

۲۲
اردیبهشت

0

ساخت کد امنیتی(کپچا) در php

تقریبا میتوان گفت کمتر کسی هست که با کد کپچا آشنایی نداشته باشد و تابحال ندیده باشند . کدی که اکثرا در تمامی فرم ها در وب سایت ها قرار دارد و شما میبایست با پر کردن آن از الگویی که به شما داده شده است , به وب سایت بفهمانید که روبات های هکر نیستید .

در این اسکریپت اول از همه یک شماره کاملا تصادفی (random) تولید و سپس از خروجی یک عکس می سازیم . اگر کاربر فرم را با مقدار درست کپچا – captcha ارسال کرد ، بقیه مراحل مثل insert کردن داده هاداخل دیتابیس یا ارسال ایمیل و…. انجام میدیم.

قدم اول : ساخت یک صفحه HTML

کد زیر شامل یک ورودی اسم ، ایمیل و کپچا با دکمه submit است . این کد ها را در فایل index.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” />
<input type=”text” name=”captcha” />
<input type=”submit” value=”submit” />
</form>
</body>
</html>

<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 یک مقدار عدید ایجاد و داخل متغییر سئشن ذخیره میکنیم .
session_start();
$captcha_num = rand(1000, 9999);
$_SESSION[‘code’] = $captcha_num;

session_start();
$captcha_num = rand(1000, 9999);
$_SESSION[‘code’] = $captcha_num;

کد بالا فقط اعداد رندوم تولید می کند . اگر قصد دارید که ترکیبی از اعداد و حروف را ایجاد کنید از کد زیر استفاده کنید.
حتما بخوانید آموزش ساخت منو داینامیک در php
session_start();
$captcha_num = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz’;
$captcha_num = substr(str_shuffle($captcha_num), 0, 6);
$_SESSION[“code”] = $captcha_num;

session_start();
$captcha_num = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz’;
$captcha_num = substr(str_shuffle($captcha_num), , 6);
$_SESSION[“code”] = $captcha_num;

از هرکدام از کد php بالا بنابر نیاز خود استفاده کنید.

برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود

تعریف اندازه تصویر کپچا و همچنین اندازه فونت
$font_size = 30;
$img_width = 70;
$img_height = 40;

$font_size = 30;
$img_width = 70;
$img_height = 40;

تعریف content type فایل captcha.php به صورت عکس
header(‘Content-type: image/jpeg’);

header(‘Content-type: image/jpeg’);

ساخت کپچا در php با اندازه و رنگ پس زمینه دلخواه
$image = imagecreate($img_width, $img_height); // create background image with dimensions
imagecolorallocate($image, 255, 255, 255); // set background color

$image = imagecreate($img_width, $img_height); // create background image with dimensions
imagecolorallocate($image, 255, 255, 255); // set background color

تعیین رنگ متن کپچا به صورت rgb
$text_color = imagecolorallocate($image, 0, 0, 0); // set captcha text color

$text_color = imagecolorallocate($image, , , ); // set captcha text color

ساخت کپچا از رشته تولید شده و گرفتن خروجی عکس در مروگر با فونت دلخواه
imagettftext($image, $font_size, 0, 15, 30, $text_color, ‘font.ttf’, $captcha_num);
imagejpeg($image);

imagettftext($image, $font_size, , 15, 30, $text_color, ‘font.ttf’, $captcha_num);
imagejpeg($image);
قدم سوم : نمایش کد امنیتی (captcha) در فرم

در قدم اول آموزشمان ، ما فیلد های مربوط به کپچا را اضافه کردیم . برای نمایش کپچا از تگ img و قرار دادن مقدار captcha.php در مشخصه src استفاده می کنیم.
<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>

<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
<?php
session_start();
print_r($_POST);
if(isset($_POST) & !empty($_POST)){
if($_POST[‘captcha’] == $_SESSION[‘code’]){
echo “correct captcha”;
}else{
echo “Invalid captcha”;
}
}
?>

<?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 و در صفحه نظرات برای پیشگیری از اسپم شدن از این مکانیزم استفاده کنید/

اگر مشکلی در پیاده سازی این کد ها در پروژه هاتون داشتید لطفا از قسمت نظرات با ما در ارسال کنید . سریعا پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید