验证码主要用来防止暴力破解的方式来进行登录,下面是php中的图片验证码生成方式,废话不多说,直接上代码

  1. /**
  2. * 生成验证码
  3. */
  4. function buildRandomString($type=3,$length=4){
  5. if ($type==1){
  6. //join()函数是implode()函数的别名,用来将数组变成字符串,第一个参数为数组元素之间放置的内容
  7. $chars=join( "",range(0,9));
  8. }elseif($type==2){
  9. //range()函数创建一个包含指定范围的元素的数组
  10. //array_merge()函数把一个或多个数组合并为一个数组
  11. $chars=join("",array_merge(range("a","z"),range("A","Z")));
  12. }elseif($type==3){
  13. $chars=join("",array_merge(range("a","z"),range("A","Z"),range(0,9)));
  14. //产生的数组数据abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
  15. }
  16. if($length>strlen($chars)){
  17. exit("字符串长度不够");
  18. }
  19. $chars=str_shuffle($chars);//str_shuffle()函数随机打乱字符串中的所有字符
  20. return substr($chars,0,$length);//substr()函数返回指定部分的字符串
  21. }
  22.  
  23. /**
  24. *通过GD库绘制图片验证码
  25. */
  26. function verifyImage($type=1,$length=4,$pixel=5,$line=5,$sess_name = "verify"){
  27. session_start();
  28.  
  29. //创建画布
  30. $width=80;
  31. $height=28;
  32. //imagecreatetruecolor()返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像
  33. $image=imagecreatetruecolor($width,$height);
  34. //imagecolorallocate()返回一个标识符,代表了由给定的RGB成分组成的颜色
  35. $white=imagecolorallocate($image,255,255,255);
  36. $black=imagecolorallocate($image,0,0,0);
  37. //将图片的封闭长方形区域着色,参数为画布资源、矩形对角线坐标,颜色
  38. imagefilledrectangle($image,1,1,$width-2,$height-2,$white);
  39.  
  40. //创建验证码
  41. $chars=buildRandomString($type,$length);
  42. //将验证码记录在session中,判断正误
  43. $_SESSION[$sess_name]=$chars;
  44.  
  45. //画出验证码的内容
  46. $fontfiles=array("SIMYOU.TTF");//字体文件
  47. for($i=0;$i<$length;$i++){
  48. //mt_rand()返回范围内的随机数
  49. $size=mt_rand(14,18);//字型尺寸
  50. $angle=mt_rand(-15,15);//字型角度
  51. $x=5+$i*$size;
  52. $y=mt_rand(20,26);//x y为文字坐标值,原点为文字左上角
  53. $fontfile="./fonts/".$fontfiles[mt_rand(0,count($fontfiles)-1)];//字体:通过数组方式取文件,方便以后扩展
  54. $color=imagecolorallocate($image,mt_rand(50,90),mt_rand(80,200),mt_rand(90,180));//字体颜色
  55. $text=substr($chars,$i,1);//内容
  56. //imagettftext()将字型文字写入图片
  57. imagettftext($image,$size,$angle,$x,$y,$color,$fontfile,$text);
  58. }
  59.  
  60. if($pixel){//绘制干扰点的数量,参数传递
  61. for($i=0;$i<50;$i++){
  62. //绘点
  63. imagesetpixel($image,mt_rand(0,$width-1),mt_rand(0,$height-1),$black);
  64. }
  65. }
  66. if($line){//绘制干扰线的数量,参数传递
  67. for($i=1;$i<$line;$i++){
  68. $color=imagecolorallocate($image,mt_rand(50,90),mt_rand(80,200),mt_rand(90,180));
  69. imageline($image,mt_rand(0,$width-1),mt_rand(0,$height-1),mt_rand(0,$width-1),mt_rand(0,$height-1),$color);
  70. }
  71. }
  72. header("content-type:image/gif");
  73. imagegif($image);//建立gif格式的图形
  74. imagedestroy($image);//销毁图像资源
  75. }

php生成图片验证码的更多相关文章

  1. PHP生成图片验证码demo【OOP面向对象版本】

    下面是我今天下午用PHP写的一个生成图片验证码demo,仅供参考. 这个demo总共分为4个文件,具体代码如下: 1.code.html中的代码: <!doctype html> < ...

  2. python 全栈开发,Day85(Git补充,随机生成图片验证码)

    昨日内容回顾 第一部分:django相关 1.django请求生命周期 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这 ...

  3. net生成图片验证码--转自Lisliefor

    目前,机器识别验证码已经相当强大了,比较常见的避免被机器识别的方法,就是将验证码的字符串连到一起,这样就加大的识别的难度,毕竟机器没有人工智能.我找了很多的.net生成图片验证码的例子,后来经过一些修 ...

  4. python PIL图像处理-生成图片验证码

    生成效果如图: 代码 from PIL import Image,ImageDraw,ImageFont,ImageFilter import random # 打开一个jpg图像文件: im = I ...

  5. 在.net core web项目中生成图片验证码

    第1步:添加SkiaSharp包引用 Install-Package SkiaSharp 第2步:编写生成图片验证码的代码 using SkiaSharp; //在类文件头部添加引用 public I ...

  6. 【转载】Asp.Net生成图片验证码工具类

    在Asp.Net应用程序中,很多时候登陆页面以及其他安全重要操作的页面需要输入验证码,本文提供一个生成验证码图片的工具类,该工具类通过随机数生成验证码文本后,再通过C#中的图片处理类位图类,字体类,一 ...

  7. js依赖mui.css生成图片验证码

    js依赖mui.css生成图片验证码 相关css和js引入路径 https://cdnjs.cloudflare.com/ajax/libs/mui/3.7.1/css/mui.css https:/ ...

  8. (七)利用servlet生成图片验证码

    总结: 验证码就是一张图,然后往这张图上写入随机的字符(数字字母等). 1.1 编写html页面 <!DOCTYPE html> <html> <head> < ...

  9. PIL实现图片框架以及生成图片验证码

    1. PIL的基本概念 PIL:即Python Imaging Library,是Python平台事实上的图像处理标准库. PIL中涉及通道(bands)和模式(mode)这两个重要概念. (1)通道 ...

  10. Django登录(含随机生成图片验证码)注册实例

    登录,生成随机图片验证码 一.登录 - 随机生成图片验证码 1.随机生成验证码 Python随机生成图片验证码,需要使用PIL模块,安装方式如下: pip3 install pillow 1)创建图片 ...

随机推荐

  1. php-mysql结果集函数比较

    本节主要介绍了获取查询结果集的4个函数,此处对它们进行综合比较.     ● mysql_result():优点在于使用方便:而缺点在于功能少,一次调用只能获取结果数据集中的一行记录,对较大型的数据库 ...

  2. sqlserver 存储过程中拼接sql语句 动态执行

    ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @grad ...

  3. oppo X907刷机包 COLOROS 1.0 正式版公布 安卓4.2.2

    ROM介绍 本版本号将是X907史上最好的一版本号 全新COLOROS的UI 更新全局手势板操作 优化高速启动应用 安全保障中心也是一直採用COLOROS组成的 COLOROS 1.0给用户带来在线音 ...

  4. PHP中输出缓冲

    在PHP中,当运行echo,print的时候,输出并没有马上通过tcp传给client浏览器显示, 而是将数据写入php buffer.php output_buffering机制,意味在tcp bu ...

  5. NDK开发之ndk-build命令详解

    毫无疑问,通过执行ndk-build脚本启动android ndk构建系统. 默认情况下,ndk-build脚本在工程的主目录中执行,如: 我们可以用使用-C参数改变上述行为,-C指定工程的目录,这样 ...

  6. Android开发之隐藏Activity(活动)的标题

    隐藏一个活动的标题(如您打算向用户显示状态更新时),可以使用requestWindowFeature()方法,传递Window.FEATURE_NO_TITLE常量来控制.实现如下: protecte ...

  7. h5宣传页制作过程中遇到的问题

    音乐播放 ios下关闭不流畅; (ios下需重新image 模拟) 音乐设置自动播放属性后 部分机型下不能自动播放.目前解决方案: touchstart时触发播放 微信“分享给朋友”点击发送后,页面卡 ...

  8. iOS UIKit:animation

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...

  9. Android WebView的loadData方法注意事项

    loadData()中的html data中不能包含'#', '%', '\', '?'四中特殊字符,出现这种字符就会出现解析错误,显示找不到网页还有部分html代码.需要如何处理呢?我们需要用Url ...

  10. 用maven打包项目成war文件

    打开pom.xml,右键选择Run As -> Maven package就可以自动打包成war文件了.