> 백엔드 개발 > 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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿