با سلام و خسته نباشید به همراهان همیشگی دهکده وردپرس. در این آموزش قصد داریم نحوه ساخت یک کد امنیتی Captcha در php را برای شما کاربران گرامی دهکده وردپرس آموزش دهیم .همراه ما باشید.
قبل از هر چیزی باید بدانیم کد کپچا (Captcha) چیست و چه کاربردی دارد و در چه مواقعی استفاده میشود؟؟ در ادامه به این مبحث میپردازیم.
ساخت کد امنیتی Captcha با استفاده از php
کپچا چیست؟
در فرم های اینترنتی تصاویری را می بینیم که داخل آن اعداد و حروف به صورت نامرتب دیده می شود که نوعی تست است. نام این تستها Completely Automated Public Turing test to tell Computers and Humans Apart) CAPTCHA) است که هدف از طراحی آن، این است که مشخص شود كاربر در حقیقت انسان است يا رایانه . احتمالاً این نوع از تستها را در بسیاری از سایتها مشاهده کردهاید. متداولترین مدل این تستها شامل تعدادی حروف بههم ریخته و درهم میشود. به همین منظور لازم است شما حروف صحیح شکل مقابلتان را تشخیص دهيد و در قسمت مربوط به آن تایپ کنید. چنانچه حروف وارد شده دقیقاً مشابه همان حروف بود، شما به آسانی از عهده انجام این تست برآمدهاید.
کاربرد کپچا
کپچا کاربرد زیادی دارد ولی بیشتر برای افزایش امنیت استفاده می شود :
جلوگیری از ارسال نظرات اسپم در سایت و وبلاگ
بیش تر آن هایی که وب سایت دارند با استفاده از اسکریپت های خودکار اقدام به انتشار نظرات اسپم می کنند ، با قرار دادن کپچا در قسمت نظرات شما می توانید از ارسال نظرات اسپم در سایت خود جلوگیری کنید .
در عضویت سایت
برای جلوگیری از ثبت نام ربات ها در سایت از کپچا استفاده می شود ، چون ربات های اینترنتی می توانند در عرض چند ساعت چندین اکانت ایجاد کنند . هم چنین در گوگل و یاهو برای جلوگیری از ایجاد ایمیل توسط ربات ها از کپچا استفاده می شود تا فقط انسان ها قادر به ثبت نام نهایی فرم باشند .
در هنگام ورود به سایت
اگر هکری با هر راهی نام کاربری شما را به دست آورد و با آزمون و خطا می تواند پسورد شما را نیز برای ورود به سایت به دست آورد . برای جلوگیری از این کار از کپچا استفاده می کنیم که اگر مثلاً رمز عبور یا نام کاربری بیش از 5 با زده شد IP کاربر را مسدود کند .
ساخت کد امنیتی Captcha با استفاده از php
مرحله 1 : ساخت یک صفحه HTML
کد زیر شامل یک ورودی اسم ، ایمیل و کپچا با دکمه submit است . این کد ها را در فایل index.php ذخیره میکنیم.
<form action="" method="post"> <input name="name" type="text" /> <input name="email" type="email" /> <img src="captcha.php" /><input name="captcha" type="text" /> <input type="submit" value="submit" /> </form>
مرحله 2 : جهت تولید تصویر کپچا :
یک فایل captcha.php ایجاد و داخل بلاک php تابع session_start() را فراخوانی می کنیم.بعد با تابع rand یک مقدار جدید ایجاد و داخل متغییر session ذخیره میکنیم .
session_start(); $captcha_num = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz'; $captcha_num = substr(str_shuffle($captcha_num), 0, 6); $_SESSION["code"] = $captcha_num;
تعریف اندازه تصویر کپچا و همچنین اندازه فونت
$font_size = 30; $img_width = 70; $img_height = 40;
تعریف content type فایل captcha.php به صورت عکس
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
تعیین رنگ متن کپچا به صورت rgb
$text_color = imagecolorallocate($image, 0, 0, 0); // set captcha text color
ساخت کپچا از رشته تولید شده و گرفتن خروجی عکس در مروگر با فونت دلخواه
imagettftext($image, $font_size, 0, 15, 30, $text_color, 'font.ttf', $captcha_num); imagejpeg($image);
مرحله 3 : نمایش کد امنیتی (captcha) در فرم
فیلد های مربوط به کپچا را اضافه کردیم . برای نمایش کپچا از تگ img و قرار دادن مقدار captcha.php در مشخصه src استفاده می کنیم.
<form action="" method="post"> <input name="name" type="text" /> <input name="email" type="email" /> <img src="captcha.php" /><input name="captcha" type="text" /> <input type="submit" value="submit" /> </form>
مرحله 4: بررسی کپچا بعد از ارسال فرم
حالا باید کد کپچا ارسال شده را چک کنیم . اگر مقدار ارسال شده با مقداری که در session ذخیره شده یکسان بود مقدار true و اگر اشتباه بود مقدار false را داخل شرطمان بر میگردانیم
session_start(); if(isset($_POST) & !empty($_POST)){ if($_POST['captcha'] == $_SESSION['code']){ echo "correct captcha"; }else{ echo "Invalid captcha"; } }
امیدواریم که از مطلب آموزشی ساخت کد امنیتی Captcha با استفاده از php استفاده لازم را برده باشید با مقاله های بعدی دهکده وردپرس همراه ما باشید.
هیچ دید گاهی ندادم
خیلی عالیه
برای فونت مقدار پیش فرضی وجود نداره؟
نمیشه اصلا وارد نکرد مقدار فونت رو؟
چون من امتحان کردم کارکتر ها روی عکس نمایش داده نمیشوند و فکر میکنم مشکل از فونت باید باشه