PDA

View Full Version : آموزش: Captcha & Ajax



vahidqara
دوشنبه 16 تیر 1393, 10:57 صبح
سلام و درود...

یک تصویر امنیتی (Captcha ) ساده براتون میزارم امروز .. امید دارم موثر باشه.. :لبخندساده:

دو صفحه نیاز هست .. یکی captcha.php که تصویر رو نشون میده به همراه ارسال کد امنیتی و دیگری securitycode.php هستش برای چک کردن کد و تولید تصویر امنیتی.

صفحه ی Captcha.php رو اینجوری مینویسیم ..



<script src="js/jquery-1.11.0.min.js"></script>
<script type="text/javascript">

$(document).ready(function(){

$('#submit').click(function(){
var captcha = $('#captcha').val();
var flag;
$.ajax({

type:'POST',
url:'securitycode.php',
data:{'captcha':captcha,'flag':1},
success:function(data){
$('#result').text(data);
}
});

});


});



</script>


<?php
session_start();

$text = "ZXCVBNMLKJHGFDSAQWERTYUIOPzxcvbnmlkjhgfdsaqwertyui op0123654789";
$code ='';
for($i=1;$i<=5;$i++){
$start = rand(0,strlen($text));
$code.=substr($text,$start,1);

}
$_SESSION['code']=$code;
?>
<br>
<img src="securitycode.php">

<br>
<br>

<input type="text" id="captcha" name="captcha"><br>
<input type="submit" id="submit" value="submit">


<div id="result">


</div>





توضیح کد php این صفحه :

ساده هستش .. یک متن رو به یک متغیر نسبت دادیم که دلبخواه هست .. $text
سپس به وسیله حاقه ی for و به صورت rand یک رشته یا کد 5 رقمی تولید و داخل $code نوشتیم سپس داخل session گذاشتیم...
کد های ایجکس هم مشخص هست .. مکی مطالعه در مورد ایجکس کافی هست بدونید چیکار کرده .. :لبخندساده: مقدار متغیر رو گرفتیم که id ان captcha هست رو به صفحه ی
مورد نظر فرستادیم...

سپس یک تگ img رو روی آدرس صفحه ی securitycode.php ست کردیم ..

صفحه ی بعدی



<?php
session_start();
header('Content-type: image/jpeg');

$code = $_SESSION['code'];
$font_size = 18;
$image_width =100;
$image_height =40;

if(empty($_POST['flag'])){
$image = imagecreate($image_width,$image_height);
imagecolorallocate($image,200,200,200);
$text_color = imagecolorallocate($image,100,10,0);
imagettftext($image,$font_size,0,11,28,$text_color ,'calibri.ttf',$code);
imagejpeg($image);
}
$captcha = $_POST['captcha'];
if($captcha==$code){
echo 'کد امنیتی صحیح می باشد';

}else{
echo 'کد امنیتی اشتباه می باشد';
}
?>







که کارش تولید یک عکس و متنی که از session گرفته رو روش چاپ می کنه..
در آخر متن ارسالی رو چک میکنه و پیغام مورد نظر چاپ میشود.