看到PHP100视频34讲写的php验证码类,支持自定义图片大小、字符个数、字符类型、字符大小、图片类型、汉字验证码、干扰线等,注释详细
字体文件是微软雅黑,和验证码文件同目录,文件名msyh.ttf,可以从C:\windows\fonts目录找到,复制到同目录即可
/**
* @version Id: imgcode.php 2012-11-30 k
* @package imgcode.php
* @Purview default
* @link http://www.3oom.com
*/
$img = new img_code();
$img->show();
class img_code{
private $img_type = 'png';//输出图片类型 png,gif,jpg
private $line = TRUE;//是否增加干扰线
private $text = '2';//验证码类型:0数字,1字母,2汉字
private $text_size= 20;//字体大小
private $length = 4;//字符串长度
private $width = 120;//图片宽度,像素
private $height = 40;//图片高度,像素
private $font_file= 'msyh.ttf';//字体文件
public $img = '';
/*
* 创建图片
*/
private function img_create(){
$this->img = imagecreate($this->width, $this->height);
imagecolorallocate($this->img, 255,255,255);
}
/*
* 显示图片
*/
public function show(){
@session_start();
$this->img_create();
if($this->line){
$this->img_line();
}
$this->img_text();
$this->img_header();
imagedestroy($im);
exit();
}
/*
* 生成字符串
*/
private function img_text(){
$rand_string = '';
$im = &$this->img;
$fontColor[] = imagecolorallocate($im, 0x15, 0x15, 0x15);
$fontColor[] = imagecolorallocate($im, 0x95, 0x1e, 0x04);
$fontColor[] = imagecolorallocate($im, 0x93, 0x14, 0xa9);
$fontColor[] = imagecolorallocate($im, 0x12, 0x81, 0x0a);
$fontColor[] = imagecolorallocate($im, 0x06, 0x3a, 0xd5);
if($this->text
//数字,字母
for($i=0;$ilength;$i++){
if($this->text){
$c=chr(mt_rand(65,90));
}else{
$c=chr(mt_rand(48,57));
}
if( $c=='I' ) $c = 'K';
if( $c=='O' ) $c = 'E';
$rand_string[]=$c;
}
}else{
//汉字,此处可以引入汉字文件
$arr=array('大','小','多','少','人','天','水','土','木','火','云');
for($i=0;$ilength;$i++){
$l = count($arr)-1;
//文件编码为gbk需要转换
//$rand_string[] = iconv('gb2312','utf-8',$arr[mt_rand(0,$l)]);
$rand_string[] = $arr[mt_rand(0,$l)];
}
}
$_SESSION['imgcode']=$rand_string;
$_c = count($rand_string);
for($i=0;$i
{
if($this->text == 1){
$rand_string[$i] = strtoupper($rand_string[$i]);
}
$c_fontColor = $fontColor[mt_rand(0,4)];
$y = $this->height-($this->height-$this->text_size)/2;
$x = ($this->width-($this->text_size+2)*$this->length)/2;
$y_pos = $i==0 ? $x : $i*($this->text_size+2)+$x;
$c = mt_rand(0, 15);
@imagettftext($im, $this->text_size, $c, $y_pos, $y, $c_fontColor, $this->font_file, $rand_string[$i]);
}
}
/*
* 生成线条
*/
private function img_line(){
$im = &$this->img;
$img_width = $this->width;
$img_height= $this->height;
//背景横线
$lineColor1 = imagecolorallocate($im, 0xda, 0xd9, 0xd1);
for($j=3; $j
{
imageline($im, 2, $j, $img_width - 2, $j, $lineColor1);
}
//背景竖线
$lineColor2 = imagecolorallocate($im, 0xda,0xd9,0xd1);
for($j=2;$j
{
imageline($im, $j, 0, $j+8, $img_height, $lineColor2);
}
//画边框
if( $use_boder && $filter_type == 0 )
{
$bordercolor = imagecolorallocate($im, 0x9d, 0x9e, 0x96);
imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $bordercolor);
}
}
/*
* 生成输出
*/
private function img_header(){
header("Pragma:no-cache\r\n");
header("Cache-Control:no-cache\r\n");
header("Expires:0\r\n");
if($this->img_type == 'jpg'){
header('Content-type: image/jpeg');
imagejpeg($this->img);
}else if($this->img_type == 'png'){
header('Content-type: image/png');
imagepng($this->img);
}else{
header('Content-type: image/gif');
imagegif($this->img);
}
}
}
文章来源:http://www.3oom.com/blog/50.html

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Dreamweaver Mac版
视觉化网页开发工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具