一个好用的PHP验证码类实例分享

分享一个好用的php验证码类,包括调用示例。
说明:
如果不适用指定的字体,那么就用imagestring()函数,如果需要遇到指定的字体,就要用到imagettftext()函数。字体的位置在C盘下Windows/Fonts.

参考了网上的php 生成验证码的方法,以及php 图片验证码和php 中文验证码的生成方法。用到了PHP GD库的相关知识。

1,生成验证码的类 VerificationCode.class.php


代码如下:

<?php 
    class VerificationCode{ 
        private $charset="abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789";  //随机因子 
        private $code;  //验证码 
        private $codelen=4; //验证码长度 
        private $width=110; //宽度 
        private $height=30; //高度 
        private $img;   //图像资源句柄 
        private $font;  //制定字体 
        private $fontSize=25;   //字体大小 
        private $fontColor; //字体颜色 
        public function __construct(){ 
            $this->font="CALIBRIZ.TTF"; 
        } 
        //生成验证码 
        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),$i*$x+mt_rand(1,5),$this->height/1.4,$this->fontColor,$this->font,$this->code[$i]);  // www.jb51.net
                //imagestring($this->img,5,$i*$x+mt_rand(1,5),5,$this->code[$i],$this->fontColor); 
            } 
        } 
        //生成线条、雪花 
        private function createDisturb(){ 
            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->width),mt_rand(0,$this->width),mt_rand(0,$this->width),$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 showCode(){ 
            $this->createBg(); 
            $this->createCode(); 
            $this->createDisturb(); 
            $this->createFont(); 
            $this->outPut(); 
        } 
        //获取验证码 
        public function getCode(){ 
            return strtolower($this->code); 
        } 
    } 
?>

code.php

代码如下:

<?php 
    session_start(); 
    require_once 'VerificationCode.class.php'; 
    $code=new VerificationCode(); 
    $_SESSION['code']=$code->getCode(); 
    $code->showCode(); 
?>

验证码:<input type="text" name="code" /><img src="code.php" onclick="javascript:this.src='code.php?time='+Math.random();" />

(0)

相关推荐

  • PHP学习笔记 用户注册模块用户类以及验证码类

    所以,把第一章,可重用类的代码贴出来,便于以后查阅以及供给有需要的朋友. :User类,包括读取和设置数据库,以及保存更改交互 复制代码 代码如下: <?php class User{ private $uid; private $fields; public function __construct(){ $this->uid=null; $this->fields=array('username'=>'','password'=>'','emailAddr'=>''

  • php封装的验证码类分享

    验证码是我们开发的时候经常用到的功能,所以在此本人包装了一个验证码类,应该可以作为php的类插件用,在此分享给各位读友. 实现的原理也是很简单,就是利用画布的几个函数,再加上一些字符串的获取,东凑西凑就构成了,呵呵. 这里大概写一下思路吧,其实这个类已经注释的非常清楚了,不过,个人还是在行文前啰嗦一下. 首先是关于一些函数的解释,这里的解释纯属个人体会,有什么错误的地方,还请读者指正. 1.创建画布函数:imagecreatetruecolor(w,h); 说明:用于创建一个画布. w 画布的宽

  • php实现的Captcha验证码类实例

    本文实例讲述了php实现的Captcha验证码类,在php程序设计中有着极其广泛的应用.分享给大家供大家参考.具体方法如下: 验证码类文件如下: <?php /** Captcha 验证码类 * Date: 2011-02-19 * Author: fdipzone */ class Captcha{ //class start private $sname = ''; public function __construct($sname=''){ // $sname captcha sessi

  • PHP 动态随机生成验证码类代码

    下面是效果图,这个效果图是没有开启干扰码的效果图 下面是类代码 复制代码 代码如下: <?php /************************************************ //FILE:ImageCode //DONE:生成动态验证码类 //DATE"2010-3-31 //Author:www.5dkx.com 5D开心博客 *********************************************************************

  • 一个经典的PHP验证码类分享

    我们通过PHP的GD库图像处理内容,设计一个验证码类Vcode.将该类声明在文件vcode.class.php中,并通过面向对象的特性将一些实现的细节封装在该类中.只要在创建对象时,为构造方法提供三个参数,包括创建验证码图片的宽度.高度及验证码字母个数,就可以成功创建一个验证码类的对象.该类的声明代码如下所示: <?php class Vcode { private $width; //宽 private $height; //高 private $num; //数量 private $code

  • 一个漂亮的php验证码类(分享)

    直接上代码: 复制代码 代码如下: //验证码类class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子 private $code;//验证码 private $codelen = 4;//验证码长度 private $width = 130;//宽度 private $height = 50;//高度 private $img;//图形资源句柄 pri

  • 一个PHP验证码类代码分享(已封装成类)

    复制代码 代码如下: <?php session_start(); Header("Content-type: image/gif"); class SecurityCode { private $codes = ''; function __construct() { $code = '0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z'; $codeArray = explode('-

  • PHP验证码类代码( 最新修改,完全定制化! )

    Authnum.class.php 下载 复制代码 代码如下: <?php session_start(); class Authnum { //图片对象.宽度.高度.验证码长度 private $im; private $im_width; private $im_height; private $len; //随机字符串.y轴坐标值.随机颜色 private $randnum; private $y; private $randcolor; //背景色的红绿蓝,默认是浅灰色 public $

  • 一个好用的PHP验证码类实例分享

    分享一个好用的php验证码类,包括调用示例.说明:如果不适用指定的字体,那么就用imagestring()函数,如果需要遇到指定的字体,就要用到imagettftext()函数.字体的位置在C盘下Windows/Fonts. 参考了网上的php 生成验证码的方法,以及php 图片验证码和php 中文验证码的生成方法.用到了PHP GD库的相关知识. 1,生成验证码的类 VerificationCode.class.php 复制代码 代码如下: <?php      class Verificat

  • 一个简单安全的PHP验证码类、PHP验证码

    一,验证码示例 二,php验证码类,secoder.class.php <?php /** * 安全验证码 * * 安全的验证码要:验证码文字扭曲.旋转,使用不同字体,添加干扰码 * * @author 流水孟春 <cmpan(at)qq.com> * @link http://labs.yulans.cn/YL_Security_Secoder * @link http://wiki.yulans.cn/docs/yl/security/secoder */ class YL_Secu

  • 一个简单安全的PHP验证码类 附调用方法

    一.验证码示例 二.php验证码类,secoder.class.php <?php /** * 安全验证码 * * 安全的验证码要:验证码文字扭曲.旋转,使用不同字体,添加干扰码 * * @author 流水孟春 <cmpan(at)qq.com> * @link http://labs.yulans.cn/YL_Security_Secoder * @link http://wiki.yulans.cn/docs/yl/security/secoder */ class YL_Secu

  • php实现的click captcha点击验证码类实例

    本文实例讲述了php实现的click captcha点击验证码类及其用法,是非常实用的功能.分享给大家供大家参考之用.具体如下: 一.需求: 现在常用的表单验证码大部分都是要用户输入为主,但这样对手机用户会不方便. 如果手机用户访问,可以不用输入,而是click某一位置便可确认验证码,这样就会方便很多. 二.原理: 1.使用PHP imagecreate创建PNG图象,在图中画N个圆弧,其中一个是完整的圆(验证用),将圆心坐标及半径记录入session. 2.在浏览器,当用户在验证码图片上点击时

  • PHP编写的图片验证码类文件分享

    适用于自定义的验证码类! <?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ Class Image{ private $img; public $width = 85; pub

  • php-beanstalkd消息队列类实例分享

    本文实例为大家分享了php beanstalkd消息队列类的具体代码,供大家参考,具体内容如下 <?php namespace Common\Business; /** * beanstalk: A minimalistic PHP beanstalk client. * * Copyright (c) 2009-2015 David Persson * * Distributed under the terms of the MIT License. * Redistributions of

  • 使用JSP制作一个超简单的网页计算器的实例分享

    实现一个简单的计算器程序,要求:使用jsp+javabean模式实现. 项目源代码如下: 文件:calculator.jsp <%@ page language="java" pageEncoding="UTF-8"%> <%@ page isErrorPage="true"%> <%@ page errorPage="calculator.jsp" %> <%@ taglib uri

  • java日期工具类实例分享

    复制代码 代码如下: /** * 日期工具类 * 默认使用 "yyyy-MM-dd HH:mm:ss" 格式化日期 */public final class DateUtils {/*** 英文简写(默认)如:2010-12-01*/public static String FORMAT_SHORT = "yyyy-MM-dd";/*** 英文全称  如:2010-12-01 23:15:06*/public static String FORMAT_LONG =

随机推荐