PHP 原生PHP 制作验证码 验证码

//创建画布
$img = imagecreatetruecolor(147, 40);


//填充颜色
$backcolor = imagecolorallocate($img, mt_rand(200, 255), mt_rand(150, 255), mt_rand(200, 255));
imagefill($img, 0, 0, $backcolor);


//随机生成验证码
$arr = array_merge(range(0,9), range('a','z'), range('A','Z'));
//打乱数组
shuffle($arr);
//随机取出4个下标
$array_key = array_rand($arr, 4);
//根据下标取出值
$str = '';
foreach($array_key as $v)
{
$str .= $arr[$v];
}
//存储到session中
session_start();
$_SESSION['code'] = $str;
//计算间距
$span = floor(174/(4+1));
for($i=0; $i<4; $i++)
{
//给字体添加颜色
$stringcolor = imagecolorallocate($img, mt_rand(0,255), mt_rand(30, 250), mt_rand(200,250));
//把文字写到画布中
imagestring($img, 5, ($i+0.5)*$span, 12, $str[$i], $stringcolor);
}


//添加干扰线
for($i=0; $i<6; $i++)
{
$linecolor = imagecolorallocate($img, mt_rand(10,150), mt_rand(30,200), mt_rand(200,255));
imageline($img, mt_rand(0,169), mt_rand(0,39), mt_rand(0, 169), mt_rand(0, 39), $linecolor);
}


//添加干扰点
for($i=0; $i<40; $i++)
{
$pixelcolor = imagecolorallocate($img, mt_rand(100,150), mt_rand(50,100), mt_rand(150,200));
imagesetpixel($img, mt_rand(0, 169), mt_rand(0, 39), $pixelcolor);
}


//生成验证码
header("Content-type:image/png");
imagepng($img);

  • 676
  • A+
发布时间:2017-10-25 17:44:32