1. <?php
  2. /**
  3. * php生成验证码
  4. * @param $width 画布宽
  5. * @param $height 画布高
  6. * @param $vcodelen 验证码长度
  7. * @param $pointnum 干扰像素点数量
  8. * @param $linenum 干扰线条数量
  9. *
  10. * 思路:创建验证码画布,生成并填充背景色,生成验证码内容/干扰像素点/线,填充到画布,输出。
  11. */
  12. $width = 100;
  13. $height = 30;
  14. $vcodelen = 4;
  15. $pointnum = 200;
  16. $linenum = 3;
  17. // 创建画布
  18. $image = imagecreatetruecolor($width, $height);
  19. // 创建色块
  20. $bgcolor = imagecolorallocate($image, 255, 255, 255);
  21. // 填充画布背景色
  22. imagefill($image, 0, 0, $bgcolor);
  23. // 验证码内容
  24. for ($i=0; $i < $vcodelen; $i++) {
  25. // 字体大小
  26. $fontsize = 5;
  27. // 字体颜色,颜色在限定范围内随机
  28. $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
  29. $data = 'abcdefghijklmnopqrstuvwxyz0123456789';
  30. // 验证码内容在以上字符串内随机截取
  31. $fontcontent = substr($data, rand(0,strlen($data)),1);
  32. // 字符串显示位置
  33. $x = ($i*$width/4)+rand(5,15);
  34. $y = rand(5,10);
  35. // 字符串填充图片
  36. // imagestring的字体大小可选1-5,字体再大需要用imagettftext函数(需要字体文件)
  37. imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
  38. // imagettftext($image, $fontsize, 0, $x, $y, $fontcolor, '/font/Geneva.dfont', $fontcontent);
  39. }
  40. // 干扰像素点
  41. for ($i=0; $i < $pointnum; $i++) {
  42. $pointcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
  43. // 画布填充像素点函数
  44. imagesetpixel($image, rand(0,$width), rand(0,$height), $pointcolor);
  45. }
  46. // 干扰线条
  47. for ($i=0; $i < $linenum; $i++) {
  48. $linecolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
  49. // 画布填充线条函数
  50. imageline($image, rand(0,$width), rand(0,$height), rand(0,$width), rand(0,$height), $linecolor);
  51. }
  52. // 图片输出格式
  53. header('content-type: image/png');
  54. // 输出验证码图片
  55. imagepng($image);
  56. // 销毁画布
  57. imagedestroy($image);
  58. ?>

利用php生成验证码的更多相关文章

  1. 利用kaptcha生成验证码的详细教程

    kaptcha是一个简单好用的验证码生成工具,有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.Ka ...

  2. 利用django-simple-captcha生成验证码

    参考文档 http://django-simple-captcha.readthedocs.io/en/latest/ django支持1.7+ 1.安装 pip install django-sim ...

  3. Javaweb中利用kaptcha生成验证码

    引入kaptcha-2.3-jdk15.jar包 在web.xml中进行配置 <servlet> <servlet-name>Kaptcha</servlet-name& ...

  4. 利用PIL创建验证码

    1. 随机生成rgb 元组 def random_RGB(min, max): return tuple([random.randint(min, max) for i in range(3)])2. ...

  5. 学习笔记:利用GDI+生成简单的验证码图片

    学习笔记:利用GDI+生成简单的验证码图片 /// <summary> /// 单击图片时切换图片 /// </summary> /// <param name=&quo ...

  6. Python利用PIL生成随机验证码图片

    安装pillow: pip install pillow PIL中的Image等模块提供了创建图片,制作图片的功能,大致的步骤就是我们利用random生成6个随机字符串,然后利用PIL将字符串绘制城图 ...

  7. C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库

    C# DateTime的11种构造函数   别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...

  8. PHP利用jquery生成各种验证码和Ajax验证

    PHP生成验证码图片 PHP生成验证码的原理:使用PHP的GD库,生成一张带验证码的图片,并将验证码保存在Session中.PHP 生成验证码的大致流程有: .产生一张png的图片: .为图片设置背景 ...

  9. 利用random模块生成验证码

    random模块 该模块用于数学或者数据相关的领域,使用方法非常简单下面介绍常用的放法 1.随机小数 random.random() 2.随机整数random.randint(1,5) # 大于等于1 ...

随机推荐

  1. 解决win10磁盘占用过大的问题(亲测有效)

    问题:打开任务管理器,经常会发现磁盘占用95%以上,电脑很卡,下面是解决方案 方法: 1.关闭家庭组. (1)搜索服务,找到“HomeGroupListener”服务,右键单击“属性”.在弹出属性界面 ...

  2. Fast Matrix Calculation 矩阵快速幂

    One day, Alice and Bob felt bored again, Bob knows Alice is a girl who loves math and is just learni ...

  3. 洛谷—— P2196 挖地雷

    https://www.luogu.org/problem/show?pid=2196 题目背景 NOIp1996提高组第三题 题目描述 在一个地图上有N个地窖(N<=20),每个地窖中埋有一定 ...

  4. vim 快速搜索的快捷键

    当光标在某个单词上面的时候 按 shift + #键(或 shift + * )就可以了!!! ----------------------------------- If you are worki ...

  5. [Vue @Component] Pass Props to Vue Functional Templates

    Functional templates allow you to create components consisting of only the template tag and exposing ...

  6. 如何修改ICO文件的尺寸

    使用Axialis IconWorkshop,该软件下载地址: http://www.xiazaiba.com/html/161.html 尺寸过大的ICO将无法作为应用程序的图标,如下图所示,这些素 ...

  7. c#复制文件、文件夹代码

    c#没有复制目录的代码,需要通过递归实现复制目录: 使用方法: 1.把c:\temp\index目录下的所有子目录和文件复制到 c:\temp\newindex目录下. bool copy = Cop ...

  8. 【转】MySQL随机字符串生成

    DROP FUNCTION IF EXISTS rand_string; DELIMITER $$ CREATE FUNCTION rand_string(str_length TINYINT UNS ...

  9. Vim 经常使用快捷键及键盘图

    Vim经常使用的快捷键 h - 光标左移一个字符   j - 光标下移一个字符 k - 光标上移一个字符   l - 光标右移一个字符  下移15行 - 15j Ctrl + f - 屏幕向下移动一页 ...

  10. 3736 【HR】万花丛中2

    3736 [HR]万花丛中2  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description HR神犇在成功攻略ZX后,花心 ...