建站软件 优化软件 编程软件 网页辅助 站群程序 网站程序 图像处理 资源教程 字体下载 推荐软件


您的位置:首页 > PHP学习 > 用php生成验证码

用php生成验证码

时间:2015-02-02 14:29:02  来源:免费模板网 作者:风雪 阅读次数 tagsphp生成验证码

验证码:验证码一般是防止批量注册的,人眼看起来都费劲,何况是机器。二像百度贴吧未登录发贴要输入验证码大概是防止大规模匿名回帖的发生目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。


由于注册的时候常常会用到注册码来防止机器恶意注册,这里我发表一个产生png图片验证码的基本图像,很简陋但思想很清晰:
1、产生一张png的图片
2、为图片设置背景色
3、设置字体颜色和样式
4、产生4位数的随机的验证码
5、把产生的每个字符调整旋转角度和位置画到png图片上
6、加入噪点和干扰线防止注册机器分析原图片来恶意注册
7、输出图片
8、释放图片所占内存
authcode.php文件


<?php
       
session_start ();
       
header ( 'Content-type: image/png' );
       
//创建图片
        $im = imagecreate($x=130,$y=45 );
       
$bg = imagecolorallocate($im,rand(50,200),rand(0,155),rand(0,155)); //第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色
        $fontColor = imageColorAllocate ( $im, 255, 255, 255 );   //字体颜色
        $fontstyle = 'rock.ttf';                   //字体样式,这个可以从c:\windows\Fonts\文件夹下找到,我把它放到和authcode.php文件同一个目录,这里可以替换其他的字体样式
        //产生随机字符

        for($i = 0; $i < 4; $i ++) {
               
$randAsciiNumArray         = array (rand(48,57),rand(65,90));
               
$randAsciiNum                 = $randAsciiNumArray [rand ( 0, 1 )];
               
$randStr                         = chr ( $randAsciiNum );
                imagettftext(
$im,30,rand(0,20)-rand(0,25),5+$i*30,rand(30,35),$fontColor,$fontstyle,$randStr);
               
$authcode                        .= $randStr;
        }
       
$_SESSION['authcode']        = $randFourStr;//用户和用户输入的验证码做比较
        //干扰线

        for ($i=0;$i<8;$i++){
               
$lineColor        = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
                imageline (
$im,rand(0,$x),0,rand(0,$x),$y,$lineColor);
        }
       
//干扰点
        for ($i=0;$i<250;$i++){
                imagesetpixel(
$im,rand(0,$x),rand(0,$y),$fontColor);
        }
        imagepng(
$im);
        imagedestroy(
$im);               
?>

本文地址:https://www.freemoban.com/php/2015/0202/379.html

猜你喜欢
栏目推荐
模板推荐

Copyright:www.freemoban.com 免费模板网 All Rights Reserved 网站备案:辽ICP备19014872号-2   辽公网安备 21010602000376号  辽公网安备:42900402000182号

免责声明:本站部分资源来自互联网收集,版权归原创者所有,如果侵犯了你的权益,我们会及时删除侵权内容,联系QQ:1615187561 谢谢合作!