• 技术文章 >php教程 >php手册

    php 中文与英文验证码程序代码

    2016-06-13 11:23:28原创634
    php教程 中文与英文验证码程序代码

    //英文验证码相对简单,不要作hex处理,直接用色彩值就OK了。如果
    session_start();
    function rand_create()
    {
    //通知浏览器将要输出PNG图片
    Header("Content-type: image/PNG");
    //准备好随机数发生器种子
    srand((double)microtime()*1000000);
    //准备图片的相关参数
    $im = imagecreate(62,22);
    $black = ImageColorAllocate($im, 0,0,0); //RGB黑色标识符
    $white = ImageColorAllocate($im, 255,255,255); //RGB白色标识符
    $gray = ImageColorAllocate($im, 200,200,200); //RGB灰色标识符
    //开始作图
    imagefill($im,0,0,$gray);
    while(($randval=rand()%100000)<10000);{
    $_SESSION["Auth_code"] = $randval;
    //将四位整数验证码绘入图片
    imagestring($im, 5, 10, 3, $randval, $black);
    }
    //加入干扰象素
    for($i=0;$i<200;$i++){
    $randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
    imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
    }
    //输出验证图片
    ImagePNG($im);
    //销毁图像标识符
    ImageDestroy($im);
    }
    rand_create();

    //调用方法

    //中文验证码程序如下

    Header("Content-type: image/PNG");
    $str = "这里设置一中文如果中国WEB第一站www.bkjia.com";
    $imagesW = 140;
    $imagesH = 40;
    //
    $Auimg = imagecreate($imagesW,$imagesH);
    $bgc = ImageColorAllocate($Auimg,255,255,255);
    $font = "heiti.ttf";//这里设置字体,你可以随便下载一款字体哦。
    $white=imagecolorallocate($Auimg,234,185,95);
    imagearc($Auimg, 150, 8, 20, 20, 75, 170, $white);
    imagearc($Auimg, 180, 7,50, 30, 75, 175, $white);
    imageline($Auimg,20,20,180,30,$white);
    imageline($Auimg,20,18,170,50,$white);
    imageline($Auimg,25,50,80,50,$white);
    $noise_num = 800;
    $line_num = 20;
    imagecolorallocate($Auimg,0xff,0xff,0xff);
    $rectangle_color=imagecolorallocate($Auimg,0xAA,0xAA,0xAA);
    $noise_color=imagecolorallocate($Auimg,0x00,0x00,0x00);
    $font_color=imagecolorallocate($Auimg,0x00,0x00,0x00);
    $line_color=imagecolorallocate($Auimg,0x00,0x00,0x00);
    for($i=0;$i<$noise_num;$i++){
    imagesetpixel($Auimg,mt_rand(0,$imagesW),mt_rand(0,$imagesH),$noise_color);
    }
    for($i=0;$i<$line_num;$i++){
    imageline($Auimg,mt_rand(0,$imagesW),mt_rand(0,$imagesH),mt_rand(0,$imagesW),mt_rand(0,$imagesH),$line_color);
    }
    $mtRnd=rand(0,strlen($str)-4);
    if($mtRnd%2)$mtRnd+=1;
    $str = substr($str,$mtRnd,8);
    $str = iconv("GB2312","UTF-8",$str);
    ImageTTFText($Auimg, 20, 0, 16, 30, $font_color, $font, $str);
    ImagePNG($Auimg);
    ImageDestroy($Auimg);
    /*
    共同点就是验证码都借助于其它容器来保存如session,cookie等,否则就没有验证的意义了
    本文章由www.bkjia.com整,转载请注明来源谢谢合作。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php 将火车头采集db3数据导入到dedecms完整代码 下一篇:php创建目录,删除文件夹及查找不合法的目录并删除
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• PHP过滤器的实现方法第1/2页• php自动跳转中英文页面• 投票管理程序_php基础• 实现分十页分向前十页向后十页的处理_php基础• PHP数据库操作之基于 Mysqli 的数据库操作类库
    1/1

    PHP中文网