用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

php图片验证码代码

时间:2015-01-23  来源:西部数据  作者:西部数据

在用户验证页面,如注册,登录的时候,为了加强用户登录的安全性,添加验证码验证代码,下面我为各位朋友提供几种不同同类型的php验证代码程序,最后一款是一款使用了验证代码的实例代码,实例代码如下:

  1. date_default_timezone_set('asia/shanghai'); 
  2.  function setcode($len
  3.  { 
  4.   $code = ''
  5.   for ($i=0;$i<$len;$i++)//生成随机长度 
  6.   { 
  7.    $code .= chr(drand()); 
  8.   } 
  9.   return $code
  10.  } 
  11.  //生成一个随机字符 
  12.  function drand() 
  13.  { 
  14.   $rand = mt_rand(0,2); 
  15.   $str = ''
  16.   switch ($rand
  17.   { 
  18.    case 0: $str = mt_rand(48,57);break;//数字 
  19.    case 1: $str = mt_rand(65,90);break;//大写字母 
  20.    case 2: $str = mt_rand(97,122);break;//小写字母 
  21.   } 
  22.   return $str
  23.  } 
  24.  $_session['checkcode'] = $code = setcode(5);  
  25.  
  26. //php图片验证码原代码,需支持gd2.dll扩展,需修改php.ini后重启iis or ap 
  27.  
  28. session_start();  
  29. session_register('safecode'); 
  30. $type = 'gif'
  31. $width= 40; 
  32. $height= 16; 
  33. header("content-type: image/".$type); 
  34. srand((double)microtime()*1000000); 
  35. $randval = randstr(4,""); 
  36. if($type!='gif' && function_exists('imagecreatetruecolor')){  
  37.      $im = @imagecreatetruecolor($width,$height); 
  38. }else{  
  39.      $im = @imagecreate($width,$height); 
  40.      $r = array(225,211,255,223); 
  41.      $g = array(225,236,237,215); 
  42.      $b = array(225,236,166,125); 
  43.  
  44.      $key = rand(0,3); 
  45.    
  46.      $backcolor = imagecolorallocate($im,$r[$key],$g[$key],$b[$key]);//背景色(随机) 
  47.      $bordercolor = imagecolorallocate($im, 0, 0, 0);//边框色 
  48.      $pointcolor = imagecolorallocate($im, 255, 170, 255);//点颜色 
  49.  
  50.      @imagefilledrectangle($im, 0, 0, $width - 1, $height - 1, $backcolor);//背景位置 
  51.      @imagerectangle($im, 0, 0, $width-1, $height-1, $bordercolor); //边框位置 
  52.      $stringcolor = imagecolorallocate($im, 255,51,153); 
  53.  
  54.      for($i=0;$i<=100;$i++){  
  55.            $pointx = rand(2,$width-2); 
  56.            $pointy = rand(2,$height-2); 
  57.            @imagesetpixel($im$pointx$pointy$pointcolor); 
  58.      } 
  59.  
  60.      @imagestring($im, 3, 5, 1, $randval$stringcolor); 
  61.      $imagefun='image'.$type
  62.      $imagefun($im); 
  63.      @imagedestroy($im); 
  64.      $_session['safecode'] = $randval
  65. //产生随机字符串 
  66. function randstr($len=6,$format='all') {  
  67.            switch($format) {  
  68.                  case 'all'
  69.                  $chars='abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789www.111cn.net'break
  70.                  case 'char'
  71.                  $chars='abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'break
  72.                  case 'number'
  73.                  $chars='0123456789'break
  74.                  default : 
  75.                  $chars='abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789';  
  76.                  break
  77.            } 
  78.      $string=""
  79.      while(strlen($string)<$len
  80.      $string.=substr($chars,(mt_rand()%strlen($chars)),1); 
  81.      return $string
  82.  
  83. //调用此页面,如果下面的式子成立,则生成验证码图片  
  84. if($_get["action"]=="verifycode")  
  85. {  
  86.     rand_create();  
  87. }  
  88. //验证码图片生成  
  89. function rand_create()  
  90. {  
  91.     //通知浏览器将要输出png图片  
  92.     header("content-type: image/png");  
  93.     //准备好随机数发生器种子   
  94.     srand((double)microtime()*1000000);  
  95.     //准备图片的相关参数    
  96.     $im = imagecreate(62,20);  
  97.     $black = imagecolorallocate($im, 0,0,0);  //rgb黑色标识符  
  98.     $white = imagecolorallocate($im, 255,255,255); //rgb白色标识符  
  99.     $gray = imagecolorallocate($im, 200,200,200); //rgb灰色标识符  
  100.     //开始作图      
  101.     imagefill($im,0,0,$gray);  
  102.     while(($randval=rand()%100000)<10000);{  
  103.         $_session["login_check_num"] = $randval;  
  104.         //将四位整数验证码绘入图片   
  105.         imagestring($im, 5, 10, 3, $randval$black);  
  106.     }  
  107.     //加入干扰象素     
  108.     for($i=0;$i<200;$i++){  
  109.         $randcolor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));  
  110.         imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);  
  111.     }  
  112.     //输出验证图片  
  113.     imagepng($im);  
  114.     //销毁图像标识符  
  115.     imagedestroy($im);  
  116. }  
  117. //检验验证码  
  118. function rand_check()  
  119. {  
  120.     if($_post["reg_rand"] == $_session["login_check_num"]){  
  121.         return true;  
  122.     } //开源代码phpfensi.com 
  123.     else{  
  124.         exit("验证码输入错误");  
  125.     }  

验证码通过gd生成png图片,并把$randval随机数字赋给$_session['login_check_num'],在通过用户输入的$_post进行比较,来判断是否正确,达到需要实现的功能,需要修改php.ini文件,使php支持gd库.

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门