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 XML备份Mysql数据库
May 27 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
Jan 18 PHP
解决CodeIgniter伪静态失效
Jun 09 PHP
ThinkPHP CURD方法之field方法详解
Jun 18 PHP
Joomla调用系统自带编辑器的实现方法
May 05 PHP
PHP5.4起内置web服务器使用方法
Aug 09 PHP
redis查看连接数及php模拟并发创建redis连接的方法
Dec 15 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
PHP让网站移动访问更加友好方法
Feb 14 PHP
七种PHP开发环境搭建工具
Jun 28 PHP
php命令行模式代码实例详解
Feb 26 PHP
PHP7新增函数
Mar 09 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/12/10 PHP
php短信接口代码
2016/05/13 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
Canvas实现放射线动画效果
2017/02/15 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
Python logging模块学习笔记
2014/05/24 Python
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
Python实现telnet服务器的方法
2015/07/10 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
Python人脸识别初探
2017/12/21 Python
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
Exception类的常用方法
2012/06/16 面试题
2014年办公室工作总结范文
2014/11/12 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
Python中else的三种使用场景
2021/06/16 Python
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android
vue实现移动端div拖动效果
2022/03/03 Vue.js