探讨如何在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调用三种数据库的方法(3)
Oct 09 PHP
Ajax+PHP边学边练 之五 图片处理
Dec 03 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
Nov 02 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
linux系统下php安装mbstring扩展的二种方法
Jan 20 PHP
php网页标题中文乱码的有效解决方法
Mar 05 PHP
PHPMailer发送HTML内容、带附件的邮件实例
Jul 01 PHP
PHP Header用于页面跳转时的几个注意事项
Oct 21 PHP
thinkPHP3.2.2框架行为扩展及demo示例
Jun 19 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 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
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
php实现的xml操作类
2016/01/15 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
JS实现轮播图效果
2020/01/11 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
html5用video标签流式加载的实现
2020/05/20 HTML / CSS
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
公益活动邀请函
2014/02/05 职场文书
文明班级建设方案
2014/05/15 职场文书
学生顶撞老师的检讨书
2014/09/17 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
吃空饷专项整治方案
2014/10/27 职场文书
成绩单评语
2015/01/04 职场文书
英文升职感谢信
2015/01/23 职场文书