php生成验证码

PHP 2019年01月26日 15:14 Norsl 669 0

用php来生成验证码,调用方式

<img src="/captcha.php" />    # 路径仅供参考


附上php代码

<?php 
        session_start();
        
        // 画布长度
        $width = 120;
        // 画布高度
        $height = 40;
        // 验证码字符串内容
        $content = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        // 生成的验证码位数
        $length = 4;
        // 验证码文字大小
        $fontSize = 18;
        // 验证码
        $captcha = '';

        // 创建真彩画布
        $image = imagecreatetruecolor($width, $height);
        
        // 设置画布颜色
        $bgcolor = imagecolorallocate($image, 255, 255, 255);
        
        // 填充颜色
        imagefill($image, 0, 0, $bgcolor);
        
        // 通过循环取得内容字符
        for ($i=0; $i < $length; $i++) { 
        
        // 随机字体颜色
        $fontColor = imagecolorallocate($image, mt_rand(0,120), mt_rand(0,120), mt_rand(0,120));
        
        // 获取随机字符串
        $temp = substr($content, mt_rand(0, strlen($content)-1), 1);
        
        // 组装字符串
        $captcha .= $temp;
        
        // 设置每个字符的显示位置
        $x = ($i * $width / $length) + mt_rand(5, 10);
        $y = mt_rand(5,20);
        
        // 填充字符串内容到画布
        imagestring($image, $fontSize, $x, $y, $temp, $fontColor);
        
        }
        
        // 存入SESSION
        $_SESSION['captcha'] = $captcha;
        
        // 设置干扰元素
        for ($$i = 0; $i < 200; $i++) {
            $pointcolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));
            imagesetpixel($image, mt_rand(1, $width - 1), mt_rand(1, $height - 1), $pointcolor);
        }
        
        for ($i = 0; $i < $length - 1; $i++) {
            $linecolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));
            imageline($image, mt_rand(1, $width - 1), mt_rand(1, $height - 1), mt_rand(1, $width - 1), mt_rand(1, $height - 1), $linecolor);
        }
        
        // 设置输出格式
        header('Content-type:image/png');
        
        // 输出到浏览器
        imagepng($image);
        
        // 销毁
        imagedestroy($image);
?>


说点什么吗?

你的电子邮箱地址不会被公开。必填项已用 * 著名

*
*
验证码

Norsl の 个人名片

职业:web开发

现居:四川 成都

Git:https://gitee.com/norsl

邮箱:3136904131@qq.com

最新评论

  • 林三 : 我也很久没有清理友链了,现在更新和回复好多哇!
  • 林三 : 我也好久没有清理友链了,现在更新和回复已经很忙了的说。
  • Norsl : 已经更新好了,就是访问你之前的域访问不到了。
  • 淡然若雅 : 换了新域名,有时间添加下。
  • Norsl : 这存款都是每个月工资里面抠出来的。哈哈哈
  • 萧瑟 : 不错呦,比我当初才出来的时候好多了,竟然还有小笔存款。
  • Norsl : 对啊,后面还要进行改版
  • 摄影博客 : 你自己设计的平台啊。
  • Norsl : 其实也没啥技术含量
  • repostone : 非技术的路过。