03776,专注php入门案例

 找回密码
 免费注册

QQ登录

只需一步,快速开始

搜索
热搜: 验证码
查看: 2297|回复: 2

PHP入门级学习实例:简单易懂的表单验证码功能,php验证码

[复制链接]

61

主题

0

好友

317

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2012-11-26 00:25:43 |显示全部楼层
===== 欢迎来到 http://up.03776.cn 专注php入门级的功能实例讲解。欢迎登陆网站交流互动 =====

一、本压缩包介绍表单提交时的验证码功能的原理和代码实现。
        1. 什么是验证码?
        验证码功能由四部分组成。
        第一步,建立一个php文件verify.php。先用php的随机函数,比如rand(),生成一个随机数$random。把这个随机数存入SESSION,也就是生成一个叫random的SESSION。如:$_SESSION['random'] = $randmo;
        第二步,(还是在verify.php这个文件里,接着刚才的代码往下写。)用php的函数生成一张图片,图片里显示刚才生成的随机数。用php的header()函数修改verify.php页面输出的header信息,也就是当verify.php被访问时,告诉浏览器,我一张图片(是的,没错!你访问的是个php文件,但是看到的是一个图片,是用php的图片函数生成的带随机数的图片)。
        
        插一句题外话:经过第二步之后,如果我们这个时候在一个html页面里,显示一张图片,图片的src属性(也就是图片地址)指向刚才创建的verify.php,这个时候页面里也会显示一张包含随机数的图片。

        第三步,通常说的验证码是在html页面里和form表单一起显示出来的一张图片,图片上显示随机生成的4个字母和数字,同时有一个input输入框,用来输入验证码图片里的内容。比如我们有个zhuce.html页面,里面有个注册用的form表单,包含了图片验证码。在这个表单提交时,用来输入验证码图片里内容的input框里输入的内容也被提交给php接收页面,比如例子里我们的接收页面叫做save.php。

        第四步,在php的接收文件save.php里,接收到了刚才zhuce.html页面提交过来的所有内容。比如例子里的$_POST['verify'],接收的就是zhuce.html页面提交过来的验证码输入框里的内容。 记不记得第一步生成的那个随机数$random。那是在verify.php页面生成的,在save.php页面里当然没有办法用到那个变量。但是我们还有一步操作,我们还把$random的值放入了全局变量$_SESSION里,这个变量不管我们在哪个php页面里都可以直接用,很方便。所以可以从$_SESSION里取到我们程序生成的随机数$_SESSION['random']。 拿$_SESSION['random']和$_POST['verify']比较,就知道用户提交过来的验证码对不对了。聪明的你,明白了吗?

        2. 再来说说为什么使用验证码?
        主要是用来防止机器恶意注册,增加恶意注册、恶意内容产生的难度,减少网站里的垃圾信息。

如果觉得这个例子对你有帮助,请到网站上去投票支持一个!对于php验证码有什么疑问,也欢迎到这里来提问~
verifycode.zip (5.49 KB, 下载次数: 2526)
二楼是压缩包里文件列表和各文件功能介绍。php入门实例。

单选投票, 共有 0 人参与投票
0.00% (0)
0.00% (0)
0.00% (0)
0.00% (0)
您所在的用户组没有投票权限
李小龙:“I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times.”
(我不怕遇到练习过10000种腿法的对手,但害怕遇到只将一种腿法练习10000次的强敌。)
回复

使用道具 举报

61

主题

0

好友

317

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2012-11-26 00:26:30 |显示全部楼层

三、压缩包各功能介绍:

        1、zhuce.html - 用来演示验证码的Html注册页面,里面有一个注册用的form表单,form表单里包含着一张带随机数的验证码图片;

        2、verify.php - 生成随机数并把随机数放入$_SESSION全局变量,接着生成一张包含这个随机数图片并输出;

        3、save.php - 负责接收从zhuce.html页面里的表单提交过来内容,并拿提交过来的验证码的值和全局变量里存的验证码比较,判断提交的是否正确;


四、In learning we trust! 学习是一种信仰! 欢迎php爱好者、从业者来 http://up.03776.cn 交流php学习经历!
李小龙:“I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times.”
(我不怕遇到练习过10000种腿法的对手,但害怕遇到只将一种腿法练习10000次的强敌。)
回复

使用道具 举报

61

主题

0

好友

317

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2012-11-26 00:41:35 |显示全部楼层

附:我们最常见的验证码+验证码图片生成过程

1,四位数字,随机的一数字字符串,最原始的验证码,验证作用几乎为零。
2,随机数字图片验证码。图片上的字符比较中规中矩,有的可能加入一些随机干扰素,还有一些是随机字符颜色,验证作用比上一个好。没有基本图形图像学知识的人,不可破!
3,各种图片格式的随机数字+随机大写英文字母+随机干扰像素+随机位置。
4,汉字是注册目前最新的验证码,随机生成,打起来更难了,影响用户体验,所以,一般应用的比较少。

一般验证码生成过程如下:
1,生成随机数的几种方法
        a. 用for循环确定生成几个随机数。
        b. 用随机函数生成范围内随机数。例如rand(1,15),生成1到15之间的数字。
        c. 用16位进制函数把生成数字字母化。dechex(rand(1,15))。
        d. 用.=运算来保存几个数字。
把生成好的随机数放到$_SESSION[变量]。等将来跟用户提交的内容比较。
2,创建图片
用图片创建函数确定,所创建的图片大小。
例如$im = imagecreatetruecolor(100,30);其中坐标100,30是以网页左上角为原点,$im为图片变量了。
3,设置颜色
使用函数 创建背景色。例如$bg = imagecolorallocate($im,0,0,0);其中0,0,0是三原色数字,$im为上面创建的图片
使用函数 创建字体色。例如$te = imagecolorallocate($im,255,255,255);
4,把字符写在图像左上角
使用函数 imagestring()吧字符写在图像。例如imagestring($im,5,0,0,$rand,$te);$im为上面创建的图片,5是显示方式,0,0
是坐标,$te是字体颜色
5,输出图像
使用函数 header("Content-type:image/jpeg");imagejpeg($im);输出图像。

----------------------------------华丽丽的分割线---------------------------
1,开启session功能;例如session_start();
2,写表单
3,表单提交的验证码 数据 与上面的$_SESSION[变量]比较
相等,验证正确。
不相等,则错误。
李小龙:“I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times.”
(我不怕遇到练习过10000种腿法的对手,但害怕遇到只将一种腿法练习10000次的强敌。)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

手机版|在博客与论坛间短暂徘徊ing……

GMT+8, 2017-11-24 02:42 , Processed in 0.078096 second(s), 31 queries .

强劲动力 Discuz! X3.0 Beta

© 2012-2115 03776.CN

回顶部