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 高手之路(二)
Oct 09 PHP
PHP4中session登录页面的应用
Jul 25 PHP
php中随机显示图片的函数代码
Jun 23 PHP
php图片上传存储源码并且可以预览
Aug 26 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
PHP获取当前日期和时间及格式化方法参数
May 11 PHP
在Mac上编译安装PHP7的开发环境
Jul 28 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
laravel实现上传图片的两种方式小结
Oct 12 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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开发框架的对比
2013/07/05 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
Angular.js去除页面中显示的空行方法示例
2017/03/30 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
Python之reload流程实例代码解析
2018/01/29 Python
python监控进程脚本
2018/04/12 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
用python实现名片管理系统
2020/06/18 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
就业自荐书
2013/12/05 职场文书
大学生实习感言
2014/01/16 职场文书
经营理念标语
2014/06/21 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
考研复习计划
2015/01/19 职场文书
文体活动总结
2015/02/04 职场文书
幼儿园开学通知
2015/04/24 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
尝试使用Python爬取城市租房信息
2022/04/12 Python
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers