加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-06-24 15:35:12 所属栏目:PHP教程 来源:互联网
导读:本文实例讲述了PHP 图像处理与SESSION制作超简单验证码的方法,分享给大家供大家参考,具体如下: 验证码的实现 首先我们要清楚,无论是做什么东西,在做之前一定要有思路,譬如这个验证码里他有些什么,为了实现它我们该做些什么,怎么样去做。 这里我例举
  本文实例讲述了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);//输出整个图片
 
  到这里,我们的验证码功能基本上已经实现的差不多了,内容获取到了,横线和点点等干扰因素也有了。如果需要添加到登录页面可自行发挥。
 
 

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!