<?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验证码类的实现通常包括以下几个关键部分: 1. **图像生成**:验证码类首先需要创建一个图像,这个图像通常包含一些扭曲的字母或数字。PHP可以使用GD库或Imagick扩展来生成图像。GD库是PHP内置的图像处理...
在本案例中,我们有一个名为"已封装的php验证码类.zip"的压缩包,其中包含一个已经封装好的PHP验证码类。这个类库简化了验证码的生成和验证过程,使得开发者可以更便捷地在项目中集成验证码功能。 首先,让我们深入...
"php验证码类"指的是用PHP编程语言编写的一个特定的类,这个类通常包含用于生成和验证随机图像验证码的函数。 验证码的主要功能是确保用户是人类,而不是计算机程序。它们通过创建一个难以自动识别的图像,其中包含...
`lib_verify.php` 文件可能是一个自定义的PHP验证码类,用于生成和验证这些验证码。 验证码类的设计通常包括以下几个关键部分: 1. **生成随机字符串**:验证码的核心是那一串随机字符。在PHP中,可以使用`rand()`...
通过学习和实践这个简单的PHP验证码项目,开发者可以深入了解PHP的图像处理能力,同时掌握如何使用session进行数据持久化,以及前端与后端的交互。这对于构建更复杂的Web应用是非常基础且重要的技能。
PHP图片验证码的实现
标题提到的"漂亮的php验证码类"是一个用于创建美观且安全的验证码的工具。 验证码类通常包含以下几个关键功能: 1. **随机字符生成**:验证码类会生成一组随机的字母或数字,这组字符既可能是纯数字,也可能是字母...
讲述了PHP实现简单实用的验证码类,$image->config('宽度','高度','字符个数','验证码session索引'),$image->create();//这样就会向浏览器输出一张图片,产生验证码,产生验证码图片,设置图片的干扰像素,在验证码...
在PHP编程中,验证码(CAPTCHA...总的来说,这个“PHP验证码封装类”是一个实用的工具,可以帮助开发人员快速、安全地在PHP项目中实现验证码功能,提高网站的安全性。它的清晰注释和简洁设计使得理解和使用都非常方便。
PHP实现简单实用的验证码类,$image->config('宽度','高度','字符个数','验证码session索引'),$image->create();//这样就会向浏览器输出一张图片,产生验证码,产生验证码图片,设置图片的干扰像素,在验证码图片上...
"PHP验证码类"是这样一种工具,它能帮助开发者轻松创建高效且安全的验证码图片。 验证码类的基本功能包括生成随机字符、绘制图像、扭曲字符以增加识别难度、以及验证用户输入的验证码是否与服务器端生成的一致。...
"php验证码文件类.zip" 是一个包含PHP验证码实现的类库,方便开发者集成到自己的项目中。通过将验证码功能封装成类,代码的可复用性和维护性得到了提升。 验证码类通常包括以下几个核心部分: 1. **随机数生成**:...
- 在PHP验证码类中,可以编写函数随机选择字体文件,如`$font = 'fonts/' . rand(1, count(scandir('fonts')) - 2) . '.ttf';`,确保每次生成的验证码字体不固定,增加破解难度。 3. **验证码的其他安全措施**: ...
以上就是创建一个简单的PHP验证码类的基本步骤。`11.图片处理(验证码)image.php`可能是一个示例文件,用于调用`ValidationCode`类并显示生成的验证码。在实际应用中,你可能还需要考虑其他功能,如防止跨站请求伪造...
"好用的php验证码类库.zip"就是一个这样的资源,提供了易于使用的PHP验证码实现。 验证码类库通常包括以下几个核心组件: 1. **生成验证码**:这个过程涉及到随机字符串或数字的生成,通常结合特定的字体、颜色和...
以下是一个简单的GD库验证码实现步骤: 1. 生成随机字符串:使用`rand()`或`mt_rand()`函数生成一定长度的随机字符串。 2. 创建图像:使用`imagecreatetruecolor()`函数创建一个新的图像资源。 3. 设置背景:使用`...
标题提到的"不错的php验证码类"是一个专门为PHP设计的验证码生成库,它提供了自定义功能,允许开发者根据需求调整验证码的尺寸、颜色等视觉特性,以增加自动化识别的难度。 验证码类通常包含以下几个关键部分: 1....
PHP验证码类通常包含以下核心功能: 1. **生成随机数字或字母**:验证码通常由4-6个随机字符组成,这些字符可以是数字、小写字母或大写字母。生成随机字符串的方法是使用`rand()`或`mt_rand()`函数结合字符集。 2....