`
dcj3sjt126com
  • 浏览: 1876930 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP验证码类实现

    博客分类:
  • PHP
 
阅读更多

<?php


class verify{
	
	//宽
	protected $width;
	//高
	protected $height;
	//图片资源
	protected $img;
	//图片类型
	protected $imgType;
	//文字类型
	protected $type;
	//文字
	protected $checkCode;
	//文字个数
	protected $num;

	//构造方法,初使化各个成员属性包括根据文字类型,产生文字
	public function __construct($width=120,$height=40,$imgType='jpeg',$type=3,$num=4){
		$this->width=$width;
		$this->height=$height;
		$this->imgType=$imgType;
		$this->num=$num;
		$this->type=$type;
		$this->checkCode=$this->getCheckCode();

	}
	

	//产生文字得分为1,2,3    1为数字   2为字母   3为字母数字混合
	private function getCheckCode(){
		//定义一个空字符串,向他赋值,并且得到值后,待会返回这个字符串的值,这样即得到验证码
		$string='';
		
		//判断type	
		switch($this->type){
		
			case 1:
				$string=join('',array_rand(range(0,9),$this->num));
				break;
			case 2:
				$string=implode('',array_rand(array_flip(range('a','z')),$this->num));
				break;
			case 3:
				/*
				for($i=0;$i<$this->num;$i++){
					$r=mt_rand(0,2);
					switch($r){
						//0-9
						case 0:
							$char=mt_rand(48,57);
							break;
						//A-Z
						case 1:
							$char=mt_rand(65,90);
							break;
						//a-z
						case 2:
							$char=mt_rand(97,122);
							break;

					}
					//chr
					//$string.=sprintf('%c',$char);
					$string.=chr($char);	
				}*/
				$str='abcdefghijkmnprstuvwxyz23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
				
				$string=substr(str_shuffle($str),0,$this->num);

				break;
		}
		

		return $string;

	}


	//创建图片
	protected function createImg(){

		$this->img=imagecreatetruecolor($this->width,$this->height);
	}
	//
	//产生背景颜色,颜色值越大,越浅,越小越深
	protected function bgColor(){

		return imagecolorallocate($this->img,mt_rand(130,255),mt_rand(130,255),mt_rand(130,255));
	}

	//字的颜色
	protected function fontColor(){
	
		return imagecolorallocate($this->img,mt_rand(0,120),mt_rand(0,120),mt_rand(0,120));
	}

	//填充背景颜色
	protected function filledColor(){
		
		imagefilledrectangle($this->img,0,0,$this->width,$this->height,$this->bgColor());

	}
	//画上干扰点
	protected function pix(){

		for($i=0;$i<50;$i++){

			imagesetpixel($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),$this->fontColor());				
		}
	}

	//画上干扰线
	protected function arc(){

		for($i=0;$i<5;$i++){
			
			imagearc($this->img,mt_rand(10,$this->width-10),mt_rand(10,$this->height-10),200,50,mt_rand(0,90),mt_rand(100,350),$this->fontColor());

		}

	}


	//写字,得到x,y
	//
	//ceil   进一法取整
	//
	//floor  舍法取整
	//
	protected function write(){
		
		for($i=0;$i<$this->num;$i++){

			$x=ceil($this->width/$this->num)*$i;
			$y=mt_rand(0,$this->height-15);

			imagechar($this->img,5,$x,$y,$this->checkCode[$i],$this->fontColor());

		}

	}
	//输出
	protected function output(){

		$func='image'.$this->imgType;
		
		$header='Content-type:image/'.$this->imgType;
		
		if(function_exists($func)){
			header($header);
			$func($this->img);
		}else{
			echo '不支持该图片类型';
			exit;
		}
	
	}

	//组装得到图片
	
	public function getImage(){
		$this->createImg();
		$this->filledColor();
		$this->pix();
		$this->arc();
		$this->write();
		$this->output();
		
				
		

	}
	//写个魔术方法,专门给外部得到验证码字符串使用
	
	public function __get($className){

		if($className=='checkCode'){
			return $this->checkCode;
		}
	}

	//销毁
	
	public function __destruct(){
		imagedestroy($this->img);
	}

}




?>
 
分享到:
评论

相关推荐

    php验证码类 php中文验证码

    在PHP中,创建自定义的验证码类可以帮助开发者实现更安全、更个性化的验证功能。这里我们将深入探讨“php中文验证码类”的相关知识点。 首先,验证码通常由随机字符组成,包括字母、数字甚至中文字符,目的是增加...

    php源码 验证码 类

    首先,PHP验证码类的实现通常包括以下几个关键部分: 1. **图像生成**:验证码类首先需要创建一个图像,这个图像通常包含一些扭曲的字母或数字。PHP可以使用GD库或Imagick扩展来生成图像。GD库是PHP内置的图像处理...

    已封装的php验证码类.zip

    在本案例中,我们有一个名为"已封装的php验证码类.zip"的压缩包,其中包含一个已经封装好的PHP验证码类。这个类库简化了验证码的生成和验证过程,使得开发者可以更便捷地在项目中集成验证码功能。 首先,让我们深入...

    php验证码类

    "php验证码类"指的是用PHP编程语言编写的一个特定的类,这个类通常包含用于生成和验证随机图像验证码的函数。 验证码的主要功能是确保用户是人类,而不是计算机程序。它们通过创建一个难以自动识别的图像,其中包含...

    php验证码,php验证码类

    `lib_verify.php` 文件可能是一个自定义的PHP验证码类,用于生成和验证这些验证码。 验证码类的设计通常包括以下几个关键部分: 1. **生成随机字符串**:验证码的核心是那一串随机字符。在PHP中,可以使用`rand()`...

    PHP简单验证码的实现

    通过学习和实践这个简单的PHP验证码项目,开发者可以深入了解PHP的图像处理能力,同时掌握如何使用session进行数据持久化,以及前端与后端的交互。这对于构建更复杂的Web应用是非常基础且重要的技能。

    PHP图片验证码的实现

    PHP图片验证码的实现

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

    标题提到的"漂亮的php验证码类"是一个用于创建美观且安全的验证码的工具。 验证码类通常包含以下几个关键功能: 1. **随机字符生成**:验证码类会生成一组随机的字母或数字,这组字符既可能是纯数字,也可能是字母...

    php实现简单实用的验证码类.zipzip

    讲述了PHP实现简单实用的验证码类,$image-&gt;config('宽度','高度','字符个数','验证码session索引'),$image-&gt;create();//这样就会向浏览器输出一张图片,产生验证码,产生验证码图片,设置图片的干扰像素,在验证码...

    PHP验证码封装类

    在PHP编程中,验证码(CAPTCHA...总的来说,这个“PHP验证码封装类”是一个实用的工具,可以帮助开发人员快速、安全地在PHP项目中实现验证码功能,提高网站的安全性。它的清晰注释和简洁设计使得理解和使用都非常方便。

    php实现简单实用的验证码类

    PHP实现简单实用的验证码类,$image-&gt;config('宽度','高度','字符个数','验证码session索引'),$image-&gt;create();//这样就会向浏览器输出一张图片,产生验证码,产生验证码图片,设置图片的干扰像素,在验证码图片上...

    PHP验证码类

    "PHP验证码类"是这样一种工具,它能帮助开发者轻松创建高效且安全的验证码图片。 验证码类的基本功能包括生成随机字符、绘制图像、扭曲字符以增加识别难度、以及验证用户输入的验证码是否与服务器端生成的一致。...

    php验证码文件类.zip

    "php验证码文件类.zip" 是一个包含PHP验证码实现的类库,方便开发者集成到自己的项目中。通过将验证码功能封装成类,代码的可复用性和维护性得到了提升。 验证码类通常包括以下几个核心部分: 1. **随机数生成**:...

    php高安全验证码生成类

    - 在PHP验证码类中,可以编写函数随机选择字体文件,如`$font = 'fonts/' . rand(1, count(scandir('fonts')) - 2) . '.ttf';`,确保每次生成的验证码字体不固定,增加破解难度。 3. **验证码的其他安全措施**: ...

    php 图片处理 验证码类

    以上就是创建一个简单的PHP验证码类的基本步骤。`11.图片处理(验证码)image.php`可能是一个示例文件,用于调用`ValidationCode`类并显示生成的验证码。在实际应用中,你可能还需要考虑其他功能,如防止跨站请求伪造...

    好用的php验证码类库.zip

    "好用的php验证码类库.zip"就是一个这样的资源,提供了易于使用的PHP验证码实现。 验证码类库通常包括以下几个核心组件: 1. **生成验证码**:这个过程涉及到随机字符串或数字的生成,通常结合特定的字体、颜色和...

    Php各种验证码实现

    以下是一个简单的GD库验证码实现步骤: 1. 生成随机字符串:使用`rand()`或`mt_rand()`函数生成一定长度的随机字符串。 2. 创建图像:使用`imagecreatetruecolor()`函数创建一个新的图像资源。 3. 设置背景:使用`...

    不错的php验证码类

    标题提到的"不错的php验证码类"是一个专门为PHP设计的验证码生成库,它提供了自定义功能,允许开发者根据需求调整验证码的尺寸、颜色等视觉特性,以增加自动化识别的难度。 验证码类通常包含以下几个关键部分: 1....

    php生成验证码类,已封装

    PHP验证码类通常包含以下核心功能: 1. **生成随机数字或字母**:验证码通常由4-6个随机字符组成,这些字符可以是数字、小写字母或大写字母。生成随机字符串的方法是使用`rand()`或`mt_rand()`函数结合字符集。 2....

Global site tag (gtag.js) - Google Analytics