iLeichun

当前位置: 首页 > 个人日志

JQuery实现php图片验证码

分类:个人日志   来源:原创   时间:2011-10-26 12:50:00
使用验证码可以防止机器无限制地提交表单,本文通过使用PHP生成图片验证码,使用JQuery实现局部刷新,并给出了2总不同浏览器的比较方案,本文所附代码可以直接运行。
 
Html代码:
<span id="checkCode"> </span> 
<a id="notClear" href="javascript:void(0)">看不清?</a>
 
checkCode.php:
<?php
session_start();
Header("Content-type: image/PNG");
$im = imagecreate(44,18);
$back = ImageColorAllocate($im, 245,245,245);
//背景
imagefill($im,0,0,$back); 
srand((double)microtime()*1000000);
//生成4位数字
for($i=0;$i<4;$i++){
$font=ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255));
$authnum=rand(1,9);
$vcodes.=$authnum;
imagestring($im, 5, 2+$i*10, 1, $authnum, $font);
}
//加入干扰象素
for($i=0;$i<100;$i++){ 
$randcolor=ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
ImagePNG($im);
ImageDestroy($im);
$_SESSION[¹VCODE¹] = $vcodes;
?>
 
Jquery:
方法一(ie无效,ff有效):
$("#checkCode").html("<img src=checkCode.php?r="+Math.random()+" />");
$("#notClear").click(function(){
$("#checkCode").html("<img src=checkCode.php?r="+Math.random()+" />");
});
 
方法二(ie,ff均有效):
$("#checkCode").empty().append("<img src=¹checkCode.php¹ />");
$("#notClear").click(function(){ 
$.post("checkCode.php?r="+Math.random(),function(data){
$("#checkCode").empty().append("<img src=¹checkCode.php?r="+Math.random()+"¹ width=¹44¹ height=¹18¹ />");
}); 
}); 
更多