آموزش آپلود فایل در php
معمولا در بعضی از سایت ها لازم می شود که فرمی را در سایت تعبیه نموده که توسط آن کاربران بتوانند فایل های مورد نظ...
در این مطلب روش های تولید کد امنیتی کپچا در php را آموزش می دهیم، تا بتوانید به راحتی برای فرم های ورود ، عضویت ، نظرات و هر آن چه که برای امنیت سایت نیاز به ایجاد کد کپچا در php دارید، آن را وارد نمایید. با تیم طراحی سایت اصفهان وب یار همرا باشید تا نحوه ایجاد کد کپچا در php را به شما نشان دهیم و از آن لذت ببرید.
معمولا شما در بیشتر سایت هایی که دارای فرم های اینترنتی هستند شاهد کدهای کپچا (captcha) – تصویر امنیتی – هستید. بیشتر این کدها از کلمات به هم ریخته ای تشکیل شده است که شما باید شکل صحیح آن را وارد نموده تا بتوانید از عهده ی این تست بر آیید.
کد کپچا مخفف عبارت (Completely Automated Public Turing test to tell Computers and Humans Apart) می باشد؛ یعنی تست کاملا خودکار برای تشخیص انسان از رایانه، هدف از ایجاد کد کپچا در php این است که کاربران از عهده تست کد کپچا بر می آیند ولی رایانه ها به تنهایی نمی توانند از عهدی این آزمون ( تصویر امنینی کد کپچا ) برآیند.
طبق آموزش ساخت کد امنیتی با php ابتدا باید دو فایل به نام های index.php و simplephpcaptch.php ایجاد کنید. (البته توجه نمایید که دو فایل simplephpcaptch.php و index.php کافی نبوده و نیازمند فونت و لیست لغات است که در پایین صفحه ضمیمه شده اند.)
بعد از ایجاد فایلindex.php قطعه کدهای زیر را داخل آن قرار دهید.
1 2 3 4 5 6 7 8 9 |
<img height="70" width="200" src="simplephpcaptcha.php"/> <form action="" method="post"> <input type="text" name="captcha" /> <input type="submit" name="submit" /> </form> |
خط اول یک image ایجاد می کند که این تصویر در فایل simplephpcaptch.php ایجاد می شود و در صفحه ی index.php فراخوانی و نهایتا به نمایش در می آید. در خط بعدی یک فرم ایجاد می شود که کاربر باید کد کپچا ( تصویر امنیتی ) به نمایش در آمده را در این قسمت وارد نماید.
کد زیر حروفی که کاربر وارد کرده را با کپچای اصلی مقایسه می کند و درصورت درست یا غلط بودن پیغام متناسب با آن را به کاربر نشان می دهد.
1 2 3 4 5 6 7 8 9 10 |
<?php session_start(); if(isset($_POST['submit'])){ if($_SESSION['captcha'] == $_POST['captcha']){ echo "Captcha Is Correct<br>"; }else{ echo "Captcha Isn't Correct<br>"; } } ?> |
در این فایل کد کپچا ایجاد شده و به صفحه ی ایندکس ارسال می شود. اینک به توضیح کدهای موجود در این فایل می پردازیم.
1 2 3 4 5 6 |
$fp = fopen('xsixlw.txt',"r"); $count = filesize('xsixlw.txt')/6 - 1; $pos = 6*rand(0,$count); fseek($fp,$pos); $captcha = warpedCaptcha(trim(fread($fp,6))); fclose($fp); |
در قطعه کد بالا از فایل xsixlw.txt برای استفاده از حروف به صورت رندم استفاده شده است.
به طور خلاصه قطعه کد بالا به این صورت عمل می کند فایل txt را باز می کند و به صورت رندم یک قسمت از فایل را انتخاب می کند و با استفاده از تابع warpedCaptcha شش حرف آن را می خواند و کد کپچا را ایجاد می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
if (5 > rand(0,6)) return $text; $ltrs = array('b'=>'b','c'=>'c','d'=>'d','f'=>'f','g'=>'g','h'=>'h','j'=>'j', 'k'=>'k','l'=>'l','m'=>'m','n'=>'n','p'=>'p','q'=>'q','r'=>'r', 's'=>'s','t'=>'t','v'=>'v','w'=>'w','x'=>'x','z'=>'z'); $vkeys = $vltrs = explode(',','a,e,i,o,u,y'); shuffle($vkeys); $vowels = array(); foreach($vkeys as $ndx=>$vkey) $vowels[$vkey] = $vltrs[$ndx]; $ltrs = array_merge($ltrs,$vowels); $text = str_split($text); $captcha = ''; foreach($text as $txt) $captcha .= $ltrs[$txt]; return $captcha; } |
در قطعه کد زیر کد کپچای ارسالی توسط کاربر به این صفحه ارسال می شود.
1 2 3 |
session_start(); $_SESSION['captcha'] = $captcha; session_write_close(); |
بعد از ایجاد کد کپچا باید آن را در تصویر قرار بدهیم و رنگ و شکل آن را تغییر دهیم.
1 2 3 |
$im = imagecreatetruecolor(200,70); $black = imagecolorallocate($im,0,0,0); imagecolortransparent($im,$black); |
در کد بالا یک تصویر 200px *70px ایجاد می کند و رنگ پشت زمینه آن را ابتدا سیاه می نماید و سپس پشت زمینه را حذف می کند تا فقط کد کپچا یک border سیاه داشته باشد. بعد از آن نوبت به رنگ آن می رسد ابتدا با استفاده از کد زیر هر تعداد رنگ به دلخواه می توانید ایجاد کنید که هربار یک رنگ به طور رندم انتخاب می شود.
1 2 3 4 5 6 7 8 |
switch(rand(0,4)) { case 0:$color = imagecolorallocate($im,34,155,91);break; case 1:$color = imagecolorallocate($im,233,26,74);break; case 2:$color = imagecolorallocate($im,233,26,195);break; case 3:$color = imagecolorallocate($im,244,178,19);break; case 4:$color = imagecolorallocate($im,53,125,199);break; } |
سپس نوبت به سایز کد کپچا php می رسیم:
1 2 3 4 5 6 7 8 9 |
$x = 20;$y = 47 for ($i=0;$i<6;$i++) $angle = rand(-8,8) + rand(0,9)/10; $fontsize = rand(22,32); $letter = substr($captcha,$i,1); $coords = imagettftext($im,$fontsize,$angle,$x,$y,$color,'oldsans.ttf',$letter); $x += ($coords[2]-$x) + 1; } |
در خط اول موقعیت نمایش کد کپچا را مشخص می کند و در قسمت for یک حرف انتخاب می شود و به ترتیب زاویه و سایز آن مشخص می شود.
به تابع imagettftext() به ترتیب پشت زمینه ، سایز، زاویه ،موقعیت ، رنگ ، نوع فونت ، حرف مورد نظر داده می شود و حرف مورد نظر به نمایش در می آید.
حال فایل های مورد نیاز را می توانید از این قسمت دانلود نمایید.
دانلود کد ایجاد تصویر امنیتی ساده (کپچا) در php
اما در هر صورت اگر دسترسی به کدهای سایت خود ندارید و یا از سیستم مدیریت محتوا وردپرس استفاده می نمایید و وقت برای کد نویسی ندارید ، پیشنهاد می کنیم که از پلاگین کپچا وردپرس (captcha) استفاده نمایید.
در این قسمت به شما نحوه ی ایجاد کد کپچا در php را آموزش دادیم. همانطور که می دانید هر چه کد کپچا پیچیده تر باشد امکان ورود هکر ها و ربات به سایت شما کم وکم تر می شود. به همین دلیل وب یار آماده ی هرگونه کمک در خصوص ایجاد کدهای کپچای پیچیده تر برای شما دوست داران وب یار است.