一漂亮的PHP图片验证码实例


Posted in PHP onMarch 21, 2014

一、显示效果
一漂亮的PHP图片验证码实例
二、代码如下

/*
 *  @Author fy
 */
$imgwidth =100; //图片宽度
$imgheight =40; //图片高度
$codelen =4; //验证码长度
$fontsize =20; //字体大小
$charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';
$font = 'Fonts/segoesc.ttf';
$im=imagecreatetruecolor($imgwidth,$imgheight);
$while=imageColorAllocate($im,255,255,255);
imagefill($im,0,0,$while); //填充图像
//取得字符串
$authstr='';
$_len = strlen($charset)-1;
for ($i=0;$i<$codelen;$i++) {
 $authstr .= $charset[mt_rand(0,$_len)];
}
session_start();
$_SESSION['scode']=strtolower($authstr);//全部转为小写,主要是为了不区分大小写
//随机画点,已经改为划星星了
for ($i=0;$i<$imgwidth;$i++){
    $randcolor=imageColorallocate($im,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
 imagestring($im,mt_rand(1,5), mt_rand(0,$imgwidth),mt_rand(0,$imgheight), '*',$randcolor);
    //imagesetpixel($im,mt_rand(0,$imgwidth),mt_rand(0,$imgheight),$randcolor);
}
//随机画线,线条数量=字符数量(随便)
for($i=0;$i<$codelen;$i++) 
{  
 $randcolor=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
 imageline($im,0,mt_rand(0,$imgheight),$imgwidth,mt_rand(0,$imgheight),$randcolor); 
} 
$_x=intval($imgwidth/$codelen); //计算字符距离
$_y=intval($imgheight*0.7); //字符显示在图片70%的位置
for($i=0;$i<strlen($authstr);$i++){
 $randcolor=imagecolorallocate($im,mt_rand(0,150),mt_rand(0,150),mt_rand(0,150));
 //imagestring($im,5,$j,5,$imgstr[$i],$color3);
 // imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )
 imagettftext($im,$fontsize,mt_rand(-30,30),$i*$_x+3,$_y,$randcolor,$font,$authstr[$i]);
}
//生成图像
header("content-type:image/PNG");
imagePNG($im);
imageDestroy($im);

 

PHP 相关文章推荐
mysql时区问题
Mar 26 PHP
MySql 按时间段查询数据方法(实例说明)
Nov 02 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
Nov 01 PHP
关于svn冲突的解决方法
Jun 21 PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 PHP
Linux下安装PHP MSSQL扩展教程
Oct 24 PHP
Yii核心组件AssetManager原理分析
Dec 02 PHP
php控制文件下载速度的方法
Mar 24 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
Jan 10 PHP
详解thinkphp的Auth类认证
May 28 PHP
PHP中nowdoc和heredoc使用需要注意的一点
Mar 21 #PHP
php获取表单中多个同名input元素的值
Mar 20 #PHP
php中的静态变量的基本用法
Mar 20 #PHP
php遍历文件夹下的所有文件和子文件夹示例
Mar 20 #PHP
php数据库备份还原类分享
Mar 20 #PHP
PHP实现微信公众平台音乐点播
Mar 20 #PHP
一个PHP针对数字的加密解密类
Mar 20 #PHP
You might like
PHP编码转换
2012/11/05 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
jquery清空textarea等输入框实现代码
2013/04/22 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
python中字典dict常用操作方法实例总结
2015/04/04 Python
Python运行报错UnicodeDecodeError的解决方法
2016/06/07 Python
Python 字典与字符串的互转实例
2017/01/13 Python
Python函数参数操作详解
2018/08/03 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
大都会艺术博物馆商店:The Met Store
2018/06/22 全球购物
strstr()的简单实现
2013/09/26 面试题
历史系毕业生自荐信
2013/10/28 职场文书
连锁经营管理专业大学生求职信
2013/10/30 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
婚礼父母答谢词
2015/01/04 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers