首页 > php图像处理 > php图片验证码代码

php图片验证码代码

在用户验证页面,如注册,登录的时候,为了加强用户登录的安全性,添加验证码验证代码,下面我为各位朋友提供几种不同同类型的php验证代码程序,最后一款是一款使用了验证代码的实例代码,实例代码如下:

<?php
date_default_timezone_set('asia/shanghai');
function setcode($len) {
    $code = '';
    for ($i = 0; $i < $len; $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 <= 100; $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.111cn.net';
            break;
        case 'char':
            $chars = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz';
            break;
        case 'number':
            $chars = '0123456789';
            break;
        default:
            $chars = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789';
            break;
    }
    $string = "";
    while (strlen($string) < $len) $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) < 10000); {
        $_session["login_check_num"] = $randval;
        //将四位整数验证码绘入图片
        imagestring($im, 5, 10, 3, $randval, $black);
    }
    //加入干扰象素
    for ($i = 0; $i < 200; $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库 . 


本文地址:http://www.phprm.com/tuxiang/fs4477.html

转载随意,但请附上文章地址:-)

标签:php验证码 php图片验证码

相关文章

发表留言