今天是:   欢迎访问通信维护技术行业的门户网站!  
设为首页
加入收藏
网站地图
首页 > 网站建设 > 源代码 >
分享到: 收藏

php如何实现验证码
2015-12-27 10:58:00   来源:   评论:0 点击:

验证码在表单实现越来越多了,但是用js的写的验证码,总觉得不方便,所以学习了下php实现的验证码。好吧,其实是没有事情干,但是又不
 
php如何实现验证码
  验证码在表单实现越来越多了,但是用js的写的验证码,总觉得不方便,所以学习了下php实现的验证码。好吧,其实是没有事情干,但是又不想浪费时间,所以学习了下php实现验证码。正所谓,技多不压身。而且,也可以封装成一个函数,以后使用的时候也是很方便的,当然现在未封装。

  现在来说说简单的纯数字验证码吧。

  如果是初学者,建议按照我代码的注释 //数字  一步步来。最简单的方法,还是把整个代码复制走了。

    新建一个captcha.php:



php
    //10>设置session,必须处于脚本最顶部
    session_start();

   
$image = imagecreatetruecolor(100, 30);        //1>设置验证码图片大小的函数
    //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue);

    $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff
    //6>区域填充 int imagefill(int im, int x, int y, int col)  (x,y) 所在的区域着色,col 表示欲涂上的颜色

    imagefill($image, 0, 0, $bgcolor);
   
//10>设置变量
    $captcha_code = "";
   
//7>生成随机数字
    for($i=0;$i<4;$i++){
       
//设置字体大小
        $fontsize = 6;       
       
//设置字体颜色,随机颜色
        $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));            //0-120深颜色
        //设置数字

        $fontcontent = rand(0,9);
       
//10>.=连续定义变量
        $captcha_code .= $fontcontent;   
       
//设置坐标
        $x = ($i*100/4)+rand(5,10);
       
$y = rand(5,10);

        imagestring(
$image,$fontsize,$x,$y,$fontcontent,$fontcolor);
    }
   
//10>存到session
    $_SESSION['authcode'] = $captcha_code;
   
//8>增加干扰元素,设置雪花点
    for($i=0;$i<200;$i++){
       
//设置点的颜色,50-200颜色比数字浅,不干扰阅读
        $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));       
       
//imagesetpixel — 画一个单一像素
        imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);
    }
   
//9>增加干扰元素,设置横线
    for($i=0;$i<4;$i++){
       
//设置线的颜色
        $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));
       
//设置线,两点一线
        imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor);
    }

   
//2>设置头部,image/png
    header('Content-Type: image/png');
   
//3>imagepng() 建立png图形函数
    imagepng($image);
   
//4>imagedestroy() 结束图形函数  销毁$image
    imagedestroy($image);

接着就是静态页的代码了:index.html


doctype html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>确认验证码title>
    head>
    <body>
        <form method="post" action="./form.php">
            <p>验证码: <img id="captcha_img" border='1' src='./captcha.php?r={C}{C}echo rand(); ?>' style="width:100px; height:30px" />
               
<a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个?a>
            p>
            <P>请输入验证码:<input type="text" name='authcode' value=''/>p>
            <p><input type='submit' value='提交' style='padding:6px 5px;'/>p>   
    body>
html>


从index.html可以看到,提交的表单是到form.php的,所以还要有一个判断的form.php代码:

php
    header("Content-Type:text/html;charset=utf-8");            //设置头部信息
    //isset()检测变量是否设置

    if(isset($_REQUEST['authcode'])){
       

相关热词搜索:php如何实现验证码

上一篇:phpcmsv9 独立幻灯片管理模块
下一篇:V9幻灯标签