探讨如何在php168_cms中提取验证码


Posted in PHP onJune 08, 2013
<?php
function yzImg($nmsg){
 if (function_exists('imagecreatetruecolor')){
  $imstr[0]["s"]=$nmsg[0];
  $imstr[1]["s"]=$nmsg[1];
  $imstr[2]["s"]=$nmsg[2];
  $imstr[3]["s"]=$nmsg[3];
  //文件头...
  header("Content-type: image/png");
  //创建真彩色白纸
  $im = @imagecreatetruecolor(50, 20) or die("建立图像失败");
  //获取背景颜色
  $background_color = imagecolorallocate($im, 255, 255, 255);
  //填充背景颜色(这个东西类似油桶)
  imagefill($im,0,0,$background_color);
  //获取边框颜色
  $border_color = imagecolorallocate($im,200,200,200);
  //画矩形,边框颜色200,200,200
  imagerectangle($im,0,0,49,19,$border_color);
  //逐行炫耀背景,全屏用1或0
  for($i=2;$i<28;$i++){
  //获取随机淡色
  $line_color = imagecolorallocate($im,rand(180,255),rand(180,255),rand(180,255));
  //画线
  imageline($im,2,$i,47,$i,$line_color);
  }
  //设置字体大小
  $font_size=12;
  //设置印上去的文字
  $Str[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  $Str[1] = "abcdefghijklmnopqrstuvwxyz";
  $Str[2] = "01234567891234567890123456";
  //获取第1个随机文字
  //$imstr[0]["s"] = $Str[rand(0,2)][rand(0,25)];
  $imstr[0]["x"] = rand(2,5);
  $imstr[0]["y"] = rand(1,4);
  //获取第2个随机文字
  //$imstr[1]["s"] = $Str[rand(0,2)][rand(0,25)];
  $imstr[1]["x"] = $imstr[0]["x"]+$font_size-1+rand(0,1);
  $imstr[1]["y"] = rand(1,3);
  //获取第3个随机文字
  //$imstr[2]["s"] = $Str[rand(0,2)][rand(0,25)];
  $imstr[2]["x"] = $imstr[1]["x"]+$font_size-1+rand(0,1);
  $imstr[2]["y"] = rand(1,4);
  //获取第4个随机文字
  //$imstr[3]["s"] = $Str[rand(0,2)][rand(0,25)];
  $imstr[3]["x"] = $imstr[2]["x"]+$font_size-1+rand(0,1);
  $imstr[3]["y"] = rand(1,3);
  //写入随机字串
  for($i=0;$i<4;$i++){
   //获取随机较深颜色
   $text_color = imagecolorallocate($im,rand(80,180),rand(80,180),rand(80,180));
   //画文字
   imagechar($im,$font_size,$imstr[$i]["x"],$imstr[$i]["y"],$imstr[$i]["s"],$text_color);
  }
  //显示图片
  imagepng($im);
  //销毁图片
  imagedestroy($im);
  exit;
 } else {
  header("Pragma:no-cache");
  header("Cache-control:no-cache");
  header("ContentType: Image/BMP");
  $Color[0] = chr(0).chr(0).chr(0);
  $Color[1] = chr(255).chr(255).chr(255);
  $_Num[0]  = "1110000111110111101111011110111101001011110100101111010010111101001011110111101111011110111110000111";
  $_Num[1]  = "1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111";
  $_Num[2]  = "1110000111110111101111011110111111111011111111011111111011111111011111111011111111011110111100000011";
  $_Num[3]  = "1110000111110111101111011110111111110111111100111111111101111111111011110111101111011110111110000111";
  $_Num[4]  = "1111101111111110111111110011111110101111110110111111011011111100000011111110111111111011111111000011";
  $_Num[5]  = "1100000011110111111111011111111101000111110011101111111110111111111011110111101111011110111110000111";
  $_Num[6]  = "1111000111111011101111011111111101111111110100011111001110111101111011110111101111011110111110000111";
  $_Num[7]  = "1100000011110111011111011101111111101111111110111111110111111111011111111101111111110111111111011111";
  $_Num[8]  = "1110000111110111101111011110111101111011111000011111101101111101111011110111101111011110111110000111";
  $_Num[9]  = "1110001111110111011111011110111101111011110111001111100010111111111011111111101111011101111110001111";
  echo chr(66).chr(77).chr(230).chr(4).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(54).chr(0).chr(0).chr(0).chr(40).chr(0).chr(0).chr(0).chr(40).chr(0).chr(0).chr(0).chr(10).chr(0).chr(0).chr(0).chr(1).chr(0);
  echo chr(24).chr(0).chr(0).chr(0).chr(0).chr(0).chr(176).chr(4).chr(0).chr(0).chr(18).chr(11).chr(0).chr(0).chr(18).chr(11).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0);
  for ($i=9;$i>=0;$i--){
    for ($j=0;$j<=3;$j++){
      for ($k=1;$k<=10;$k++){
        echo $Color[substr($_Num[$nmsg[$j]], $i * 10 + $k, 1)];
      }
    }
  }
  exit;
 }
}
$string_yzimg=yzImgNumRand(4);

yzImg($string_yzimg);
function yzImgNumRand($lenth){
 mt_srand((double)microtime() * 1000000);
 for($i=0;$i<$lenth;$i++){
  $randval.= mt_rand(1,9);
 }
 return $randval;
}
/*==隐逸鸟==*/
?>

这个生成的验证码只是单纯的数字,背景填充很简单了只是26根直线填充的。前边看到他是想要4为随机字母加数字的序列,可是后来生成序列的时候却仅仅用了数字,字母却并没有用。下面重新修改为4位字母加数字的序列:
function yzImgNumRand($lenth){
 mt_srand((double)microtime() * 1000000);
$Str[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 $Str[1] = "abcdefghijklmnopqrstuvwxyz";
 $Str[2] = "01234567891234567890123456";
for($i=0;$i<$lenth;$i++){
  $randval.= $Str[rand(0,2)][rand(0,25)];
}
 return $randval;
}

PHP 相关文章推荐
PHP动态图像的创建
Oct 09 PHP
PHP 已经成熟
Dec 04 PHP
php 图片上传类代码
Jul 17 PHP
抓取并下载CSS中所有图片文件的php代码
Sep 26 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
PHP中使用匿名函数操作数据库的例子
Nov 17 PHP
PHP实现获取某个月份周次信息的方法
Aug 11 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
May 18 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
PHP中串行化用法示例
Nov 16 PHP
使用ThinkPHP生成缩略图及显示
Apr 27 PHP
PHP笛卡尔积实现原理及代码实例
Dec 09 PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 #PHP
基于php常用正则表达式的整理汇总
Jun 08 #PHP
PHP计数器的实现代码
Jun 08 #PHP
使用cookie实现统计访问者登陆次数
Jun 08 #PHP
使用session判断用户登录用户权限(超简单)
Jun 08 #PHP
深入php常用函数的使用汇总
Jun 08 #PHP
php遍历所有文件及文件夹的方法深入解析
Jun 08 #PHP
You might like
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
2015/12/14 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
javascript实用方法总结
2015/02/06 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
Python max内置函数详细介绍
2016/11/17 Python
如何高效使用Python字典的方法详解
2017/08/31 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
python 爬虫请求模块requests详解
2020/12/04 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
室内设计专业个人的自我评价
2013/10/19 职场文书
销售顾问的岗位职责
2013/11/13 职场文书
设计专业自荐信
2014/06/19 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
小学班长竞选稿
2015/11/20 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL