PHP verification code generation--memo

巴扎黑
Release: 2016-11-29 09:38:18
Original
1216 people have browsed it

<?php 
session_start();//保存生成值,以与用户输入比较
//-------------------------------------------------------------------------
$img_w       = 80;// 设置图片宽
$img_h       = 20;// 设置图片高
$pixel_num   = 200;//点越多干扰越大
$is_set_line = true;// 启用干扰线
$pixel_mode  = 2;// 干扰点模式,1,同色;2,杂色
//-------------------------------------------------------------------------
// 随机数产生器
function make_seed()
{
    list($usec, $sec) = explode(&#39; &#39;, microtime());
    return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());//4.2.0以下版本适用
$authnum = mt_rand(100, 99999);
// 加入session
$_SESSION[&#39;verifycode&#39;]=$authnum;
//echo $authnum;
//生成验证码图片
Header("Content-type: image/PNG");
$im = imagecreatetruecolor($img_w, $img_h);
$bg_color = ImageColorAllocate($im, mt_rand(250,255),mt_rand(250,255),mt_rand(250,255));
// 绘制背景
imagefill($im,0,0,$bg_color);
$total_width = 0;
$word_info = array();
// 循环,获取文字信息
$word_length = strlen($authnum);
for($ii=0; $ii<$word_length; $ii++)
{
    $word_space = mt_rand(1,5);
    $font = rand(3,5);
    mt_rand(1,9)%2 == 0?$top = 1:$top = 3;
    $word_info[$ii][&#39;char&#39;]   = substr($authnum,$ii,1);
    $word_info[$ii][&#39;font&#39;]   = $font;
    $word_info[$ii][&#39;offset&#39;] = $top;
    if($ii == 0)
    {
        $word_info[$ii][&#39;width&#39;] = 0;
    }
    $word_info[$ii][&#39;width&#39;]  = imageFontWidth($font)+$word_space;
    $word_info[$ii][&#39;height&#39;] = imageFontHeight($font);
    $word_info[$ii][&#39;color&#39;]  = imageColorAllocate($im, mt_rand(0,50),mt_rand(0,150),mt_rand(0,200));
    // 文字总宽度
    $total_width += $word_info[$ii][&#39;width&#39;];
    // 取第一个字体的高度
    if($ii == 0)
    {
        $total_height = imagefontHeight($font);
    }
}
// 计算偏移
$offset_x = floor(($img_w - $total_width)/2);
$offset_y = floor(($img_h - $total_height)/2);
// 填充验证码
$wid = 0;
$i = 0;
foreach($word_info as $key=>$val)
{
    if($i>0)
    {
        $wid += $val[&#39;width&#39;];
    }
    imagestring($im, $val[&#39;font&#39;], $offset_x + $wid, $val[&#39;offset&#39;] + $offset_y, $val[&#39;char&#39;], $val[&#39;color&#39;]);
    $i++;
}
switch($pixel_mode)
{
    case 1:
        $pixel_color  = ImageColorAllocate($im,
                                        mt_rand(50,255),
                                        mt_rand(50,255),
                                        mt_rand(50,255));
        // 干扰象素
        for($i=0;$i<$pixel_num;$i++)
        {
            imagesetpixel($im, mt_rand()%$img_w , mt_rand()%$img_h , $pixel_color);
        }
        break;
    case &#39;2&#39;:
        // 干扰象素
for ($i=0;$i<=128;$i++)
{
$pixel_color = imagecolorallocate ($im, rand(0,255), rand(0,255), rand(0,255));
imagesetpixel($im,mt_rand(2,128),mt_rand(2,38),$pixel_color);
}
        break;
    default:
        $pixel_color  = ImageColorAllocate($im,
                                        mt_rand(50,255),
                                        mt_rand(50,255),
                                        mt_rand(50,255));
        // 干扰象素
        for($i=0;$i<$pixel_num;$i++)
        {
            imagesetpixel($im, mt_rand()%$img_w , mt_rand()%$img_h , $pixel_color);
        }
        break;
}
ImagePNG($im);
?>
Copy after login

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!