一漂亮的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进行MySQL删除记录操作代码
Jun 07 PHP
两个开源的Php输出Excel文件类
Feb 08 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
php实现插入排序
Mar 29 PHP
yii2实现根据时间搜索的方法
May 25 PHP
php的PDO事务处理机制实例分析
Feb 16 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
Mar 22 PHP
laravel 配置路由 api和web定义的路由的区别详解
Sep 03 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 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
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
JavaScipt基本教程之前言
2008/01/16 Javascript
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
js实现抽奖功能
2020/11/24 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
python中zip()方法应用实例分析
2016/04/16 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
Superdry极度干燥美国官网:英国制造的服装品牌
2018/11/13 全球购物
卫生标语大全
2014/06/21 职场文书
先进班组事迹材料
2014/12/25 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python