//基本步骤
1,先创建一张指定宽度和高度的一张验证码图片 imagecreatetruecolor()
2,给验证码图片添加背景颜色 和文字颜色 imagecolorallocate()
3, 在指定图片上面,画一个矩形 imagefilledrectangle()
4, 获取随机数  (定义一个函数) get_rand_str()
  1,定义一个字符串
  2,将上面的字符串 打乱  str_shuffle()
  3,并且从这个打乱的字符串当中去截取一部分内容 substr()
  4,把截取出来的字符串转化成小写字母 strtolower()
  5, 将这个字符串 return
5,将随机数写入到这个图片里面去 imagestring()
6,防止别人去恶意刷我们的验证码 可以在这个图片上面加上一些点 imagesetpixel()
7,开启session会话  将我们的验证码 存储到session当中与我们表单当中输入的验证码进行匹配
8,输入图片的 头信息 和 图片资源 删除 header("Content-Type:image/png"); imagepng($img); imagedestroy($img);
9,在登录界面 获取表单输入的验证码  和 我们session当中的验证码进行对比 如果正确就跳转登录界面 否则重新输入
 
   html:
 
       <img src="img_code.php" />
 
   img_code.php
 
      //处理随机字符函数
         function get_rand_str($length = 4){
          $chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZ';
          $str = str_shuffle($chars); // 随机打乱一个字符串
          $str = substr($str,0,$length);
          $str = strtolower($str);
          return $str;
         }
 
      $width = 45;   //缩略图宽度
      $height = 18;  //缩略图高度
 
      $img = imagecreatetruecolor($width,$height);  // 新建一个真彩色图像
       
      //imagecolorallocate()  为一幅图像分配颜色
      /*
      *$img  为哪幅图分配颜色
      *74 147 223 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制
      */
      $backgroundcolor = imagecolorallocate($img,74,147,223);  //背景颜色
 
 
      $textcolor = imagecolorallocate($img,255,255,255);   //文字颜色
 
      //imagefilledrectangle — 画一矩形并填充
      /*
      * $img  图片资源
      * 0,0,$width,height  分别为矩形的坐标
      * $backgroundcolor 表示填充的颜色
      */
      imagefilledrectangle($img,0,0,$width,height,$backgroundcolor);
 
 
      $get_code = get_rand_str();  //获取随机数
       
      /*
      水平地画一行字符串
      imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )
      imagestring() 用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)
      如果 font 是 1,2,3,4 或 5,则使用内置字体。
      */
      imagestring($img,5,6,1,$get_code,$textcolors);
 
       
      //在图片当中去画一些点 防止有人而已破解验证码
 
      //imagesetpixel — 画一个单一像素
      /*
      *imagesetpixel ( resource $image , int $x , int $y , int $color )
      *imagesetpixel() 在 image 图像中用 color 颜色在 x,y 坐标(图像左上角为 0,0)上画一个点。
      */
      for($i=0;$i<=20;$i++){
        $x = mt_rand(0,$width);
        $y = mt_rand(0,$height);
        imagesetpixel($img,$x,$y,imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)));
      }
 
      session_start();  //开启session会话控制将验证码缓存
      $_SESSION['imgcode'] = $get_code//把生成的随机数放到session里面的一个变量当中
 
      header("Content-Type:image/png");
      imagepng($img);   //在浏览器上面输出一张图片
      imagedestroy($img);  //销毁 图片

php验证码处理的更多相关文章

  1. .net点选验证码实现思路分享

    哈哈好久没冒泡了,最进看见点选验证码有点意思,所以想自己写一个. 先上效果图 如果你被这个效果吸引了就请继续看下去. 贴代码前先说点思路: 1.要有一个汉字库,并按字形分类.(我在数据库里是安部首分类 ...

  2. 【探索】无形验证码 —— PoW 算力验证

    先来思考一个问题:如何写一个能消耗对方时间的程序? 消耗时间还不简单,休眠一下就可以了: Sleep(1000) 这确实消耗了时间,但并没有消耗 CPU.如果对方开了变速齿轮,这瞬间就能完成. 不过要 ...

  3. TODO:Laravel增加验证码

    TODO:Laravel增加验证码1. 先聊聊验证码是什么,有什么作用?验证码(CAPTCHA)是"Completely Automated Public Turing test to te ...

  4. PHP-解析验证码类--学习笔记

    1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1  定义变量 //随机因子 private $char ...

  5. 随手记_C#验证码

    前言 最近在网上偶然看见一个验证码,觉得很有意思,于是搜了下,是使用第三方实现的,先看效果: 总体来说效果还是可以的,官方提供的SDK也比较详细,可配置性很高.在这里在简单啰嗦几句使用方式: 使用步骤 ...

  6. WPF做12306验证码点击效果

    一.效果 和12306是一样的,运行一张图上点击多个位置,横线以上和左边框还有有边框位置不允许点击,点击按钮输出坐标集合,也就是12306登陆的时候,需要向后台传递的参数. 二.实现思路 1.获取验证 ...

  7. 零OCR基础6行代码实现C#验证码识别

    这两天因为工作需要,要到某个网站采集信息,一是要模拟登陆,二是要破解验证码,本想用第三方付费打码,但是想想网上免费的代码也挺多的,于是乎准备从网上撸点代码下来,谁知道,撸了好多个都不行,本人以前也没接 ...

  8. ASP.NET中画图形验证码

    context.Response.ContentType = "image/jpeg"; //生成随机的中文验证码 string yzm = "人口手大小多少上中下男女天 ...

  9. asp.net mvc 验证码

    效果图 验证码类 namespace QJW.VerifyCode { //用法: //public FileContentResult CreateValidate() //{ // Validat ...

  10. ecshop验证码

    <?php //仿制ecshop验证码(四位大写字母和数字.背景) //处理码值(四位大写字母和数字组成) //所有的可能的字符集合 $chars = 'ABCDEFGHIJKLMNOPQRST ...

随机推荐

  1. 类的继承与super()的意义以即如何写一个正确的异常类

    这些东西都是我看了许多名师课程和自己研究的成果,严禁转载,这里指出了如何正确的自己定义一个异常类并看一看sun写的java的源代码话题一:子类的构造器执行是否一定会伴随着父类的构造执行? 1.this ...

  2. 如何使用Visual Studio 2010在数据库中生成随机测试数据

    测试在项目中是很重要的一个环节,在Visual Studio 2010中,在测试方面已经有很好的支持了,比如有单元测试,负载测试等等.在数据测试的方面,Visual Studio 2010,还支持对数 ...

  3. 根据GridView模板里的列名获取列索引

    以前Insus.NET在写过一篇<在Gridview控件中根据Field Name来取得对应列索引> http://www.cnblogs.com/insus/archive/2010/0 ...

  4. Repeater控件最后一笔记录高亮显示

    Insus.NET以前有写过 <Repeater控件第前10笔记录高亮显示> 不过,现在有一个想法,就是最后一笔记录高亮显示,怎样实现? 技术要求,就是获取最后一笔的索引即可.可以从数据源 ...

  5. kolla-build镜像时,问题汇总

    记录下kolla-build镜像时,遇到的一些问题,既为了方便自己以后问题的查找,也为了帮助别人避免踩这些坑.遇到的问题会持续更新在博客里面. 问题1:使用的kolla 版本是ocata版本,本地已经 ...

  6. Mybatis的输出结果封装

    resultType属性可以指定结果集的类型,它支持基本类型和实体类类型. 需要注意的是,它和parameterType一样,如果注册过类型别名的,可以直接使用别名. 没有注册过的必须使用全限定类名. ...

  7. Sql Server中常用的6个自定义函数分享

    转自:http://www.jb51.net/article/56691.htm IF OBJECT_ID('DBO.DISTINCT_STR') IS NOT NULL DROP FUNCTION ...

  8. AngularJS(五)——filter(过滤器)

    前言 过滤器可以用一个管道字符(|)添加到表达式和指令中.比如做ITOO的时候或者其他项目的时候,总是想统一货币日期等显示,以前的做法,不断循环该控件或该标签,然后循环转换.如果利用AngularJS ...

  9. Oracle复制表

    Oracle复制表分为只复制表结构或者结构和数据均复制两种: 只复制表结构 create table newTableName as select * from oldTableName where ...

  10. CF1005F Berland and the Shortest Paths

    \(\color{#0066ff}{ 题目描述 }\) 一个无向图(边权为1),输出一下选边的方案使\(\sum d_i\)最小(\(d_i\)为从1到i的最短路) 输出一个方案数和方案(方案数超过k ...