Captcha.class.php

<?php
/**
 *==================================================================
 * captcha.class.php 验证码类,生成验证码
 * @author 王超平
 * @copyright 传智播客PHP学院 2006-2014
 * @version 2.0
 * 2014年5月1日
 *=================================================================
 */
class Captcha{
    private $charset = ‘abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789‘;    //随机因子,
    private $code;                     //验证码字符串
    private $codelen = 4;              //验证码长度
    private $width = 150;              //宽度
    private $height = 40;              //高度
    private $img;                      //图形资源句柄
    private $font;                     //指定的字体
    private $fontsize = 20;            //指定字体大小
    private $fontcolor;                //指定字体颜色

    //构造方法初始化
    public function __construct($codelen=4,$width=150,$height=40,$fontsize = 20,$font="elephant.ttf") {
        $this->codelen = $codelen;
        $this->width = $width;
        $this->height = $height;
        $this->fontsize = $fontsize;
        $this->font = $font;
    }

    //生成随机码
    private function createCode() {
        $_len = strlen($this->charset)-1;
        for ($i=0;$i<$this->codelen;$i++) {
            $this->code .= $this->charset[mt_rand(0,$_len)];
        }
    }

    //生成背景
    private function createBg() {
        $this->img = imagecreatetruecolor($this->width, $this->height);
        $color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));
        imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);
    }

    //生成文字
    private function createFont() {
        $_x = $this->width / $this->codelen;
        for ($i=0;$i<$this->codelen;$i++) {
            $this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
            imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);
        }
    }

    //生成线条、雪花
    private function createLine() {
        for ($i=0;$i<6;$i++) {
            $color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
            imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
        }
        for ($i=0;$i<100;$i++) {
            $color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
            imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),‘*‘,$color);
        }
    }

    //输出
    private function outPut() {
        header(‘Content-type:image/png‘);
        imagepng($this->img);
        imagedestroy($this->img);
    }

    //对外生成
    public function generateCode() {
        $this->createBg();
        $this->createCode();
        $this->createLine();
        $this->createFont();
        $this->outPut();
    }

    //获取验证码
    public function getCode() {
        return strtolower($this->code);
    }
}

//调用实例
//$c = new Captcha();
//$c->generateCode();
//$_SESSION[‘captcha‘] = $c->getCode();
时间: 2024-07-29 04:20:22

Captcha.class.php的相关文章

ecshop:Redefining already defined constructor for class captcha

提示 ( ! ) Strict standards: Redefining already defined constructor for class captcha in C:\develop\wamp\www\ecshop\includes\cls_captcha.php on line 119 解决方法,参考:ecshop错误提示:Strict standards: Redefining already defined constructor for class captcha

封装captcha类 -- 画图四

<?php // 验证码类 class Captcha{ //属性 private $width; private $height; private $length; private $lines; private $pixels; private $color; private $font; private $string; /* *构造方法 *@param1 array $arr, 一个数组, 里面几乎包含了所有的属性 * */ public function __construct($ar

ecshop ajax请求验证captcha(验证码)

Ecshop内置了强大的验证码机制,我们只要调用cls_captcha.php这个验证码就可以. 说明一点,当我们使用自己定义的php文件时,我们最好加上IN_ECS 为ture的设置,否则可能抛出Hacker 攻击的错误,下面给出ajax请求验证代码 define('IN_ECS', true); require(dirname(__FILE__) . '/includes/init.php'); include_once(dirname(__FILE__) . '/includes/cls_

验证码 Captcha 之大插件

验证码 Captcha 之大插件小用 不知何年何月才能完成OADemo啊,总之还是一步一步来吧,这段时间开始着手了,先做登陆.  前段时间研究了一下在CentOS7下安装Mysql和Memcached服务,并测试了用C#操作,结果还行. 今天做一个简单的基于Bootstarp的响应式登陆页面(其实是在网上下的模板),不管是登陆还是注册吧,都会用到验证码,以前是用GDI绘出来的,觉得太丑了,百度的关于.net的验证码绝大多数也是用的这种方法,最后试了一下captcha,觉得还挺好看的,所以就试着用

一步一步实现MVC5+EF6+Bootstarp+Autofac+NoSql实现OADemo 之登陆(一) 验证码 Captcha 之大插件小用

不知何年何月才能完成OADemo啊,总之还是一步一步来吧,这段时间开始着手了,先做登陆.  前段时间研究了一下在CentOS7下安装Mysql和Memcached服务,并测试了用C#操作,结果还行. 今天做一个简单的基于Bootstarp的响应式登陆页面(其实是在网上下的模板),不管是登陆还是注册吧,都会用到验证码,以前是用GDI绘出来的,觉得太丑了,百度的关于.net的验证码绝大多数也是用的这种方法,最后试了一下captcha,觉得还挺好看的,所以就试着用用. nugit控制台install-

php实现动态随机验证码机制(CAPTCHA)

php实现动态随机验证码机制 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序.可以防止:恶意破解密码.刷票.论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能. 这个

验证码做得不错,有.net 版本 https://captcha.com/

https://captcha.com/ https://captcha.com/demos/features/captcha-demo.aspx

Handling Captcha | Webdriver

http://seleniumworks.blogspot.kr/2013/09/handling-captcha-webdriver.html Make use of the 'input' tag with type 'hidden' in-order to handle Captcha. Look at this example for reference.. driver.get("http://www.google.com/recaptcha/learnmore");driv

Laravel-5.1 ---- 将mews captcha整合到项目中!

经过摸索,终于能在laravel 5.1中应用验证码了. 因为英语渣五水平,所以几乎没搜索到什么有用的,于是考虑在github上搜索验证码包! 提示: github上的package中往往会有使用说明,照着上面的实现,一般都能做出来. 我使用的是mews captcha git 上的地址: https://github.com/mewebstudio/captcha 上面的使用很详细了. 动手实现: -- 手动进入 laravel 项目目录 -- 在对应目录下,找到composer.json文件

Django学习系列之captcha 验证码插件

安装部署 安装captcha pip3.6 install django-simple-captcha==0.4.6 settings.py中引入captcha INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.st