-
php验证码实现局部刷新
一般在用验证码时我们都要实现局部刷新了,这个是必然的,也是提高用户体验的一点,下面我们来看一个php验证码在实际应用中的用法,有需要的朋友来参考一下.
- /*
- * Auth_code()是验证码函数
- * @access public
- * @param int $width 表示验证码的长度,默认为80
- * @param int $height 表示验证码的高度,默认为20
- * @param int $num 表示验证码中数字位数,默认为4
- * @param int $line 表示验证码中线的条数,默认为4
- * @param int $line 表示验证码中点的个数,默认为150
- */
- function Auth_code($width = 80,$height = 20,$num = 4,$line = 4,$dot = 150) {
- $length = floor($width/$num); //floor:取整数部分 length:每段平均长度
- for($i=0;$i<$num;$i++)
- @$rand.=dechex(mt_rand(1,15));
- $_SESSION['code']=$rand;
- //新建一个黑色底的画板
- $im=imagecreatetruecolor($width,$height);
- //取色
- $green=imagecolorallocate($im,0,255,0);
- $red = imagecolorallocate($im,255,0,0);
- $white=imagecolorallocate($im,255,255,255);
- $black = imagecolorallocate($im,0,0,0);
- //填充画板
- //imagefill($im,0,0,$green);
- //画线
- for($i=0;$i<$line;$i++){
- $color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
- imageline($im,rand(10,$width-10),0,rand(0,$width),$height,$color);
- }
- //画点
- for($i=0;$i<$dot;$i++){
- $color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
- imagesetpixel($im,rand(0,$width),rand(0,$height),$color);
- }
- //画数字
- for($i=0;$i<$num;$i++) {
- imagestring($im,5,mt_rand($i*$length+1,($i+1)*$length-8),mt_rand(0,$height-14),$_SESSION['code'][$i],$white);
- }
- //开源代码phpfensi.com
- //输出图片
- header("content-type:image/jpeg");
- imagejpeg($im);
- }
php主要函数:
imagecreatetruecolor //新建一个黑色底的画板
imagecolorallocate //取色
imagefill //填充画板
imageline //画线
imagesetpixel //画点
imagestring //画字符串(本验证码为数字)
注意:在将数字验证码画上画板时要注意字体越界,所以要相应减去一些范围,详见附件.
局部刷新验证码:
<img src="code.php" onclick="javascript:this.src='code.php?id='+Math.random()">
出处:http://www.phpfensi.com/php/20140823/4696.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式