一漂亮的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 相关文章推荐
用PHP实现ODBC数据分页显示一例
Oct 09 PHP
php session和cookie使用说明
Apr 07 PHP
解析关于wamp启动是80端口被占用的问题
Jun 21 PHP
分享一个php 的异常处理程序
Jun 22 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
PHP Smarty模版简单使用方法
Mar 30 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
php实现计算百度地图坐标之间距离的方法
May 05 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
PHP中$GLOBALS与global的区别详解
Mar 21 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
Laravel 6.2 中添加了可调用容器对象的方法
Oct 22 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安全配置
2006/10/09 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
jquery 使用简明教程
2014/03/05 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
python操作xml文件详细介绍
2014/06/09 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
python基于递归解决背包问题详解
2019/07/03 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
django框架创建应用操作示例
2019/09/26 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
python cookie反爬处理的实现
2020/11/01 Python
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
内容编辑个人求职信
2013/12/10 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
合作协议书范本
2014/04/17 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
人力资源部岗位职责
2015/02/11 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
施工安全责任协议书
2016/03/23 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
教你怎么用Python监控愉客行车程
2021/04/29 Python
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL