加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 机器学习、视觉智能、智能搜索、语音技术、决策智能!
当前位置: 首页 > 编程 > 正文

php制作动态随机验证码步骤

发布时间:2023-12-22 01:40:26 所属栏目:编程 来源:DaWei
导读:   这篇文章主要介绍了php制作动态随机验证码的方法的相关资料,需要的朋友可以参考下

  验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and
  这篇文章主要介绍了php制作动态随机验证码的方法的相关资料,需要的朋友可以参考下
 
  验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。
 
  这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。
 
  Php制作动态验证码是基于php的图像处理,下面首先介绍一下php的图像处理。
 
  一.php图像处理简介
 
  在PHP5中,动态图象的处理要比以前容易得多。PHP5在php.ini文件中包含了GD扩展包,只需去掉GD扩展包的相应注释就可以正常使用了。PHP5包含的GD库正是升级的GD2库,其中包含支持真彩图像处理的一些有用的JPG功能。
 
  一般生成的图形,通过PHP的文档格式存放,但可以通过HTML的图片插入方式SRC来直接获取动态图形。比如,验证码、水印、微缩图等。
 
  创建图像的一般流程:
 
  1).设定标头,告诉浏览器你要生成的MIME类型。
 
  2).创建一个图像区域,以后的操作都将基于此图像区域。
 
  3).在空白图像区域绘制填充背景。
 
  4).在背景上绘制图形轮廓输入文本。
 
  5).输出最终图形。
 
  6).清除所有资源。
 
  7).其他页面调用图像。
 
  第一步,设置文件MIME类型,输出类型 将输出类型改成图像流
 
  代码如下:
  header('Content-Type: image/png;')
 
  一般生成的图像可以是png,jpeg,gif,wbmp
 
  第二步,创建一个图形区域,图像背景
 
  imagecreatetruecolor() 返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像。语法:resource imagecreatetruecolor ( int $width , int $height )
 
  代码如下:
  $im = imagecreatetruecolor(200,200);

  第三步,在空白图像区域绘制填充背景
 
  要有颜色填充器;imagecolorallocate -- 为一幅图像分配颜色;语法:int imagecolorallocate ( resource $image , int $red , int $green , int $blue )
 
  imagestring() 用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果font 是 1,2,3,4 或 5,则使用内置字体。语法:bool imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )
 
  代码如下:
  imagestring($im,5,66,20,'jingwhale',$white);
 
  第五步,输出最终图形
 
  imagepng() 将 GD 图像流(image)以 PNG 格式输出到标准输出(通常为浏览器),或者如果用 filename 给出了文件名则将其输出到该文件。语法:bool imagepng ( resource $image [, string $filename 
 
  代码如下:
  imagepng($im);
 
  第六步,我要将所有的资源全部清空
 
  imagedestroy() 释放与 image 关联的内存。语法:bool imagedestroy ( resource $image )

  二.创建动态验证码
 
  附:代码源地址https://github.com/CuoXin-/php-captcha
 
  1. 创建带验证码的图片,并模糊背景
 
  随机码采用16进制;模糊背景即在图片背景加上线条、雪花等。
 
  1)创建随机码
 
  代码如下:
  for ($i=0;$i<$_rnd_code;$i++) {
  $_nmsg .= dechex(mt_rand(0,15));
  }
  string dechex ( int $number ),返回一字符串,包含有给定 number 参数的十六进制表示
 
  2)保存在session
 
  代码如下:$_SESSION['code'] = $_nms
 
  3)创建图片。

(编辑:PHP编程网 - 湛江站长网)

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

    推荐文章