【PHP】生成验证码

复制代码
<?php

/**
 * @description 生成指定长度的随机字符串
 * @param int $num 长度
 * @return string  字符串
 */
function create_code($num=4){
    $str = "3456789abcdefghjkmnpqrstuvwxyABCDEFJHIJKMPQRSTUVWXY";
    $key = '';
    for($i=0;$i<$num;$i++){
        $key .= $str[rand(0, strlen($str)-1)];
    }
    return $key;
}

/**
     * @description 获取验证码
     */
     function getCode(){
        header("Content-type: image/png");

        $length = 4;//验证码长度
        $num = create_code($length);

        $width = 80;
        $height = 40;

        $im = imagecreatetruecolor($width, $height);
        $color = imagecolorallocate($im, 255, 255, 255);
        imagefilledrectangle($im, 0, $height, $width, 0, $color);

        for ($i = 0; $i < $length; $i++) {
            $fontcolor = imagecolorallocate($im, mt_rand(0, 156), mt_rand(0, 156), mt_rand(0, 156));
            imagestring($im, 5, $width / $length * $i + mt_rand(1, 5), $height / 5, $num[$i], $fontcolor);
        }

        for ($i = 1; $i <= 100; $i++) {
            $color = imagecolorallocate($im, mt_rand(0, 156), mt_rand(0, 156), mt_rand(0, 156));
            imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $color);
        }

        imagepng($im);
        imagedestroy($im);
        return;
    }
复制代码

结果:

 

posted @   bug毁灭者  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示