1. <?php
  2.  
  3. check_code();
  4.  
  5. function check_code($width = 100, $height = 50, $num = 4, $type = 'jpeg')
  6. {
  7. $img = imagecreate($width, $height);
  8. $string = ''; // 文字
  9. for ($i = 0; $i < $num; $i++) {
  10. $rand = mt_rand(0, 2);
  11. switch ($rand) {
  12. case 0:
  13. $ascii = mt_rand(48, 57); //0-9
  14. break;
  15. case 1:
  16. $ascii = mt_rand(65, 90); //A-Z
  17. break;
  18. case 2:
  19. $ascii = mt_rand(97, 122); //a-z
  20. break;
  21. }
  22. //chr()
  23. $string .= sprintf('%c', $ascii);
  24.  
  25. }
  26. //背景颜色
  27. imagefilledrectangle($img, 0, 0, $width, $height, randBg($img));
  28.  
  29. //画干扰元素
  30.  
  31. for ($i = 0; $i < 50; $i++) {
  32.  
  33. imagesetpixel($img, mt_rand(0, $width), mt_rand(0, $height), randPix($img));
  34.  
  35. }
  36. //写字
  37. for ($i = 0; $i < $num; $i++) {
  38. $x = floor($width / $num) * $i + 2;
  39. $y = mt_rand(0, $height - 15);
  40.  
  41. imagechar($img, 5, $x, $y, $string[$i], randPix($img));
  42.  
  43. }
  44.  
  45. //imagejpeg
  46.  
  47. $func = 'image' . $type;
  48.  
  49. $header = 'Content-type:image/' . $type;
  50.  
  51. if (function_exists($func)) {
  52. header($header);
  53. $func($img);
  54. } else {
  55.  
  56. echo '图片类型不支持';
  57. }
  58. imagedestroy($img);
  59. return $string;
  60.  
  61. }
  62. //浅色的背景
  63. function randBg($img)
  64. {
  65. return imagecolorallocate($img, mt_rand(130, 255), mt_rand(130, 255), mt_rand(130, 255));
  66. }
  67. //深色的字或者点这些干扰元素
  68. function randPix($img)
  69. {
  70. return imagecolorallocate($img, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));
  71. }
  72.  
  73. ?>

PHP生成验证码的更多相关文章

  1. 动态生成验证码———MVC版

    上面有篇博客也是写的验证码,但那个是适用于asp.net网站的. 今天想在MVC中实现验证码功能,弄了好久,最后还是看博友文章解决的,感谢那位博友. 首先引入生成验证码帮助类. ValidateCod ...

  2. laravel 生成验证码的方法

    在Laravel中有很多图片验证码的库可以使用,本篇介绍其中之一:gregwar/captcha,这个库比较简单,在Laravel中比较常用.下面我们就来介绍下使用细节: 首先, composer.j ...

  3. java web学习总结(九) -------------------通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

  4. android 生成验证码图片

    (转自:http://blog.csdn.net/onlyonecoder/article/details/8231373) package com.nobeg.util; import java.u ...

  5. PHP 动态生成验证码

    ……机器人会在网站中搜寻允许他们插入广告的输入表单,在虚拟世界没有什么能阻挡它们胡作非为.这些机器人效率极高,完全不关心所攻击的表单的本来用途.它们唯一的目标就是用它们的垃圾广告覆盖你的内容,残忍地为 ...

  6. PHP生成验证码及单实例应用

    /* note: * this 指向当前对象本身 * self 指向当前类 * parent 指向父类 */ /* 验证码工具类 * @author pandancode * @date 20150- ...

  7. ASP.NET ashx实现无刷新页面生成验证码

    现在大部分网站登陆时都会要求输入验证码,在网上也看了一些范例,现在总结一下如何实现无刷新页面生成验证码. 效果图: 实现方式: 前台: <div> <span>Identify ...

  8. PHP-仿ecshop生成验证码

    <?php /* 生成验证码 */ // 1.创建画布(基于已有图像) $n = mt_rand(1,5); $im = imagecreatefromjpeg('./images/captch ...

  9. Java生成验证码原理(jsp)

     验证码的作用: 验证码是Completely Automated Public Turing test to tell Computers and Humans Apart(全自动区分计算机和人类的 ...

  10. C#生成验证码

    生成验证码的类: using System; using System.Collections.Generic; using System.Drawing; using System.Text; na ...

随机推荐

  1. CCF-201509-1-数列分段

    问题描述 试题编号: 201509-1 试题名称: 数列分段 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共 ...

  2. 三十天学不会TCP,UDP/IP编程--MAC地址和数据链路层

    这篇文章主要是来做(da)推(guang)介(gao)的!由于这两年接触到了比较多的这方面的知识,不想忘了,我决定把他们记录下来,所以决定在GitBook用半年时间上面写下来,这是目前写的一节,后面会 ...

  3. (转)Python 日期和时间

    转自http://www.runoob.com/python/python-date-time.html Python 日期和时间 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见 ...

  4. Python的变量及简单数据类型

    Python的变量及简单类型 1.  变量 在Python编程中,变量是用来存放值或对像的容器.变量的名称可以自定义,但需遵循一定的规范,否则可能会引发一些错误.Python的变量可以分为数字.字符和 ...

  5. coursera普林斯顿算法课part1里Programming Assignment 2最后的extra challenge

    先附上challenge要求: 博主最近在刷coursera普林斯顿大学算法课part1部分的作业,Programming Assignment2最后的这个extra challenge当初想了一段时 ...

  6. js 匹配2个字符串相似度

    strSimilarity2Number: function (s, t) { var n = s.length, m = t.length, d = []; var i, j, s_i, t_j, ...

  7. 数据模型与查询语言 ------《Designing Data-Intensive Applications》读书笔记2

    数据模型是开发软件的最重要的部分,因为它们对应用程序有着深远的影响:不仅是软件的编写方式,而且也影响我们如何解决的问题的方式.第二篇读书笔记,我们聊一聊数据模型的设计. 1.数据模型的分层 作为一个开 ...

  8. OpenCV 读取视频 多种方式

    OpenCV中常见的视频方式是while循环读取,可是,当遇到嵌套循环呢 1.常见的while循环 ,没有嵌套循环 cv::VideoCapture capture("d:/test/dem ...

  9. 腾讯qq等级计算公式面试题

    就三道题大概是: 1. 推算出等级相应的天数 这个还比較简单,公式是:(b=2a+3)   a是等级, b是相应的天数 2. 推算出等级总共的天数 先看下规律 等级a 相应天数b 总天数s 1 5 5 ...

  10. 使用asyncsocket群聊

    #import "ViewController.h" #import "AsyncSocket.h" @interface ViewController ()& ...