PHP验证码生成与验证例子
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-22 09:57:58 浏览: 评论:0
验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,下面我们来看常用的验证码生成与使用方法.
1 一个简单的验证码实例
1.1 显示验证码的图片,代码如下:
- <?php
- $num=intval(mt_rand(1000,9999));
- for($i=0 ; $i<4 ;$i++)
- {echo "<img src=img/yzm/".substr(strval($num),$i,1).".gif/>";}
- ?>
1.2 验证过程,代码如下:
- if (strval($inputyzm)!=strval($num))
- {
- echo "<script>alert('验证码错误!');history.go(-1);</script>";
- exit;
- }
2 一个汉字的验证码实例
2.1 显示验证码的图片,代码如下:
- $str="汉","字","验","证","码"); //可以定义汉字的内容和个数
- $word=strlen($str));
- for ($i=0;$i<4;$i++)
- {
- $num=rand(0,$word);
- $img = $img."<img src='../images/yzm/".$num".gif'/>";
- $pic = $pic.$str[$num];
- }
- >
2.2 将生成的随机字符串赋给一个隐藏域,代码如下:
<input type="hidden" name="yzm" value="<?php echo $pic; ?/>">
2.3 定义一个check()函数,代码如下:
- <script language="javascript">
- function check(form)
- {
- if(form.yzm.value==""){
- alert("请输入验证码");
- form.yzm.focus();
- return false;
- }
- if(form.yzm.vale!=form.yz.value)
- {alert("验证码错误");
- form.yzm.focus();
- return false;
- }
- }
- </script>
看一个完整的实例,php 验证码生成与调用的例子,平时开发中经常使用,记录一下.
1、验证码生成文件code.php,代码如下:
- <?php
- Header("Content-type:image/png");
- //定义header,声明图片文件,最好是png,无版权之扰;
- //生成新的四位整数验证码
- session_start();//开启session;
- authnum_session = '';
- str = 'abcdefghijkmnpqrstuvwxyz1234567890';
- //定义用来显示在图片上的数字和字母;
- l = strlen(str); //得到字串的长度;
- //循环随机抽取四位前面定义的字母和数字;
- for(i=1;i<=4;i++)
- {
- num=rand(0,l-1);
- //每次随机抽取一位数字;从第一个字到该字串最大长度,
- //减1是因为截取字符是从0开始起算;这样34字符任意都有可能排在其中;
- authnum_session.= str[num];
- //将通过数字得来的字符连起来一共是四位;
- }
- session_register("authnum_session");
- //用session来做验证也不错;注册session,名称为authnum_session,
- //其它页面只要包含了该图片
- //即可以通过_SESSION["authnum_session"]来调用
- //生成验证码图片,
- srand((double)microtime()*1000000);
- im = imagecreate(50,20);//图片宽与高;
- //主要用到黑白灰三种色;
- black = ImageColorAllocate(im, 0,0,0);
- white = ImageColorAllocate(im, 255,255,255);
- gray = ImageColorAllocate(im, 200,200,200);
- //将四位整数验证码绘入图片
- imagefill(im,68,30,gray);
- //如不用干扰线,注释就行了;
- li = ImageColorAllocate(im, 220,220,220);
- for(i=0;i<3;i++)
- {//加入3条干扰线;也可以不要;视情况而定,因为可能影响用户输入;
- imageline(im,rand(0,30),rand(0,21),rand(20,40),rand(0,21),li);
- }
- //字符在图片的位置;
- imagestring(im, 5, 8, 2, authnum_session, white);
- for(i=0;i<90;i++)
- {//加入干扰象素
- imagesetpixel(im, rand()%70 , rand()%30 , gray);
- }//开源代码phpfensi.com
- ImagePNG(im);
- ImageDestroy(im);
- ?>
以上代码,参考了如下的文章,用php生成带有雪花背景的验证码.
2、调用验证码的页面 sessionValidate.php,代码如下:
- <?php
- session_start();
- //在页首先要开启session,
- //error_reporting(2047);
- session_destroy();
- //将session去掉,以每次都能取新的session值;
- //用seesion 效果不错,也很方便
- ?>
- <html>
- <head>
- <title>session 图片验证实例</title>
- </head>
- <body>
- 此例为session验证实例
- <form action="" method="post">
- 验证码:<input type="text" name="validate" value="" size=10> <img src="checkNum_session.php"><br>
- <input type="submit">
- </form>
- <?php
- //打印上一个session;
- echo "上一个session:<b>"._SESSION["authnum_session"]."</b><br>";
- validate="";
- if(isset(_POST["validate"])){
- validate=_POST["validate"];
- echo "您刚才输入的是:"._POST["validate"]."<br>状态:";
- if(validate!=_SESSION["authnum_session"]){
- //判断session值与用户输入的验证码是否一致;
- echo "<font color=red>输入有误</font>";
- }else{
- echo "<font color=green>通过验证</font>";
- }
- }
- /*
- //打印全部session;
- PrintArr(_SESSION);
- function PrintArr(aArray){
- echo '<xmp>';
- print_r(aArray);
- echo '</xmp>';
- }
- */
- ?>
Tags: PHP验证码 PHP验证例子
- 上一篇:PHP防注入内容过滤方法
- 下一篇:php正确禁用eval函数与误区介绍
相关文章
- ·php网页生成验证码实现程序(2014-07-30)
- ·简单实例php验证码代码(2014-08-17)
- ·PHP验证码生成程序几种方法(2014-08-22)
- ·PHP验证码实现代码简单示例(2014-08-22)
- ·php验证码程序代码(2014-08-22)
- ·PHP验证码之Ajax验证实现方法(2014-08-22)
- ·php中文汉字验证码程序(2014-08-23)
- ·一个完整php验证码实例程序(2014-08-25)
- ·php 用户登录验证码的实现方法(2014-09-11)
- ·php jquery 验证码代码(2014-09-20)
- ·php验证码生成器(2018-08-06)
- ·一个好用的PHP验证码类实例分享(2020-08-17)
- ·PHP+javascript制作带提示的验证码源码分享(2021-01-15)
- ·php程序总是提示验证码输入有误解决方案(2021-05-07)
- ·php验证码生成代码(2021-06-26)
- ·php验证码的制作思路和实现方法(2021-06-26)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)