当前位置:首页 > PHP教程 > php函数 > 列表

php验证码实现局部刷新

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-23 14:26:13 浏览: 评论:0 

一般在用验证码时我们都要实现局部刷新了,这个是必然的,也是提高用户体验的一点,下面我们来看一个php验证码在实际应用中的用法,有需要的朋友来参考一下.

  1. /* 
  2.  * Auth_code()是验证码函数 
  3.  * @access public 
  4.  * @param int $width 表示验证码的长度,默认为80 
  5.  * @param int $height 表示验证码的高度,默认为20 
  6.  * @param int $num  表示验证码中数字位数,默认为4 
  7.  * @param int $line  表示验证码中线的条数,默认为4 
  8.  * @param int $line  表示验证码中点的个数,默认为150 
  9.  */ 
  10. function Auth_code($width = 80,$height = 20,$num = 4,$line = 4,$dot = 150) { 
  11.  
  12.  $length = floor($width/$num);  //floor:取整数部分 length:每段平均长度 
  13.  for($i=0;$i<$num;$i++) 
  14.   @$rand.=dechex(mt_rand(1,15)); 
  15.  $_SESSION['code']=$rand
  16.  
  17.  //新建一个黑色底的画板 
  18.  $im=imagecreatetruecolor($width,$height); 
  19.  
  20.  //取色 
  21.  $green=imagecolorallocate($im,0,255,0); 
  22.  $red = imagecolorallocate($im,255,0,0); 
  23.  $white=imagecolorallocate($im,255,255,255); 
  24.  $black = imagecolorallocate($im,0,0,0); 
  25.  
  26.  //填充画板 
  27.  //imagefill($im,0,0,$green);  
  28.     
  29.  //画线 
  30.  for($i=0;$i<$line;$i++){ 
  31.   $color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)); 
  32.   imageline($im,rand(10,$width-10),0,rand(0,$width),$height,$color); 
  33.  } 
  34.  //画点 
  35.  for($i=0;$i<$dot;$i++){ 
  36.   $color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)); 
  37.   imagesetpixel($im,rand(0,$width),rand(0,$height),$color); 
  38.  } 
  39.  //画数字 
  40.  for($i=0;$i<$num;$i++) {  
  41.   imagestring($im,5,mt_rand($i*$length+1,($i+1)*$length-8),mt_rand(0,$height-14),$_SESSION['code'][$i],$white); 
  42.  } 
  43. //开源代码phpfensi.com 
  44.  //输出图片 
  45.  header("content-type:image/jpeg"); 
  46.  imagejpeg($im); 

php主要函数:

imagecreatetruecolor  //新建一个黑色底的画板

imagecolorallocate  //取色

imagefill         //填充画板

imageline       //画线

imagesetpixel  //画点

imagestring  //画字符串(本验证码为数字)

注意:在将数字验证码画上画板时要注意字体越界,所以要相应减去一些范围,详见附件.

局部刷新验证码:

<img src="code.php" onclick="javascript:this.src='code.php?id='+Math.random()">

Tags: php验证码 php局部刷新

分享到: