PHP 图像处理与SESSION制作超简单验证码的方法示例
发布:smiling 来源: PHP粉丝网 添加日期:2022-01-25 20:30:47 浏览: 评论:0
本文实例讲述了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);//输出整个图片
到这里,我们的验证码功能基本上已经实现的差不多了,内容获取到了,横线和点点等干扰因素也有了。如果需要添加到登录页面可自行发挥。
Tags: SESSION PHP图像验证码
- 上一篇:详解no input file specified 三种解决方法
- 下一篇:最后一页
相关文章
- ·PHP session_encode()和 session_decode()(2014-03-05)
- ·日期、表单接收、session、cookie(2014-06-04)
- ·phpmyadmin报错:Cannot start session without errors问题(2014-09-21)
- ·php怎么用session?PHP Session变量的使用方法(2018-07-12)
- ·php $_SESSION会员登录实例分享(2019-11-05)
- ·php环境下利用session防止页面重复刷新的具体实现(2020-08-25)
- ·PHP中使用memcache存储session的三种配置方法(2020-11-05)
- ·PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法(2020-11-25)
- ·PHP中设置一个严格30分钟过期Session面试题的4种答案(2021-03-27)
- ·PHP利用MySQL保存session的实现思路及示例代码(2021-04-11)
- ·php使用$_POST或$_SESSION[]向js函数传参(2021-04-12)
- ·CI框架Session.php源码分析(2021-04-22)
- ·php中使用session_set_save_handler()函数把session保存到MySQL数据库实例(2021-04-24)
- ·php提示Failed to write session data错误的解决方法(2021-05-03)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)