PHP实现简易汉字验证码

实现代码

<?php
/**
 * PHP实现简易汉字验证码的思路
 */
// 创建画布
$image = imagecreatetruecolor(200, 60);
$background = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $background);

// 画干扰点
for ($i=0; $i < 300; $i++) {
    $pixColor = imagecolorallocate($image, rand(150, 240), rand(150, 240), rand(150, 240));
    $pixX = rand(10, 190);
    $pixY = rand(5, 55);
    imagesetpixel($image, $pixX, $pixY, $pixColor);
}

// 画干扰线
//4条水平线
for ($i=0; $i < 5; $i++) {
    $lineColor = imagecolorallocate($image, rand(50, 150), rand(50, 150), rand(50, 150));
    $lineX1 = 0;
    $lineX2 = 300;
    $lineY1 = ($i + 1) * 12;
    $lineY2 = ($i + 1) * 12;
    imageline($image, $lineX1, $lineY1, $lineX2, $lineY2, $lineColor);
}

//10条垂直线
for ($i=0; $i < 30; $i++) {
    $lineColor = imagecolorallocate($image, rand(50, 150), rand(50, 150), rand(50, 150));
    $lineX1 = ($i + 1) * 10;
    $lineX2 = ($i + 1) * 10;
    $lineY1 = 0;
    $lineY2 = 60;
    imageline($image, $lineX1, $lineY1, $lineX2, $lineY2, $lineColor);
}
// 画汉字
$text = array('栀', '子', '花', '开');
for ($i=0; $i < 4; $i++) {
    $textColor = imagecolorallocate($image, rand(20, 100), rand(20, 100), rand(20, 100));
    $textX = $i * 50 + 10;
    $textY = rand(40, 60);
    // 字体文件为英文名
    imagettftext($image, 30, rand(20, 50), $textX, $textY, $textColor, "STFANGSO.TTF", $text[$i]);
}
// 输出图像
header("content-type:image/png");
imagepng($image);
// 销毁图像
imagedestroy($image);

效果

声明:
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:service@starryfrp.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明

给TA打赏
共{{data.count}}人
人已打赏
HTML&CSS&JavaScript学习笔记学习笔记

给网页添加动态滚动进度条|滚动指示器

2022-4-9 17:44:08

PHP学习笔记学习笔记

PHP常用函数

2022-4-9 20:11:18

3 条回复 A文章作者 M管理员
  1. CJhui

    请问要怎么使用呢😙

    • 御坂7369号

      另存为php文件,通过img标签调用即可

  2. zby666

    汉字验证码我个人感觉体验会不好,不如用滑块

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索