<?php
check_code();
//隨機產生驗證碼的字元或數字
function check_code($width=100, $height=50,$num=4, $type='jpeg')
{
# $i=imagecreate($width,$height) ;
$string='';
for($j=0;$j<$num;$j )
{## #. =mt_rand(0,2);
switch($rand)
{
$ {
ascii=mt_rand(48,57) ;
break;
case 1:
_ break;
case 2 :
$ascii=mt_rand(97,122);
#; ing.=sprintf('%c' ,$ascii) ;//ascii字元解碼
}
#
//產生驗證碼背景顏色(randbg():函數呼叫)
##imagefilledrectangle($i,0,0,$width,$height,randbg($i));
//產生隨機幹擾(randpix():函數呼叫)for($j=0;$j<50;$j )
}
$x=floor($width/$num)*$j 2;
$y=mt_rand(3,$height-15);
imagechar($i,5,$x,$y,$string[$j], randpix($i));
}
#//圖片格式## $fuc ='image'.$type;
$have='cotent-type:image'.$type;
if(function_exists($fuc))
{
#o }
# else
## echo '不支持圖片類型';
}
imagedestroy($i);
return $string;
}
//背景顏色函數功能模組
function randbg($i)
{
# return imagecolorallocate($i,mt_rand5) mt_rand(135,255),mt_rand(135,255));
}
//幹擾元素或字元顏色函數功能模組
function randpix($i)
{
## randpix($i) {## color return image,colorallocate($i,mt_rand(0,135) color return image,colorallocate($i,mt_rand(0,135) color return_mtallocate($i,mt_rand(0,135) color return_mt. (0,135),mt_rand(0,135));
}
#?>
路过2017-11-08 13:48:01
这是个验证码类,你可以参考一下 <?php class Captcha { private $width; private $height; private $codeNum; private $code; private $im; function __construct($width=80, $height=20, $codeNum=4) { $this->width = $width; $this->height = $height; $this->codeNum = $codeNum; } function showImg() { //创建图片 $this->createImg(); //设置干扰元素 $this->setDisturb(); //设置验证码 $this->setCaptcha(); //输出图片 $this->outputImg(); } function getCaptcha() { return $this->code; } private function createImg() { $this->im = imagecreatetruecolor($this->width, $this->height); $bgColor = imagecolorallocate($this->im, 0, 0, 0); imagefill($this->im, 0, 0, $bgColor); } private function setDisturb() { $area = ($this->width * $this->height) / 20; $disturbNum = ($area > 250) ? 250 : $area; //加入点干扰 for ($i = 0; $i < $disturbNum; $i++) { $color = imagecolorallocate($this->im, rand(0, 255), rand(0, 255), rand(0, 255)); imagesetpixel($this->im, rand(1, $this->width - 2), rand(1, $this->height - 2), $color); } //加入弧线 for ($i = 0; $i <= 5; $i++) { $color = imagecolorallocate($this->im, rand(128, 255), rand(125, 255), rand(100, 255)); imagearc($this->im, rand(0, $this->width), rand(0, $this->height), rand(30, 300), rand(20, 200), 50, 30, $color); } } private function createCode() { $str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ"; for ($i = 0; $i < $this->codeNum; $i++) { $this->code .= $str{rand(0, strlen($str) - 1)}; } } private function setCaptcha() { $this->createCode(); for ($i = 0; $i < $this->codeNum; $i++) { $color = imagecolorallocate($this->im, rand(50, 250), rand(100, 250), rand(128, 250)); $size = rand(floor($this->height / 5), floor($this->height / 3)); $x = floor($this->width / $this->codeNum) * $i + 5; $y = rand(0, $this->height - 20); imagechar($this->im, $size, $x, $y, $this->code{$i}, $color); } } private function outputImg() { if (imagetypes() & IMG_JPG) { header('Content-type:image/jpeg'); imagejpeg($this->im); } elseif (imagetypes() & IMG_GIF) { header('Content-type: image/gif'); imagegif($this->im); } elseif (imagetype() & IMG_PNG) { header('Content-type: image/png'); imagepng($this->im); } else { die("Don't support image type!"); } } } // 这样调用 新建文件 <?php require_once 'captcha.class.php'; $captcha = new Captcha(80,30,4); $captcha->showImg();