用PHP怎样实现带干扰验证码,实现过程是怎样
Admin 2022-06-15 群英技术资讯 946 次浏览
这篇文章主要介绍了用PHP怎样实现带干扰验证码,实现过程是怎样相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇用PHP怎样实现带干扰验证码,实现过程是怎样文章都会有所收获,下面我们一起来看看吧。本文实例讲述了PHP 图像处理与SESSION制作超简单验证码的方法。分享给大家供大家参考,具体如下:
验证码的实现
首先我们要清楚,无论是做什么东西,在做之前一定要有思路,譬如这个验证码里他有些什么,为了实现它我们该做些什么,怎么样去做。
这里我例举出几个点。
1.验证码肯定要有内容。
2.验证码里肯定要有干扰信息,就譬如,线条干扰和点点干扰。
那么为了实现他们我们该如何做呢?
第一步,创建一个名为captcha.php的文件
在里面输入
<?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 = "";//声明一个空变量,接受验证码内容并保存
这个时候,验证码的一些基本东西我们都完成了,定义了验证码的宽高,背景色验证码内容,验证码字体大小,和一个接受验证码的变量,就该做第二步了。
第二步,获取验证码内容
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.画线条
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);//输出整个图片
到这里,我们的验证码功能基本上已经实现的差不多了,内容获取到了,横线和点点等干扰因素也有了。如果需要添加到登录页面可自行发挥。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
(PHP4,PHP5)PHP提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分...
PHP获取图片颜色值,检测图片主要颜色的代码:<?php$i=imagecreatefromjpeg("photo3.jpg");//测试图片,自己定义一个,注意路径for($x=0;$x<imagesx($i);$x++){for($y=0;$y<imagesy($i);$y++){$rgb=imagecolorat($i,$x,
这篇文章给大家分享的是关于laravel框架的组件化开发实现方法的内容,介绍了组件化开发实现的步骤和代码,文本示例具有一定的借鉴价值,对于组件化开不清楚的朋友可以参考学习,下面就跟随小编一起学习吧。
PHP在网站开发中是常见的,而初学者对函数来说有一定的难度,今天小编就给大家带来了PHP开发中字符串截取函数的方法,一起进入下文学习吧!
在thinkphp中,fetch方法用于渲染模板文件输出,该方法不会直接渲染输出,而是支持模板或者内容的标签解析,返回解析后的内容,渲染输出系统也会自动调用send方法进行渲染输出,语法为“$this->fetch(模板名称);”。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008