验证码类,生成验证码

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-10-19 05:51:13

验证码类,生成验证码的相关文章

PHP中的验证码类(验证码功能设计之二)

运行结果: <!--vcode.class.php内容--> <?php class Vcode { private $width; //宽 private $height; //高 private $num; //数量 private $code; //验证码 private $img; //图像的资源 //构造方法, 三个参数 function __construct($width, $height, $num) { $this->width = $width; $this-&

PHP中的验证码类(验证码功能设计之一)

<!--vcode.class.php内容--> <?php class Vcode { private $width; //宽 private $height; //高 private $num; //数量 private $code; //验证码 //构造方法, 三个参数 function __construct($width, $height, $num) { $this->width = $width; $this->height = $height; $this-&

6月19 使用tp框架生成验证码及文件上传

ThinkPHP中自带能生成验证码的类:ThinkPHP/Library/Think/Verify.class.php 默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think/Verify/ttfs/目录下面的字体文件,我们可以指定验证码的字体 汉字的验证码:ThinkPHP/Library/Think/Verify/zhttfs/添加中文的字体格式 更改字体:ttf格式 关于验证码的一些知识点: 1.例题:通过验证码实现用户的登录,并利用jquery实现点击图片验证码

Java生成验证码_转

为了防止用户恶意,或者使用软件外挂提交一些内容,就得用验证码来阻止,虽然这个会影响用户体验,但为了避免一些问题很多网站都使用了验证码;今天下午参考文档弄了一个验证码,这里分享一下;这是一个web工程,首先是页面,这里只是一个显示验证码页面index.jsp,使用默认生成的就可以了,表单没有做提交,如下 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

第二百七十节,Tornado框架-生成验证码图片,以及验证码结合Session验证

Tornado框架-生成验证码图片,以及验证码结合Session验证 第一.生成验证码图片  生成验证码图片需要两个必须模块 1.python自带的random(随机模块) 2.Pillow()图像处理模块里的PIL(图像库),为第三方模块,需要安装 封装验证码图片生成插件py 在封装文件里先导入random(随机模块),和Pillow()图像处理模块里的所需py文件 封装验证码图片生成插件功能,调用后返回验证码图片,和字符串类型验证码,两个返回值 注意:验证码需要一个字体文件,这个字体文件必须

php生成验证码,缩略图及水印图的类分享

封装了一个类,可生成验证码,缩略图,及水印图,分享给大家 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

生成验证码的类

<%@ WebHandler Language="C#" Class="ValidateCode" %> using System; using System.Web; using System.Drawing; using System.Web.SessionState; public class ValidateCode : IHttpHandler,IRequiresSessionState { public void ProcessRequest

Laravel 下生成验证码的类

<?php namespace App\Tool\Validate; //验证码类 class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子 private $code;//验证码 private $codelen = 4;//验证码长度 private $width = 130;//宽度 private $height = 50;//高度 private

Java常用工具类(计算MD5,验证码随机生成,天数差值计算)

写这个博文的目的是为了怕哪天自己的电脑崩溃了,以前写的那些代码就没了,所以将自己写的工具类贴出来,方便以后去使用,也避免自己反复去创造轮子, 也可以对这些方法进行简单修改来完成业务需求,这样就可以极大的提高开发的效率. 方法一:计算字符串的MD5的值 使用方法很简单,直接把值传入方法中就可以了,会返回一个字符串String注意去获取. public final static String calculateMD5(String s) { char hexDigits[] = { '0', '1'

php生成验证码类

php生成验证码类 直接看代码 <?php session_start(); class Code{ //资源 private $img; //画布宽度 private $width=100; //画布高度 private $height=30; //背景颜色 private $bgColor='#ffffff'; //验证码 private $code; //验证码的随机种子 private $codeStr='23456789abcdefghjkmnpqrstuvwsyz'; //验证码长度