PHP实现适用于自定义的验证码类
程序员文章站
2024-02-21 16:31:16
本文实例为大家分享了php验证码类,利用对象来实现的验证码类,供大家参考,具体内容如下
本文实例为大家分享了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; public $height = 25; public $code; public $code_len = 4; public $code_str = "329832983dsdskdslkqwewq2lkfdsfsdjfdsfdsjwlkfj93290kfdskjfdsoidslk"; public $bg_color = '#dcdcdc'; public $font_size = 16; public $font = 'font.ttf'; public $font_color = '#000000'; //创建验证码饿字符创 public function create_code(){ $code = ''; for( $i=0;$i<$this->code_len;$i++ ){ $code .= $this->code_str[mt_rand(0, strlen($this->code_str)-1)]; } return $this->code = $code; } //输出图像 public function getimage(){ $w = $this->width; $h = $this->height; $bg_color = $this->bg_color; $img = imagecreatetruecolor($w, $h); $bg_color = imagecolorallocate($img, hexdec(substr($bg_color, 1,2)), hexdec(substr($bg_color, 3,2)), hexdec(substr($bg_color, 5,2))); imagefill($img, 0, 0, $bg_color); $this->img = $img; $this->create_font(); $this->create_pix(); $this->show_code(); } //写入验证码 public function create_font(){ $this->create_code(); $color = $this->font_color; $font_color = imagecolorallocate($this->img, hexdec(substr($color,1,2)), hexdec(substr($color, 3,2)), hexdec(substr($color,5,2))); $x = $this->width/$this->code_len; for( $i=0;$i<$this->code_len;$i++ ){ $txt_color = imagecolorallocate($this->img, mt_rand(0,100), mt_rand(0, 150), mt_rand(0, 200)); imagettftext($this->img, $this->font_size, mt_rand(-30, 30), $x*$i+mt_rand(3, 6), mt_rand($this->height/1.2, $this->height), $txt_color, $this->font , $this->code[$i]); //imagestring($this->img, $this->font_size, $x*$i+mt_rand(3, 6),mt_rand(0, $this->height/4) , $this->code[$i], $font_color); } $this->font_color = $font_color; } //画干扰线 public function create_pix(){ $pix_color= $this->font_color; for($i=0;$i<100;$i++){ imagesetpixel($this->img, mt_rand(0, $this->width),mt_rand(0, $this->height), $pix_color); } for($j=0;$j<4;$j++){ imagesetthickness($this->img, mt_rand(1, 2)); imageline($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height), $pix_color); } } //得到验证码 public function getcode(){ return strtoupper($this->code); } //输出验证码 private function show_code(){ header("content-type:image/png"); imagepng($this->img); imagedestroy($this->img); } }
效果图:
精彩专题分享:asp.net验证码大全 php验证码大全 java验证码大全
以上就是使用对象编写的验证码类的全部内容,希望对大家学习php程序设计有所帮助。