验证码是一个现在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");
-
-
- session_start();
- authnum_session = '';
- str = 'abcdefghijkmnpqrstuvwxyz1234567890';
-
- l = strlen(str);
-
- for(i=1;i<=4;i++)
- {
- num=rand(0,l-1);
-
-
- authnum_session.= str[num];
-
- }
- session_register("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++)
- {
- 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);
- }
- ImagePNG(im);
- ImageDestroy(im);
- ?>
以上代码,参考了如下的文章,用php生成带有雪花背景的验证码.
2、调用验证码的页面 sessionValidate.php,代码如下:
- <?php
- session_start();
-
-
- session_destroy();
-
-
- ?>
- <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
-
- 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"]){
-
- echo "<font color=red>输入有误</font>";
- }else{
- echo "<font color=green>通过验证</font>";
- }
- }
-
-
-
-
-
-
-
-
-
- ?>
|