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 相关文章推荐
在线短消息收发的程序,不用数据库
Oct 09 PHP
PHP4实际应用经验篇(9)
Oct 09 PHP
PHP 中dirname(_file_)讲解
Mar 18 PHP
在JavaScript中调用php程序
Mar 09 PHP
php导入导出excel实例
Oct 25 PHP
php开启openssl的方法
May 15 PHP
ZF框架实现发送邮件的方法
Dec 03 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
PHP单链表的实现代码
Jul 05 PHP
iOS10推送通知开发教程
Sep 19 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
Feb 15 PHP
PHP生成(支持多模板)二维码海报代码
Apr 30 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
php4的session功能评述(一)
2006/10/09 PHP
javascript 小型动画组件与实现代码
2010/06/02 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
Python pass详细介绍及实例代码
2016/11/24 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
python简单实现最大似然估计&amp;scipy库的使用详解
2020/04/15 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
python对execl 处理操作代码
2020/06/22 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
毕业生面试求职信
2014/06/23 职场文书
北大自主招生自荐信
2015/03/04 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
详解Python requests模块
2021/06/21 Python
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android