Maison  >  Article  >  développement back-end  >  PHP验证码生成与验证例子_PHP教程

PHP验证码生成与验证例子_PHP教程

WBOY
WBOYoriginal
2016-07-13 10:47:541201parcourir

验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,下面我们来看常用的验证码生成与使用方法。

1 一个简单的验证码实例

1.1 显示验证码的图片

 代码如下 复制代码

        $num=intval(mt_rand(1000,9999));
    for($i=0 ; $i     {echo "PHP验证码生成与验证例子_PHP教程";}
    ?>

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     {
    $num=rand(0,$word);
    $img = $img."PHP验证码生成与验证例子_PHP教程";
    $pic = $pic.$str[$num];
    }
    >

2.2 将生成的随机字符串赋给一个隐藏域

   

 代码如下 复制代码

2.3 定义一个check()函数

 代码如下 复制代码

   

看一个完整的实例

php 验证码生成与调用的例子,平时开发中经常使用,记录一下。

1、验证码生成文件code.php

 代码如下 复制代码

   
    Header("Content-type:image/png");
    //定义header,声明图片文件,最好是png,无版权之扰;
    //生成新的四位整数验证码
    session_start();//开启session;
    authnum_session = '';
    str = 'abcdefghijkmnpqrstuvwxyz1234567890';
    //定义用来显示在图片上的数字和字母;
    l = strlen(str); //得到字串的长度;
    //循环随机抽取四位前面定义的字母和数字;
    for(i=1;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条干扰线;也可以不要;视情况而定,因为可能影响用户输入;
    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     {//加入干扰象素
    imagesetpixel(im, rand()%70 , rand()%30 , gray);
    }
    ImagePNG(im);
    ImageDestroy(im);
    ?>

以上代码,参考了如下的文章:
php图片验证码
php生成验证码的例子
用php生成带有雪花背景的验证码

2、调用验证码的页面 sessionValidate.php

 代码如下 复制代码

        session_start();
    //在页首先要开启session,
    //error_reporting(2047);
    session_destroy();
    //将session去掉,以每次都能取新的session值;
    //用seesion 效果不错,也很方便
    ?>
   
   


    session 图片验证实例
   
   
    此例为session验证实例
   

    验证码: PHP验证码生成与验证例子_PHP教程

   
   

        //打印上一个session;
    echo "上一个session:"._SESSION["authnum_session"]."
";
    validate="";
    if(isset(_POST["validate"])){
    validate=_POST["validate"];
    echo "您刚才输入的是:"._POST["validate"]."
状态:";
    if(validate!=_SESSION["authnum_session"]){
    //判断session值与用户输入的验证码是否一致;
    echo "输入有误";
    }else{
    echo "通过验证";
    }
    }
    /*
    //打印全部session;
    PrintArr(_SESSION);
    function PrintArr(aArray){
    echo '';<br>     print_r(aArray);<br>     echo '';
    }
    */
    ?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/632824.htmlTechArticle验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网...
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn