📄 code.php
字号:
<?php
session_start();
set_time_limit(600);
class CCheckCodeFile
{
//验证码位数
private $mCheckCodeNum = 5;
//产生的验证码
private $mCheckCode = '';
//验证码的图片
private $mCheckImage = '';
//干扰像素
private $mDisturbColor = '';
//干扰线条数
private $lineNumber=2;
//验证码的图片宽度
private $mCheckImageWidth = '55';
//验证码的图片宽度
private $mCheckImageHeight = '20';
/**
*
* @brief 输出头
*
*/
private function OutFileHeader()
{
header ("Content-type: image/png");
}
/**
*
* @brief 产生验证码
*
*/
private function CreateCheckCode()
{
//$this->mCheckCode = strtoupper(substr(md5(rand()),0,$this->mCheckCodeNum));
$this->mCheckCode = strtoupper(substr(rand(),0,$this->mCheckCodeNum));
$_SESSION['code']=$this->mCheckCode;
return $this->mCheckCode;
}
/**
*
* @brief 产生验证码图片
*
*/
private function CreateImage()
{
$this->mCheckImage = @imagecreate ($this->mCheckImageWidth,$this->mCheckImageHeight);
imagecolorallocate ($this->mCheckImage, rand(180,255), rand(180,255), rand(180,255));
return $this->mCheckImage;
}
/**
*
*创建图片边框
*参数分别为R G B 三种颜色代码
*
*/
private function CreateBorder($_r=140,$_g=140,$_b=230)
{
$borderColor=imagecolorallocate($this->mCheckImage,$_r,$_g,$_b);//可以在此改变边框颜色
imagerectangle($this->mCheckImage,0,0,$this->mCheckImageWidth-1,$this->mCheckImageHeight-1,$borderColor);
}
/**
*
* @brief 设置图片的干扰像素
*
*/
private function SetDisturbColor()
{
for ($i=0;$i<10;$i++)
{
$this->mDisturbColor = imagecolorallocate ($this->mCheckImage, rand(0,255), rand(0,255), rand(0,255));
imagesetpixel($this->mCheckImage,rand(0,$this->mCheckImageWidth),rand(0,$this->mCheckImageHeight),$this->mDisturbColor);
imageString($this->mCheckImage,2,rand(0,50),rand(0,18),"CK CK CK ",imageColorAllocate($this->mCheckImage,rand(200,255),rand(200,255),rand(200,255)));
}
}
/**
*
*创建干扰线条
*
*/
private function CreateLine()
{
for($i=0;$i<2;$i++)//可以修改循环次数改变干扰线条数目
{
$c1=imagecolorallocate($this->mCheckImage,rand(0,255),rand(0,255),rand(0,255));
$c2=imagecolorallocate($this->mCheckImage,rand(0,255),rand(0,255),rand(0,255));
$style=array($c1,$c2,$c1,$c2,$c1,$c2,$c1,$c2,$c1,$c1,$c2,);
imagesetstyle($this->mCheckImage, $style);
imageline
(
$this->mCheckImage,
rand(0,30),
rand(0,$this->mCheckImageHeight),
rand(40,$this->mCheckImageWidth),
rand(0,$this->mCheckImageHeight),
IMG_COLOR_STYLED
);
}
}
/**
*
* @brief 设置验证码图片的大小
*
* @param $width 宽
*
* @param $height 高
*
*/
public function SetCheckImageWH($width,$height)
{
if($width==''||$height=='')return false;
$this->mCheckImageWidth = $width;
$this->mCheckImageHeight = $height;
return true;
}
/**
*
* @brief 在验证码图片上逐个画上验证码
*
*/
private function WriteCheckCodeToImage()
{
for ($i=0;$i<=$this->mCheckCodeNum;$i++)
{
$bg_color = imagecolorallocate ($this->mCheckImage, rand(0,200), rand(0,100), rand(0,100));
$x = floor($this->mCheckImageWidth/$this->mCheckCodeNum)*$i+rand(0,3);
$y = rand(0,$this->mCheckImageHeight-15);
imagechar ($this->mCheckImage, 5, $x, $y, $this->mCheckCode[$i], $bg_color);
}
}
/**
*
* @brief 输出验证码图片
*
*/
public function OutCheckImage()
{
$this ->OutFileHeader();
$this ->CreateCheckCode();
$this ->CreateImage();
$this ->SetDisturbColor();
$this ->CreateLine();
$this ->CreateBorder();
$this ->WriteCheckCodeToImage();
imagepng($this->mCheckImage);
imagedestroy($this->mCheckImage);
}
}
$c_check_code_image = new CCheckCodeFile();
$c_check_code_image ->SetCheckImageWH(60,22);//设置显示验证码图片的尺寸
$c_check_code_image ->OutCheckImage();
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -