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简单命令代码集锦
Sep 24 PHP
PHP中常用数组处理方法实例分析
Aug 30 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
Apr 17 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
基于PHP 面向对象之成员方法详解
May 04 PHP
测试php连接mysql是否成功的代码分享
Jan 24 PHP
ThinkPHP之getField详解
Jun 20 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
给大家分享几个常用的PHP函数
Jan 15 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 PHP
详解PHP swoole process的使用方法
Aug 26 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中SSO Cookie登录分析和实现
2015/11/06 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
node.js Web应用框架Express入门指南
2014/05/28 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
Python自动生产表情包
2017/03/17 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
铭立家具面试题
2012/12/06 面试题
学徒工职责
2014/03/06 职场文书
新教师岗前培训方案
2014/06/05 职场文书
普宁寺导游词
2015/02/04 职场文书
介绍信格式样本
2015/05/05 职场文书
2015年暑假工作总结
2015/07/13 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP
vue+echarts实现多条折线图
2022/03/21 Vue.js
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python