php中运用GD库实现简单验证码
昨天学习了运用php的GD库进行验证码的实现。
首先可以用phpinfo()函数看一下GD库有没有安装,我用的wampserver是自动给安装的。
主要的步骤是:
1、生成验证码图片
2、随机生成字符,画到图片上,并把生成的字符追加到验证码字符串中
4、把验证码字符串保存到$_SESSION中
5、随机生成干扰元素
下面贴代码,注释比较详细:
<?php session_start(); $image_height = 30; $image_width = 100; $image = imagecreatetruecolor($image_width,$image_height); //验证码背景颜色 $bgcolor = imagecolorallocate($image,255,245,255); //从左上角像验证码图片填充背景色 imagefill($image,0,0,$bgcolor); //验证码字符串 $captch_code =''; //生成字符 for ($i = 0;$i<4;$i++){ // 随机字符颜色 $fontColor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); // 字符数据库 $data = 'abcdefghizklmnpqrstuvwxy0123456789'; // 随机选取字符 $fontContent = substr($data,rand(0,strlen($data))-1,1); // 追加到验证码字符串 $captch_code.=$fontContent; // 随机生成字符位置 $x = ($i*$image_width/4)+rand(0,$image_width/8); $y = rand(0,$image_height/2); //imagestring方法中默认字体为1-5 $font = 5; imagestring($image,$font,$x,$y,$fontContent,$fontColor); } //用session储存验证码 $_SESSION['authcode']=$captch_code; //画出干扰点 for ($i=0;$i<200;$i++){ $pointColor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200)); imagesetpixel($image,rand(0,$image_width),rand(0,$image_height),$pointColor); } //画出干扰线 for ($i=0;$i<3;$i++){ $lineColor = imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220)); imageline($image,rand(0,$image_width/2),rand(0,$image_height),rand($image_width/2,$image_width),rand(0,$image_height),$lineColor); } header('content-type:image/png'); imagepng($image); imagedestroy($image); ?>
这样就实现了简单的验证码,当然还可对里边的字符进行扭曲的操作。
如果要实现中文的验证码在画字时要用到imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text)这个函数,这里的$fontfile可以是支持中文的ttf字体的路径
php中运用GD库实现简单验证码的更多相关文章
- PHP 用session与gd库实现简单验证码生成与验证的类
验证码是为了防止机器灌水给网站带来污染以及增加服务器负担而出现的.目前大大小小的网站都有验证码.今天自己实现了一个简单的验证码类.说简单是因为没有加一些干扰的弧线等等,只是将文字旋转了一下.当然,因为 ...
- php中GD库的简单使用
在php中需要图像处理的地方GD库会发挥重要的作用,php可以创建并处理包括GIF,PNG,JPEG,WBMP以及XPM在内的多种图像格式,简单的举几个例子: 1.用GD库会创建一块空白图片,然后绘制 ...
- PHP5 GD库生成图形验证码(汉字)
PHP5 GD库生成图形验证码且带有汉字的实例分享. 1,利用GD库函数生成图片,并在图片上写指定字符imagecreatetruecolor 新建一个真彩色图像imagecolorallocate ...
- PHP配置环境中开启GD库
下配置好的PHP环境中,GD库不像windows那样可以直接用,而是默认关闭,需要把它打开,去到php.ini文件中 找到php_gd2.dll把分号去掉即可.(注:GD库跟绘制二维码等有关)
- 安装GD库解决ThinkPHP 验证码Call to undefined function Think\imagecreate()出错
在php中imagecreate函数是一个图形处理函数,主要用于新建一个基于调色板的图像了,然后在这个基础上我们可以创建一些图形数字字符之类的,但这个函数需要GD库支持,如果没有开启GD库使用时会提示 ...
- 使用Pillow库 创建简单验证码
使用Pillow生成简单的验证码 本想做成字体各自按随机角度倾斜, 但没有在Pillow中找到相关的方法 import randomfrom PIL import Image, ImageDraw, ...
- 基于GD库的php验证码类(支持中英文字体、背景、干扰点线、扭曲…….)
转自:http://www.blhere.com/1168.html 12345678910111213141516171819202122232425262728293031323334353637 ...
- PHP中使用GD库方式画时钟
<!--demo.html中内容--> <body> <img id="time" src="test.php" /> &l ...
- 关于PHP使用GD库生成的验证码无法在别处显示
https://segmentfault.com/q/1010000002522270
随机推荐
- UIView -> image & 本地时间获取
//UIView 转换为图片 UIGraphicsBeginImageContext(self.rootsView.bounds.size); [_rootsView.layer renderInCo ...
- MySQL UPDATE
MySQL UPDATE 查询 如果我们需要修改或更新MySQL中的数据,我们可以使用 SQL UPDATE 命令来操作.. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用SQL语 ...
- asp.net 图片质量压缩(不改变尺寸)
private static ImageCodecInfo GetEncoderInfo(String mimeType) { int j; ImageCodecInfo[] encoders; en ...
- MYSQL :逗号分隔串表,分解成竖表
DROP TEMPORARY TABLE IF EXISTS Temp_Num ; CREATE TEMPORARY TABLE Temp_Num ( xh INT PRIMARY KEY ); -- ...
- 可以让PHP编程事半功倍的类库
在用php开发网站的时候,使用面向对象的方法确实可以提高代码复用率,减少代码冗余.而对初学者更友好的是,PHP开发网站所需要的大部分类库,网上都有十分优秀的类库存在了.作为一个程序猿当然不能重复制造轮 ...
- jQuery中的综合动画
所谓综合动画,就是在链式表达式依次执行相关animate函数,其中的参数是以键值对的方式存在的. 如下示例,就展示了一个基本的综合动画. <!DOCTYPE html PUBLIC " ...
- LIKE匹配关键字
1.% 匹配任意数目字符(包括零个字符) SELECT * FROM edo_user WHERE true_name LIKE '王%' 应用:关键字查询 WHERE u.true_name lik ...
- 构建高可用web站点学习(三)
分布式的构建 做为网站访问的生命线(数据访问),当然也可以采用分布式的方法来减轻单台服务器的访问压力.之前有讲过Memcached的分布式,但是Memcached服务器互不通信,所以我们也提过redi ...
- ionic中使用Cordova Uglify 压缩js与css
参照:https://www.npmjs.com/package/cordova-uglify 安装:npm install cordova-uglify 安装完成之后,打开: hooks/uglif ...
- poj Candies
http://poj.org/problem?id=3159 #include<cstdio> #include<queue> #include<cstring> ...