در وب گردیهایتان حتما برایتان پیش آمده است که بخواهید فرمیرا پر کنید و یا در وب سایتی عضو شوید و در پایان پر کردن فرم از شما بخواهند که تصویر و یا کد امنیتی موجود را در فرم وارد کنید.یکی از دلایل انجام این کار جلوگیری از ارسال دیدگاه اسپم است. شاید به عنوان یک طراح این فکر به ذهن شما خظور کرده باشد که خودتان یک تصویر امنیتی بسازید!!
باید بگم که اینکار اصلا سخت و پیچیده نیست.من در این آموزش نحوهء کار و کد اینکار را برای شما قرار داده ام تا در کمترین زمان این کار را انجام دهید.
کد ایجاد تصویر امنیتی ساده (کپچا) در PHP
وارد کردن کد امنیتی (کپچا) در وبسایتها، گاها برای کاربران واقعی، کاری بسیار دشوار و آزار دهنده است است. jReply یک اسکریپت برای نمایش کد امنیتی در وبسایتمان برای کاربران نوشته است، که در عین راحتی در نوشتن برای کاربران واقعی، از ورود روباتها نیز جلوگیری میکند. کد نوشته شده نیز به منظور راحتی در تطبیق و تغییر آن ساده و قابل درک نوشته شده است.
کد زیر همان کد استفاده شده در اسکریپت تصویر امنیتی ساده (کپچا) است . توجه کنید که کد زیر به تنهایی کار نمیکند و نیازمند فونت و لیست لغات است که به صورت کامل ضمیمه شده. این کد جهت مطالعه قرار داده شده است.
<?php function warpedCaptcha($text) { /* this function takes the original captcha text and shuffles the vowels + y around in order to deliver more variable captcha text */ if (5 > rand(0,6)) return $text; //only parttime warping $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]; //the vowels + y are now jumbled up $ltrs = array_merge($ltrs,$vowels); //full associative array of alphabet with randomized vowels + y $text = str_split($text); $captcha = ''; foreach($text as $txt) $captcha .= $ltrs[$txt]; return $captcha; } /* xsixlw.txt is a long string of 6 letter words concatenated together. We pick a word at random from this text */ $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); session_start(); $_SESSION['captcha'] = $captcha; //store the captcha to check later once the user has solved it session_write_close(); $im = imagecreatetruecolor(200,70);//200 x 70 pixel image $black = imagecolorallocate($im,0,0,0); imagecolortransparent($im,$black);//give it a black background 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; } //pick a random color for the text $x = 20;$y = 47;//the starting position for drawing for ($i=0;$i<6;$i++) { $angle = rand(-8,8) + rand(0,9)/10; $fontsize = rand(22,32);//pick a random font size $letter = substr($captcha,$i,1); $coords = imagettftext($im,$fontsize,$angle,$x,$y,$color,'oldsans.ttf',$letter); //draw each letter $x += ($coords[2]-$x) + 1; } header('Content-type:image/png'); imagepng($im); imagedestroy($im); ?>
نحوه استفاده از اسکریپت تصویر امنیتی:
۱- استخراج فایلها (Extract Files) در یک فولدر مناسب در سرور:
simplephpcaptcha.php xsixlw.txt ldsans.ttf
۲- در صفحه ای که میخواهید از تصویر امنیتی (کپچا) استفاده کنید، کد زیر را بنویسید:
<img height="70" width="200" src="path_to_folder/simplecaptcha.php"/>
۳- ایجاد یک فیلد متنی برای دریافت کد امنیتی :
<form action="" method="post"> <input type="text" name="captcha" /> <input type="submit" name="submit" /> </form>
۴- بررسی صحت کد امنیتی وارد شده در سمت سرور:
<? session_start(); if(isset($_POST['submit'])){ if($_SESSION['captcha'] == $_POST['captcha']){ echo "Captcha Is Correct<br>"; }else{ echo "Captcha Isn't Correct<br>"; } } ?>
در صورت درست یا غلط بودن کد وارد شده پیامی ظاهر میشود که نتیجه کار را مشخص میکند. شما میتوانید به جای این پیغامها، هر عملی که باید در اسکریپتتان انجام شود را بنویسید.
فایل های مربوط به کد تصویر امنیتی (فایلها تست شده است)
این هم از این آموزش از سری آموزش های بیگ تم.
موفق و پیروز باشید.