php验证码zhuc_php 验证码生成方法 及使用
基本思路是:
在生成图片的页面中(as:
yzm.php)
1。设置生成的图片的宽度和高度;
2。设置图片要写入的字符;
3。截取显示在图片上的字符;
4.开启session,把上面截取的字符存放在session中,用session返回的值与填写的验证码是否相同;
5。用imagecreate()生成图片;
6。给上面生成的图片绘色,用imagecollorallocate(),第一次调用即为图片的底色;
7。再次用imagecollorallocate()定义要用到的颜色;
8。用imagestring()给生成的图片填充一些字符;
9。再用imagestring()给生成的图片写上上面截取的字符
10。用imagerectangle()给生成的图片画一个矩形
11。用header()指定输出的内容格式;
12。用imagepng等函数输出上面的图片;
13。用imageDestroy()
等函数销毁生成的图片
在调用上面生成的图片的表单用调用方法:
1。在表单用设置
title="xxx" id="refresh" src="yzm.php"
οnclick="document.getElementById('refresh').src='yzm.php?t='+Math.random()"
/>
其中,里面的属性具体为:
style:设置鼠标放上去显示的鼠标状态;
title:鼠标在上面时显示的提示语;
id:用于JS脚本以便宜方便刷新;
src:包含的就是一幅图片,此时包含的是验证码的处理面,里面已经生成了图片了(相当于就是一幅图片);
提交时先用js在当前页面验证是否验证码框为空,再在提交页面处理填写的验证码字符是不是与session中相同即可通过了验证
yzm.php
//如果浏览器显示“图像XXX因其本身有错无法显示”,可尽量去掉文中空格
//先成生背景,再把生成的验证码放上去
$img_height=70;//先定义图片的长、宽
$img_width=25;
$authnum='';
//生产验证码字符
$ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
$list=explode(",",$ychar);
for($i=0;$i<4;$i++){
$randnum=rand(0,35);
$authnum.=$list[$randnum];
}
//把验证码字符保存到session
session_start();
$_SESSION["login_check_number"]
= $authnum;
$aimg = imagecreate($img_height,$img_width);
//生成图片
imagecolorallocate($aimg, 255,255,255);
//图片底色,ImageColorAllocate第1次定义颜色PHP就认为是底色了
$black = imagecolorallocate($aimg,
0,0,0); //定义需要的黑色
for ($i=1; $i<=100; $i++) {
imagestring($aimg,1,mt_rand(1,$img_height),mt_rand(1,$img_width),"@",imagecolorallocate($aimg,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));
}
//为了区别于背景,这里的颜色不超过200,上面的不小于200
for
($i=0;$i
imagestring($aimg,
mt_rand(5,6),$i*$img_height/4+mt_rand(2,3),mt_rand(1,$img_width/2-2),
$authnum[$i],imagecolorallocate($aimg,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));
}
imagerectangle($aimg,0,0,$img_height-1,$img_width-1,$black);//画一个矩形
Header("Content-type:
image/PNG");
ImagePNG($aimg);
//生成png格式
ImageDestroy($aimg);
?>
填写页面
session_start();
?>
/p>
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
xmlns="http://www.w3.org/1999/xhtml">
111111
function
check(form){
if(form.verify.value == ""){
alert("Not all empty!");
form.verify.select();
return
false;
}
}
method='post' action='2.php' onSubmit="return check(this)">
type='text' name='verify'>
id="refresh" border='0'
src='yzm.php'
οnclick="document.getElementById('refresh').src='yzm.php?t='+Math.random()"/>
type='submit'>确定
id="yzm">
处理表单页面
2.php
session_start();
if(strtolower($_SESSION['login_check_number'])
!= strtolower($_POST['verify'])){
///
}else{
}
?>
php验证码zhuc_php 验证码生成方法 及使用相关推荐
- python动态验证码_Python 模拟生成动态产生验证码图片的方法
模拟动态产生验证码图片 模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理.这里介绍一下 Python 提供的 Pillow 模块. Pillow PIL:Python Image L ...
- java jsp验证码_JSP验证码简单生成方法
本文实例讲述了JSP验证码简单生成方法.分享给大家供大家参考.具体如下: Color getRandColor(int fc,int bc){//给定范围获得随机颜色 Random random = ...
- MySQL中如何随机产生验证码,MySQL 生成随机数字 UUID MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法...
想了解MySQL 生成随机数字.字符串.日期.验证码及 UUID的方法的相关内容吗,不剪发的Tony老师在本文为您仔细讲解MySQL 生成随机数字 UUID的相关知识和一些Code实例,欢迎阅读和指正 ...
- java生成验证码的三种方法
java生成验证码的三种方法 第一种:导入jar包com.github.axet生成法 ①导包 <dependency><groupId>com.github.axet< ...
- dede 验证码不显示 vdimgck.php,Dede后台验证码不显示解决方法详解(dedecms 5.7)
本地与服务器上安装了dedecms5.7无法显示验证码,一般这种情况很少见,一般情况就是服务器设置问题,还有临时目录的权限问题. Dede后台验证码不显示或不正常分三种情况,下面来逐一分析 Dede后 ...
- javaweb登录界面验证码自动生成,点击重新生成验证码,验证码与输入框的校验
当进入登录界面时,验证码图片自动生成,验证码图片颜色随机,字母颜色随机,该代码只是随机生成小写英文字母,没有设置大写字母和数字 点击验证码图片重新生成验证码 验证码输入错误时,提示出来 验证码输入正确 ...
- Dede后台验证码不显示解决方法详解
1检查看看有没有开启gd,用<?php phpinfo();?>检查. 2在include/common.inc.php打开错误报告error_reporting(E_ALL); // 报 ...
- dedecms教程:后台验证码不显示解决方法
Dede后台验证码不显示解决方法 ,很多时候dedecms网站后台的验证码不显示,验证码不显示网站后台就没法登陆,常见的验证码后台不显示的情况有以下三种: Dede后台验证码不显示情况一 Dede后台 ...
- Dede后台验证码不显示解决方法详解(dedecms 5.7 UTF-8版本)
织梦(dede)后台验证码不显示有多种可能性,我前几天测试就碰到了这个问题,结果百度搜索了一圈,挨个修改了下,还是不行,最后是在解决另外一个后台上传图片不成功的问题的时候,歪打正着的把验证码问题给解决 ...
最新文章
- AI中pass架构设计优化
- 如何解决ajax重复提交的问题
- 基于WINCE6.0下载multiple XIP镜像文件
- SQL Server 2000订阅与发布的具体操作
- Go语言学习Day02
- python中pep8规范_Python PEP8规范
- Git中如何利用生成SSH个人公钥访问git仓库
- 剑指offer之正则表达式匹配
- 计算机组成原理—虚拟存储器的基本概念
- 3.C++深入理解 面向对象部分2
- NLP学习—14.Pointer Generator Network(指针)及代码实现
- mysql 使用内置函数来进行模糊搜索(locate()等)
- 【狂神说Redis】2Redis入门 2-3测试性能
- sublime添加到右键的注册表文件
- 使用Postman工具进行简单的Get/Post测试
- OpenCV-python安装教程
- Linux 服务器进行安全加固,防止黑客攻击
- 经典Bug永流传---每周一“虫”(二十一)
- 扒一扒那些叫欧拉的定理们(七)——欧拉线定理的证明
- 微信小程序开发笔记1——使用npm脚本实现自动化切换环境配置