【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 @ 2022-04-24 16:44  bug毁灭者  阅读(60)  评论(0编辑  收藏  举报