首页 > 后端开发 > php教程 > PHP校验码生成-备忘

PHP校验码生成-备忘

WBOY
发布: 2016-06-13 13:06:11
原创
934 人浏览过

PHP校验码生成--备忘

<?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(' ', microtime());
    return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());//4.2.0以下版本适用
$authnum = mt_rand(100, 99999);
// 加入session
$_SESSION['verifycode']=$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]['char']   = substr($authnum,$ii,1);
    $word_info[$ii]['font']   = $font;
    $word_info[$ii]['offset'] = $top;
    if($ii == 0)
    {
        $word_info[$ii]['width'] = 0;
    }
    $word_info[$ii]['width']  = imageFontWidth($font)+$word_space;
    $word_info[$ii]['height'] = imageFontHeight($font);
    $word_info[$ii]['color']  = imageColorAllocate($im, mt_rand(0,50),mt_rand(0,150),mt_rand(0,200));

    // 文字总宽度
    $total_width += $word_info[$ii]['width'];

    // 取第一个字体的高度
    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['width'];
    }
    imagestring($im, $val['font'], $offset_x + $wid, $val['offset'] + $offset_y, $val['char'], $val['color']);
    $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 

登录后复制
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板