php实现点击可刷新验证码


Posted in PHP onNovember 07, 2015

本文实例为大家分享了php点击可刷新验证码的具体代码,供大家参考,具体内容如下

验证码类文件 CreateImg.class.php

<?php 
 
class ValidationCode 
{ 
private $width,$height,$codenum; 
public $checkcode;  //产生的验证码 
private $checkimage; //验证码图片 
private $disturbColor = ''; //干扰像素 
 
function __construct($width='80',$height='20',$codenum='4') 
{ 
 $this->width=$width; 
 $this->height=$height; 
 $this->codenum=$codenum; 
} 
function outImg() 
{ 
 //输出头 
 $this->outFileHeader(); 
 //产生验证码 
 $this->createCode(); 
 
 //产生图片 
 $this->createImage(); 
 //设置干扰像素 
 $this->setDisturbColor(); 
 //往图片上写验证码 
 $this->writeCheckCodeToImage(); 
 imagepng($this->checkimage); 
 imagedestroy($this->checkimage); 
} 
 
private function outFileHeader() 
{ 
 header ("Content-type: image/png"); 
} 
 
private function createCode() 
{ 
 $this->checkcode = strtoupper(substr(md5(rand()),0,$this->codenum)); 
} 
 
private function createImage() 
{ 
 $this->checkimage = @imagecreate($this->width,$this->height); 
 $back = imagecolorallocate($this->checkimage,255,255,255); 
 $border = imagecolorallocate($this->checkimage,0,0,0); 
 imagefilledrectangle($this->checkimage,0,0,$this->width - 1,$this->height - 1,$back); // 白色底 
 imagerectangle($this->checkimage,0,0,$this->width - 1,$this->height - 1,$border); // 黑色边框 
} 
 
private function setDisturbColor() 
{ 
 for ($i=0;$i<=200;$i++) 
 { 
 $this->disturbColor = imagecolorallocate($this->checkimage, rand(0,255), rand(0,255), rand(0,255)); 
 imagesetpixel($this->checkimage,rand(2,128),rand(2,38),$this->disturbColor); 
 } 
} 
 
private function writeCheckCodeToImage() 
{ 
 for ($i=0;$i<=$this->codenum;$i++) 
 { 
 $bg_color = imagecolorallocate ($this->checkimage, rand(0,255), rand(0,128), rand(0,255)); 
 $x = floor($this->width/$this->codenum)*$i; 
 $y = rand(0,$this->height-15); 
 imagechar ($this->checkimage, rand(5,8), $x, $y, $this->checkcode[$i], $bg_color); 
 } 
} 
function __destruct() 
{ 
 unset($this->width,$this->height,$this->codenum); 
} 
} 
?>

包含文件imgcode.php

<?php 
session_start(); 
require_once('CreateImg.class.php'); 
$image = new ValidationCode('80','20','4'); //图片长度、宽度、字符个数 
$image->outImg(); 
$_SESSION['validationcode'] = $image->checkcode; //存贮验证码到 $_SESSION 中 
?>

前台文件 demo.php

?php 
session_start(); 
$test = $_POST['test']; 
$test = strtoupper(trim($test)); 
$submit = $_POST['submit']; 
if(isset($submit)){ 
if($test==$_SESSION['validationcode']){ 
 echo 'true'; 
} else { 
 echo 'false'; 
} 
} 
?> 
 
<html> 
<head> 
<title>Image</title> 
<meta http-equiv="content-type" content="text/html;charset=utf-8"> 
<script language="javascript"> 
function newgdcode(obj,url) { 
obj.src = url+ '?nowtime=' + new Date().getTime(); 
//后面传递一个随机参数,否则在IE7和火狐下,不刷新图片 
} 
</script> 
<body> 
<img src="imgcode.php" alt="看不清楚,换一张" align="absmiddle" style="cursor: pointer;" onclick="javascript:newgdcode(this,this.src);" /> 
<form method="POST" name="form1" action="image.php"> 
<input type="text" name="test"> 
<br /> 
<input type="submit" name="submit" value="提交"> 
</form> 
</body> 
</head> 
</html>

以上就是为大家介绍的php点击验证码即可刷新的全部代码,希望对大家的学习有所帮助。

PHP 相关文章推荐
分享PHP入门的学习方法
Jan 02 PHP
php和jquery实现地图区域数据统计展示数据示例
Feb 12 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
Dec 16 PHP
php简单定时执行任务的实现方法
Feb 23 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
Mar 07 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
Mar 25 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
Mar 30 PHP
mac系统下为 php 添加 pcntl 扩展
Aug 28 PHP
php技巧小结【推荐】
Jan 19 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
PHP+Session防止表单重复提交的解决方法
Apr 09 PHP
php use和include区别总结
Oct 13 PHP
PHP中SSO Cookie登录分析和实现
Nov 06 #PHP
使用PHP similar text计算两个字符串相似度
Nov 06 #PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 #PHP
php创建无限级树型菜单
Nov 05 #PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 #PHP
PHP递归创建多级目录
Nov 05 #PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 #PHP
You might like
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
php实现的通用图片处理类
2015/03/24 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
一个JavaScript变量声明的知识点
2013/10/28 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
JS创建对象的写法示例
2016/11/04 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
Python获取当前函数名称方法实例分享
2018/01/18 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
python求平均数、方差、中位数的例子
2019/08/22 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
同志主要表现材料
2014/08/21 职场文书
任命书标准格式
2015/03/02 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
解决Oracle数据库用户密码过期
2022/05/11 Oracle