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中动态HTML的输出技术
Oct 09 PHP
奇怪的PHP引用效率问题分析
Mar 23 PHP
CI框架中zip类应用示例
Jun 17 PHP
Laravel框架中扩展函数、扩展自定义类的方法
Sep 04 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
PHP+JS实现大规模数据提交的方法
Jul 02 PHP
PHP的Yii框架的基本使用示例
Aug 21 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
Dec 18 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
详解PHP中websocket的使用方法
Sep 15 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 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写的采集程序
2007/03/16 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
document.getElementById介绍
2011/09/13 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
jQuery实现的页面详情展开收起功能示例
2018/06/11 jQuery
vue实现自定义多选按钮
2020/07/16 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
六个窍门助你提高Python运行效率
2015/06/09 Python
python读写ini配置文件方法实例分析
2015/06/30 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
python实现简单颜色识别程序
2020/02/19 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
Python中的Cookie模块如何使用
2020/06/04 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
python字典与json转换的方法总结
2020/12/28 Python
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
台湾森森购物网:U-mall
2017/10/16 全球购物
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
什么是网络协议
2016/04/07 面试题
幼儿园大班家长评语
2014/04/17 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
Redis 配置文件重要属性的具体使用
2021/05/20 Redis