基本思路是:

在生成图片的页面中(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 验证码生成方法 及使用相关推荐

  1. python动态验证码_Python 模拟生成动态产生验证码图片的方法

    模拟动态产生验证码图片 模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理.这里介绍一下 Python 提供的 Pillow 模块. Pillow PIL:Python Image L ...

  2. java jsp验证码_JSP验证码简单生成方法

    本文实例讲述了JSP验证码简单生成方法.分享给大家供大家参考.具体如下: Color getRandColor(int fc,int bc){//给定范围获得随机颜色 Random random = ...

  3. MySQL中如何随机产生验证码,MySQL 生成随机数字 UUID MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法...

    想了解MySQL 生成随机数字.字符串.日期.验证码及 UUID的方法的相关内容吗,不剪发的Tony老师在本文为您仔细讲解MySQL 生成随机数字 UUID的相关知识和一些Code实例,欢迎阅读和指正 ...

  4. java生成验证码的三种方法

    java生成验证码的三种方法 第一种:导入jar包com.github.axet生成法 ①导包 <dependency><groupId>com.github.axet< ...

  5. dede 验证码不显示 vdimgck.php,Dede后台验证码不显示解决方法详解(dedecms 5.7)

    本地与服务器上安装了dedecms5.7无法显示验证码,一般这种情况很少见,一般情况就是服务器设置问题,还有临时目录的权限问题. Dede后台验证码不显示或不正常分三种情况,下面来逐一分析 Dede后 ...

  6. javaweb登录界面验证码自动生成,点击重新生成验证码,验证码与输入框的校验

    当进入登录界面时,验证码图片自动生成,验证码图片颜色随机,字母颜色随机,该代码只是随机生成小写英文字母,没有设置大写字母和数字 点击验证码图片重新生成验证码 验证码输入错误时,提示出来 验证码输入正确 ...

  7. Dede后台验证码不显示解决方法详解

    1检查看看有没有开启gd,用<?php phpinfo();?>检查. 2在include/common.inc.php打开错误报告error_reporting(E_ALL); // 报 ...

  8. dedecms教程:后台验证码不显示解决方法

    Dede后台验证码不显示解决方法 ,很多时候dedecms网站后台的验证码不显示,验证码不显示网站后台就没法登陆,常见的验证码后台不显示的情况有以下三种: Dede后台验证码不显示情况一 Dede后台 ...

  9. Dede后台验证码不显示解决方法详解(dedecms 5.7 UTF-8版本)

    织梦(dede)后台验证码不显示有多种可能性,我前几天测试就碰到了这个问题,结果百度搜索了一圈,挨个修改了下,还是不行,最后是在解决另外一个后台上传图片不成功的问题的时候,歪打正着的把验证码问题给解决 ...

最新文章

  1. AI中pass架构设计优化
  2. 如何解决ajax重复提交的问题
  3. 基于WINCE6.0下载multiple XIP镜像文件
  4. SQL Server 2000订阅与发布的具体操作
  5. Go语言学习Day02
  6. python中pep8规范_Python PEP8规范
  7. Git中如何利用生成SSH个人公钥访问git仓库
  8. 剑指offer之正则表达式匹配
  9. 计算机组成原理—虚拟存储器的基本概念
  10. 3.C++深入理解 面向对象部分2
  11. NLP学习—14.Pointer Generator Network(指针)及代码实现
  12. mysql 使用内置函数来进行模糊搜索(locate()等)
  13. 【狂神说Redis】2Redis入门 2-3测试性能
  14. sublime添加到右键的注册表文件
  15. 使用Postman工具进行简单的Get/Post测试
  16. OpenCV-python安装教程
  17. Linux 服务器进行安全加固,防止黑客攻击
  18. 经典Bug永流传---每周一“虫”(二十一)
  19. 扒一扒那些叫欧拉的定理们(七)——欧拉线定理的证明
  20. 微信小程序开发笔记1——使用npm脚本实现自动化切换环境配置

热门文章

  1. OMG!Java面试题库app下载
  2. 专访Alan Clark:迎接更加开放的开源大时代
  3. 中科院考研经历③--阶段总结及暑假计划
  4. jsp和 serlvet总和
  5. 重审新消费品牌的长远发展
  6. 中国数字中台行业研究报告(2019艾瑞)笔记
  7. ChatGPT炒股:自动批量下载萝卜投研网站上的股票研报
  8. 你的身份信息已失效,请重新输入密码登录
  9. Bug 堆积如山,GIF 录制神器被官宣弃用!
  10. 〖Python接口自动化测试实战篇⑧〗- 小案例 - 使用python实现接口请求 [查询天行数据]