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编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
Nov 01 PHP
PHP下通过file_get_contents的代理使用方法
Feb 16 PHP
php图片上传存储源码并且可以预览
Aug 26 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
Nov 22 PHP
php内存缓存实现方法
Jan 24 PHP
PHP内存使用情况如何获取
Oct 10 PHP
php实现博客,论坛图片防盗链的方法
Oct 15 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
PHP实现Google plus的好友拖拽分组效果
Oct 21 PHP
Laravel中10个有用的用法小结
May 06 PHP
PHP递归统计系统中代码行数
Sep 19 PHP
php实现的数组转xml案例分析
Sep 28 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全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
JS.elementGetStyle(element, style)应用示例
2013/09/24 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
Python 模板引擎的注入问题分析
2017/01/01 Python
python生成九宫格图片
2018/11/19 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
python使用opencv实现马赛克效果示例
2019/09/28 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
大学生个人简历中的自我评价
2013/12/27 职场文书
机械制造专业个人的自我评价
2013/12/28 职场文书
播音主持专业个人自我评价
2014/01/09 职场文书
银行业务授权委托书
2014/10/10 职场文书
学生保证书
2015/01/16 职场文书
《穷人》教学反思
2016/02/19 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
golang使用map实现去除重复数组
2022/04/14 Golang