专栏首页西枫里博客imagestring生成验证码字符太小,采用imagettftext函数的验证码修正版

imagestring生成验证码字符太小,采用imagettftext函数的验证码修正版

imagestring只内置了5中字符大小,在前端根据美工设计常常无法满足需求。采用imagettftext函数生成验证码图片,可自定义字体和大小。源码如下:

<?php
session_start();
function random($len) {
    $srcstr = "123456789ABCDEFGHJKLNPQRSTUVXYZ";
    $strs = "";
    for ($i = 0; $i < $len; $i++) {
        $strs .= $srcstr[mt_rand(0,30)];
    }
    return $strs;
}
 
//随机生成的字符串
$str = random(5); 
 
//验证码图片的宽度
$width  = 80;      
 
//验证码图片的高度
$height = 40;     
 
//声明需要创建的图层的图片格式
@ header("Content-Type:image/png");
 
//创建一个图层
$im = imagecreate($width, $height);
 
//背景色
$back = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
 
//模糊点颜色
$pix  = imagecolorallocate($im, 100, 207, 95);
 
//字体色
$color = imagecolorallocate($im, 100, 207, 2);

//边框颜色
$col = imagecolorallocate($im, 100, 164, 26);

//字体
putenv('GDFONTPATH=' . realpath('.'));//解决linux下GD库版本低于2.0.18不能显示的问题
$font = 'arial.ttf';
 
//绘模糊作用的点
mt_srand();
for ($i = 0; $i < 800; $i++) {
    imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pix);
}
 
//输出字符
imagettftext($im, 16, 0, 5, 28, $color, $font, $str);

//输出矩形
imagerectangle($im, 0, 0, $width -1, $height -1, $col);
 
//输出图片
imagepng($im);
 
imagedestroy($im);
 
$str = md5(strtolower($str));
 
//选择 cookie
//SetCookie("verification", $str, time() + 7200, "/");
 
//选择 Session
$_SESSION["verification"] = $str;
?>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用IP138读取用户端地址写入数据库函数

    最近突然发现本...

    世纪访客
  • ASP防止站外提交表单数据

    防止站外提交数据函数,搭配使用验证码可以杜绝大多数的灌水机程序的自动发布。更严格的还应该从字段格式限制等全方面考虑。

    世纪访客
  • 小米4手机更换电池复活记

    过年那天,手机也忙坏了,竟然自爆了(电池持续发热,熔芯了)。这大过年的没手机,春晚红包也抢不到啊,悲剧。将就先把淘汰下来的iphone5s拿来应急,这个原本是女...

    世纪访客
  • zookeeper集群的搭建

    在hadoop101、hadoop102和hadoop103,这三个节点上部署Zookeeper。

    爱学习的孙小白
  • (五)ZK集群搭建

    1.集群规划 在hadoop002、hadoop003和hadoop004三个节点上部署Zookeeper。 2.解压安装 (1)解压Zookeeper安...

    wolf
  • 爬取简书用户的动态

    伪君子
  • 文件操作——查找遍历

    前面说过了文件的读取、写入,那么在操作文件之前,一般我们需要找到操作的文件的路径,VBA对象库中,有一个FileSystem的模块,里面有关于文件操作的一些函数...

    xyj
  • 用php输出心形曲线

    码缘
  • 【DB笔试面试826】在Oracle中,ASH和AWR的关系是什么?

    自Oracle 10g开始,Oracle会将处于等待状态的会话的相关信息复制一份到VSESSION_WAIT中,而VSESSION_WAIT_HISTORY是其...

    小麦苗DBA宝典
  • Python 转义字符

    \' 单引号 \" 双引号 \t 制表符 \n 换行符 \ 倒斜杠

    py3study

扫码关注云+社区

领取腾讯云代金券