php面向对象写验证码,PHP面向对象简易验证码类

PHP简单验证码类,可直接使用,替换字体路径

<?php class authCode { private static $instance = null; #实例对象 private $width = 120; #图片宽度 private $height = 40; #图片高度 private $font = 'font/elephant.ttf'; #字体文件路径 private $fontSize = 14; #字体大小 private $strLen = 6; #字符个数 private $auth_code_str = null; #验证码结果 private $imgResult = null; #图片资源 #入口文件 静态方法调用 实例化对象 可用 对象方法调用 public static function img() { if (!(self::$instance instanceof self)) { self::$instance = new self(); } return self::$instance; } #随机颜色 private function randomColor($img = null, $min = 0, $max = 255) { $rgb = []; for ($i = 1; $i <= 3; $i ) { $rgb[] = str_pad(rand($min, $max), 3, 0, STR_PAD_LEFT); } return imagecolorallocate($img, $rgb[0], $rgb[1], $rgb[2]); } #随机字符串 private function randomStr($num = 4) { if ($num > 0) { $string = array_merge(range('a', 'z'), range(0, 9), range('A', 'Z'), range(0, 9)); for ($i = 1; $i <= $num; $i ) { shuffle($string); $this->auth_code_str .= array_pop($string); } } return $this; } #创建验证码 public function createAuthCode(&$codeStr = false) { if (!$this->auth_code_str) { $this->randomStr($this->strLen); } if ($codeStr !== false && empty($codeStr)) { $codeStr = $this->auth_code_str; } else if (!empty($codeStr) && $codeStr !== false) { $this->auth_code_str = $codeStr; } $this->imgResult = imagecreatetruecolor($this->width, $this->height); $background = $this->randomColor($this->imgResult, 200); imagefilledrectangle($this->imgResult, 0, 0, $this->width, $this->height, $background); $y = ($this->height - $this->fontSize); $string = str_split($this->auth_code_str, 1); for ($i = 0; $i < count($string); $i ) { $frontColor = $this->randomColor($this->imgResult, 0, 200); imagefttext($this->imgResult, $this->fontSize, rand(0, 10), ($this->fontSize 2) * $i 10, $y, $frontColor, $this->font, $string[$i]); } return $this; } #生成线 public function line($line = 3) { $line = $line ?: 3; for ($i = 1; $i <= $line; $i ) { $lineColor = $this->randomColor($this->imgResult, 0, 200); imageline($this->imgResult, rand(0, $this->width / 5), rand(5, $this->height - 5), rand($this->width / 1.3, $this->width), rand(5, $this->height - 5), $lineColor); } return $this; } #噪点 public function pixel($num = 50){ $num = $num ?: 3; for ($i = 1; $i <= $num; $i ) { $lineColor = $this->randomColor($this->imgResult, 0, 100); imagesetpixel($this->imgResult, rand(0, $this->width), rand(0, $this->height), $lineColor); } return $this; } #设置大小 public function size($width = null, $height = null) { $this->width = $width ?: 120; $this->height = $height ?: 40; return $this; } #设置字体大小 public function fontSize($fontsize = 14) { $this->fontSize = $fontsize ?: 14; return $this; } #设置字体 public function font($file = null) { if (is_null($file) === true) { $this->font = 'font/elephant.ttf'; } else { $this->font = $file; } return $this; } #设置长度 public function strlen($num = null) { $this->strLen = $num ?: 6; return $this; } public function display() { ob_end_flush(); header("content-type:image/jpeg"); imagejpeg($this->imgResult, null, 100); imagedestroy($this->imgResult); exit; } } #简单调用方法 authCode::img()->createAuthCode()->display(); /* #指定字符串调用 $string = 'abc123'; authCode::img()->createAuthCode($string)->display(); #设置图片大小、字数、字体大小 authCode::img()->strlen(8)->size(300,100)->fontSize(30)->createAuthCode()->display(); #添加噪点 authCode::img()->createAuthCode()->line()->pixel()->display(); */ ?>

以上便是关于验证码类的封装过程,可以直接使用。若有错误请指出。

更多相关问题请访问jquery中文网:PHP视频教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值