PHP 图像处理与SESSION制作超简单验证码的方法示例

吾爱主题 阅读:133 2021-09-22 16:30:00 评论:0

本文实例讲述了PHP 图像处理与SESSION制作超简单验证码的方法。分享给大家供大家参考,具体如下:

验证码的实现

首先我们要清楚,无论是做什么东西,在做之前一定要有思路,譬如这个验证码里他有些什么,为了实现它我们该做些什么,怎么样去做。

这里我例举出几个点。

1.验证码肯定要有内容。
2.验证码里肯定要有干扰信息,就譬如,线条干扰和点点干扰。

那么为了实现他们我们该如何做呢?

第一步,创建一个名为captcha.php的文件

在里面输入

?
1 2 3 4 5 6 7 8 9 <?php session_start(); //开启会话 header( "Content-type:image/png" ); //定义为图片 $im = imagecreatetruecolor(100,30); //创建一个画布的大小 $color = imagecolorallocate( $im , 255, 255, 255); //填充背景颜色 imagefill( $im ,0,0, $color ); //填充$color颜色于$im画板区域从左上角0,0开始 $content = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" ; //验证码内容 $fontsize = "6" ; //字体大小 $ragcha = "" ; //声明一个空变量,接受验证码内容并保存

这个时候,验证码的一些基本东西我们都完成了,定义了验证码的宽高,背景色验证码内容,验证码字体大小,和一个接受验证码的变量,就该做第二步了。

第二步,获取验证码内容

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 for ( $i =0; $i < 4; $i ++) {   //截取字符串   $char = substr ( $content ,rand(0, strlen ( $content )-1),1);   //把得到的内容输入到ragcha里   $ragcha = $ragcha . $char ;   //设置x轴与y轴的坐标   $x = $i *(100/4) + rand(5,15);   $y = rand(5,10);   //设置验证码内容颜色   $fontcolor = imagecolorallocate( $im ,rand(0,120),rand(0,120),rand(0,120));   //输出   imagestring( $im , $fontsize , $x , $y , $char , $fontcolor ); } //保证验证码内容不丢失 $_SESSION [ "ragcha" ] = $ragcha ;

在这里我们设置了$i的变量不能大于四,然后用他乘以(100/4),保证他的的值不会大过100,再加上rand函数里随机抽取5-15里的数值,使其的x轴坐标范围保证在(5-90)之间,y轴的坐标保证在(5-10)之间,使其大概率的保证了内容显示的范围居中

第三步,设置干扰因素

我们要明白,在验证码里有什么干扰因素,再想办法把它呈现出来。如下

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 //设置干扰因素 //1.画线条 for ( $g =0; $g < 3; $g ++) {   //设置线条颜色   $line = imagecolorallocate( $im , rand(50,100), rand(50,100), rand(50,100));   //输出线条   imageline( $im ,rand(0,99),rand(0,19),rand(0,99),rand(0,19), $line ); } //2.给背景加点点 for ( $r =0; $r < 300; $r ++) {   //设置点点颜色   $point = imagecolorallocate( $im , rand(20,180), rand(20,180), rand(20,180));   //输出点点   imagesetpixel( $im , rand(0,100), rand(0,30), $point ); } imagepng( $im ); //输出整个图片

到这里,我们的验证码功能基本上已经实现的差不多了,内容获取到了,横线和点点等干扰因素也有了。如果需要添加到登录页面可自行发挥。

希望本文所述对大家PHP程序设计有所帮助。

原文链接:https://blog.csdn.net/weixin_44596681/article/details/88864395

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容