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

/**
* 生成验证码
*/
function buildRandomString($type=3,$length=4){
if ($type==1){
//join()函数是implode()函数的别名,用来将数组变成字符串,第一个参数为数组元素之间放置的内容
$chars=join( "",range(0,9));
}elseif($type==2){
//range()函数创建一个包含指定范围的元素的数组
//array_merge()函数把一个或多个数组合并为一个数组
$chars=join("",array_merge(range("a","z"),range("A","Z")));
}elseif($type==3){
$chars=join("",array_merge(range("a","z"),range("A","Z"),range(0,9)));
//产生的数组数据abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
}
if($length>strlen($chars)){
exit("字符串长度不够");
}
$chars=str_shuffle($chars);//str_shuffle()函数随机打乱字符串中的所有字符
return substr($chars,0,$length);//substr()函数返回指定部分的字符串
} /**
*通过GD库绘制图片验证码
*/
function verifyImage($type=1,$length=4,$pixel=5,$line=5,$sess_name = "verify"){
session_start(); //创建画布
$width=80;
$height=28;
//imagecreatetruecolor()返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像
$image=imagecreatetruecolor($width,$height);
//imagecolorallocate()返回一个标识符,代表了由给定的RGB成分组成的颜色
$white=imagecolorallocate($image,255,255,255);
$black=imagecolorallocate($image,0,0,0);
//将图片的封闭长方形区域着色,参数为画布资源、矩形对角线坐标,颜色
imagefilledrectangle($image,1,1,$width-2,$height-2,$white); //创建验证码
$chars=buildRandomString($type,$length);
//将验证码记录在session中,判断正误
$_SESSION[$sess_name]=$chars; //画出验证码的内容
$fontfiles=array("SIMYOU.TTF");//字体文件
for($i=0;$i<$length;$i++){
//mt_rand()返回范围内的随机数
$size=mt_rand(14,18);//字型尺寸
$angle=mt_rand(-15,15);//字型角度
$x=5+$i*$size;
$y=mt_rand(20,26);//x y为文字坐标值,原点为文字左上角
$fontfile="./fonts/".$fontfiles[mt_rand(0,count($fontfiles)-1)];//字体:通过数组方式取文件,方便以后扩展
$color=imagecolorallocate($image,mt_rand(50,90),mt_rand(80,200),mt_rand(90,180));//字体颜色
$text=substr($chars,$i,1);//内容
//imagettftext()将字型文字写入图片
imagettftext($image,$size,$angle,$x,$y,$color,$fontfile,$text);
} if($pixel){//绘制干扰点的数量,参数传递
for($i=0;$i<50;$i++){
//绘点
imagesetpixel($image,mt_rand(0,$width-1),mt_rand(0,$height-1),$black);
}
}
if($line){//绘制干扰线的数量,参数传递
for($i=1;$i<$line;$i++){
$color=imagecolorallocate($image,mt_rand(50,90),mt_rand(80,200),mt_rand(90,180));
imageline($image,mt_rand(0,$width-1),mt_rand(0,$height-1),mt_rand(0,$width-1),mt_rand(0,$height-1),$color);
}
}
header("content-type:image/gif");
imagegif($image);//建立gif格式的图形
imagedestroy($image);//销毁图像资源
}

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. 超强vim配置文件

    简易安装方法: https://github.com/ma6174/vim 打开终端,执行下面的命令就自动安装好了: wget -qO- https://raw.github.com/ma6174/v ...

  2. Jsp学习(2)

    Jsp的三大指令 (1).include 作用:相当于把当前页面去包含页面 语法: <%@include file="/common/test.jsp" %> 实例如下 ...

  3. 搭建PHP开发环境 apache+MySQL+PHP 安装phpMyAdmin模块

    该博文参考的资料来源于: http://wenku.baidu.com/view/0e4c569ddd3383c4bb4cd267.html http://www.cnblogs.com/pharen ...

  4. 从零开始学C++之数据封装与抽象:分别用C和C++来实现一个链栈

    下面通过分别用C和C++来实现一个链栈(链表实现),从中体会数据封装抽象的思想: C语言实现:  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  5. poj 1149 Pigs 网络流-最大流 建图的题目(明天更新)-已更新

    题目大意:是有M个猪圈,N个顾客,顾客要买猪,神奇的是顾客有一些猪圈的钥匙而主人MIRKO却没有钥匙,多么神奇?顾客可以在打开的猪圈购买任意数量的猪,只要猪圈里有足够数量的猪.而且当顾客打开猪圈后mi ...

  6. ARCproject中加入非ARC文件,或者非ARC环境中加入ARC文件

    ARC与非ARC在一个项目中同一时候使用, 选择项目中的Targets,选中你所要操作的Target,选Build Phases,在当中Complie Sources中选择须要ARC的文件双击,并在输 ...

  7. 一次向svn中增加所有新增文件 svn add all new files

    svn st | grep '^\?' | tr '^\?' ' ' | sed 's/[ ]*//' | sed 's/[ ]/\\ /g' | xargs svn add

  8. HDU2088JAVA

    Hot~~招聘——巴卡斯(杭州),亚信科技,壹晨仟阳(杭州) Box of Bricks Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: ...

  9. C#/.net七牛云存储上传图片(文件)操作

    七牛云存储官方: C#SDK(http://developer.qiniu.com/docs/v6/sdk/csharp-sdk.html) 注册成为标准用户就可获得:10GB永久免费存储空间/ 每月 ...

  10. Nunit概要

    一.NUnit是一个单元测试框架,专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit(C++),他们都是xUnit的一员.最初,它是从JUnit而来.现在的版本是2.2.接下 ...