一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

php图片验证码代码

时间:2022-06-24 21:11:38 编辑:袖梨 来源:一聚教程网

代码如下 复制代码
date_default_timezone_set('asia/shanghai');
function setcode($len)
{
$code = '';
for ($i=0;$i {
$code .= chr(drand());
}
return $code;
}
//生成一个随机字符
function drand()
{
$rand = mt_rand(0,2);
$str = '';
switch ($rand)
{
case 0: $str = mt_rand(48,57);break;//数字
case 1: $str = mt_rand(65,90);break;//大写字母
case 2: $str = mt_rand(97,122);break;//小写字母
}
return $str;
}
$_session['checkcode'] = $code = setcode(5);

//php图片验证码原代码,需支持gd2.dll扩展,需修改php.ini后重启iis or ap

代码如下 复制代码

session_start();
session_register('safecode');
$type = 'gif';
$width= 40;
$height= 16;
header("content-type: image/".$type);
srand((double)microtime()*1000000);
$randval = randstr(4,"");
if($type!='gif' && function_exists('imagecreatetruecolor')){
$im = @imagecreatetruecolor($width,$height);
}else{
$im = @imagecreate($width,$height);
}
$r = array(225,211,255,223);
$g = array(225,236,237,215);
$b = array(225,236,166,125);

$key = rand(0,3);

$backcolor = imagecolorallocate($im,$r[$key],$g[$key],$b[$key]);//背景色(随机)
$bordercolor = imagecolorallocate($im, 0, 0, 0);//边框色
$pointcolor = imagecolorallocate($im, 255, 170, 255);//点颜色

@imagefilledrectangle($im, 0, 0, $width - 1, $height - 1, $backcolor);//背景位置
@imagerectangle($im, 0, 0, $width-1, $height-1, $bordercolor); //边框位置
$stringcolor = imagecolorallocate($im, 255,51,153);

for($i=0;$i $pointx = rand(2,$width-2);
$pointy = rand(2,$height-2);
@imagesetpixel($im, $pointx, $pointy, $pointcolor);
}

@imagestring($im, 3, 5, 1, $randval, $stringcolor);
$imagefun='image'.$type;
$imagefun($im);
@imagedestroy($im);
$_session['safecode'] = $randval;
//产生随机字符串
function randstr($len=6,$format='all') {
switch($format) {
case 'all':
$chars='abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789www.111com.net'; break;
case 'char':
$chars='abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'; break;
case 'number':
$chars='0123456789'; break;
default :
$chars='abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789';
break;
}
$string="";
while(strlen($string) $string.=substr($chars,(mt_rand()%strlen($chars)),1);
return $string;
}

//调用此页面,如果下面的式子成立,则生成验证码图片
if($_get["action"]=="verifycode")
{
rand_create();
}
//验证码图片生成
function rand_create()
{
//通知浏览器将要输出png图片
header("content-type: image/png");
//准备好随机数发生器种子
srand((double)microtime()*1000000);
//准备图片的相关参数
$im = imagecreate(62,20);
$black = imagecolorallocate($im, 0,0,0); //rgb黑色标识符
$white = imagecolorallocate($im, 255,255,255); //rgb白色标识符
$gray = imagecolorallocate($im, 200,200,200); //rgb灰色标识符
//开始作图
imagefill($im,0,0,$gray);
while(($randval=rand()%100000) $_session["login_check_num"] = $randval;
//将四位整数验证码绘入图片
imagestring($im, 5, 10, 3, $randval, $black);
}
//加入干扰象素
for($i=0;$i $randcolor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
}
//输出验证图片
imagepng($im);
//销毁图像标识符
imagedestroy($im);
}
//检验验证码
function rand_check()
{
if($_post["reg_rand"] == $_session["login_check_num"]){
return true;
}
else{
exit("验证码输入错误");
}
}

//验证码通过gd生成png图片,并把$randval随机数字赋给$_session['login_check_num'],在通过用户输入的$_post进行比较,来判断是否正确。达到需要实现的功能,需要修改php.ini文件,使php支持gd库

热门栏目