如何用 php实现验证码

php实现验证码的方法:首先创建绘制验证码类,代码如“class Captcha {…}”;然后绘制图片页面;接着设置表单页面;最后创建好验证页面即可。

如何用 php实现验证码

本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑

PHP 实现验证码

绘制验证码类

width = $width;        $this->height = $height;        // 创建图像对象        $this->image = imagecreatetruecolor($width, $height);        // 创建验证码        $this->generateCaptchaCode();    }    public function __destruct() {        // 销毁图像对象        imagedestroy($this->image);    }    public function paint() {        // 绘制背景        $this->paintBackground();        // 绘制验证码        $this->paintText();        // 绘制干扰        $this->paintDirty();    }    public function output() {        // 设置头部为PNG图片        header('Content-Type: image/png');        // 输出到浏览器        imagepng($this->image);    }    public function code() {        return $this->code;    }    private function paintBackground() {        // 背景颜色设置为白色        $color = imagecolorallocate($this->image, 255, 255, 255);        // 填充背景        imagefill($this->image, 0, 0, $color);    }    private function paintText() {        // 遍历验证码,一个字符一个字符地绘制        for ($i = 0; $i code); ++$i) {            $fontsize = 6;            $color = imagecolorallocate($this->image, rand(0,50), rand(0,50), rand(0,50));            $x = ($i * 100 / self::CODE_LENGTH) + rand(5, 10);            $y = rand(5, 10);            imagestring($this->image, $fontsize, $x, $y, $this->code[$i], $color);        }    }    private function paintDirty() {        // 绘制点        for ($i = 0; $i image, rand(100,200), rand(100,200), rand(100,200));                // 画点            imagesetpixel($this->image, rand(1,99), rand(1,29), $pointcolor);        }        // 绘制线条        for ($i = 0; $i image, rand(100,200), rand(100,200), rand(100,200));            // 画线            imageline($this->image, rand(1,$this->width-1), rand(1,29), rand(1,99), rand(1,29), $linecolor);        }    }    private function generateCaptchaCode() {        // 从备选字符串中随机选取字符        for ($i = 0; $i code .= $ch;        }    }    private $image = NULL;  // 图像对象    private $code = "";     // 验证码    private $width = 0;     // 图像长度    private $height = 0;    // 图像宽度}?>

登录后复制

绘制图片页面

立即学习“PHP免费学习笔记(深入)”;

code();  // 将验证码存入Session$captcha->paint();  // 绘制$captcha->output();  // 输出?>

登录后复制

推荐学习:《PHP视频教程》

表单页面

nbsp;html>                提交页面            function validate_form(form) {            with (form) {                if (captcha.value == null || captcha.value == "") {                    alert("验证码不能为空!");                    return false;                }            }            return true;        }        

登录后复制

验证页面

nbsp;html>            验证页面    

登录后复制

以上就是如何用 php实现验证码的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2513076.html

(0)
上一篇 2025年3月5日 15:03:23
下一篇 2025年2月23日 19:00:41

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php怎么将date转为timestamp(时间戳)

    在PHP中,可以使用strtotime()函数来将date(日期)转为timestamp(时间戳),该函数可以将任何字符串的日期时间描述解析为Unix时间戳,语法格式“strtotime(字符串形式的日期)”。 本教程操作环境:window…

    2025年3月5日
    200
  • php中Thread Safe和None Thread Safe的区别是什么

    区别:Thread Safe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程,耗尽系统资源;而None Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查。 本教程操作环境:w…

    2025年3月5日
    100
  • php代码中怎么屏蔽php错误

    屏蔽方法:1、在错误语句之前加上“@”符号,便可屏蔽错误信息;2、在php文件开头位置添加“error_reporting(0);”语句;3、打开php.ini文件,设置“display_errors”项的值为“off”即可。 本教程操作环…

    2025年3月5日
    200
  • php怎么修改上传文件的大小限制

    修改大小限制的方法:1、找到并打开php.ini文件,查找“max_execution_time”项,将其值改为“0”;2、查找并设置“post_max_size”项的值;3、查找并设置“upload_max_filesize”项的值。 本…

    2025年3月5日
    200
  • php正则替换函数有哪些

    php正则替换函数有:1、preg_replace(),执行一个正则表达式的搜索和替换;2、preg_filter();3、preg_replace_callback();4、preg_replace_callback_array()。 本…

    2025年3月5日
    200
  • 如何使用PHP中bz2压缩扩展工具

    本篇文章给大家介绍一下使用php中bz2压缩扩展工具的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 在日常的开发和电脑使用中,我们经常会接触到压缩和解压的一些工具,PHP 也为我们准备了很多相关的操作扩展包,都有直…

    2025年3月5日
    200
  • 浅谈PHP的CLI命令行运行模式

    本篇文章给大家介绍一下php的cli命令行运行模式。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 PHP的CLI命令行运行模式浅析 在做开发的时候,我们不仅仅只是做各种网站或者接口,也经常需要写一些命令行脚本用来处理一些…

    2025年3月5日
    200
  • php两个数组怎么去掉相同的元素

    PHP去掉两个数组中相同元素的方法:首先嵌套两个foreach循环来遍历两个数组;然后在循环体中使用if语句查找出两个数组中的相同元素;最后使用unset()函数将相同元素从这两个数组中移除即可。 本教程操作环境:windows7系统、PH…

    2025年3月5日
    200
  • 详细介绍PHP中的数据库连接持久化

    本篇文章给大家详细介绍php中的数据库连接持久化。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 数据库的优化是我们做web开发的重中之重,甚至很多情况下其实我们是在面向数据库编程。当然,用户的一切操作、行为都是以数据的形…

    2025年3月5日
    200
  • PHP如何使用mysqli_real_escape_string()函数?

    本篇文章给大家介绍一下php使用mysqli_real_escape_string()函数的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 mysqli_real_escape_string()函数是PHP中的内置函…

    2025年3月5日
    200

发表回复

登录后才能评论