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 相关文章推荐
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 PHP
深入php之规范编程命名小结
May 15 PHP
php网站地图生成类示例
Jan 13 PHP
php sybase_fetch_array使用方法
Apr 15 PHP
ThinkPHP之M方法实例详解
Jun 20 PHP
深入理解PHP内核(二)之SAPI探究
Nov 10 PHP
浅谈php fopen下载远程文件的函数
Nov 18 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
php删除二维数组中的重复值方法
Mar 12 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 11 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 PHP
Yii2框架中一些折磨人的坑
Dec 15 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去除HTML标签实例
2013/11/06 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
js Calender控件使用详解
2015/01/05 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python实现字典依据value排序
2016/02/24 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
Python获取时间戳代码实例
2019/09/24 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
法人授权委托书
2014/04/03 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
工会文体活动总结
2015/05/07 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书
服务器间如何实现文件共享
2022/05/20 Servers