为了账号安全,请及时绑定邮箱和手机立即绑定

老师,我直接用的你的源代码,可是有的时候出现的数字是2个,有的时候是3个,?

正在回答

3 回答

你发来看看 哪段代码?^_^...

0 回复 有任何疑惑可以回复我~

估计是调用的字体种类中有的不能显示,  我也有这种情况 ,当只用一种字体的时候,就是4个了

0 回复 有任何疑惑可以回复我~

<?php
require_once 'string.func.php';
//通过GD库做验证码
function verifyImage($type=1,$length=4,$pixel=50,$line=5,$sess_name = "verify"){
    session_start();
    //创建画布
    $width = 80;
    $height = 28;
    $image = imagecreatetruecolor ( $width, $height );//创建画布
    $white = imagecolorallocate ( $image, 255, 255, 255 );//画布颜色
    $black = imagecolorallocate ( $image, 0, 0, 0 );//画笔颜色
    
    imagefilledrectangle ( $image, 1, 1, $width - 2, $height - 2, $white );
    //用填充矩形填充画布
    $chars = buildRandomString( $type, $length );//产生随机字符串
    $_SESSION [$sess_name] = $chars;//用SESSION记忆产生的字符串
    //$fontfiles = array ("MSYH.TTF", "MSYHBD.TTF", "SIMLI.TTF", "SIMSUN.TTC", "SIMYOU.TTF", "STZHONGS.TTF" );
    $fontfiles = array ("1.TTF","2.TFF" );
    //由于字体文件比较大,就只保留一个字体,如果有需要的同学可以自己添加字体,字体在你的电脑中的fonts文件夹里有,直接运行输入fonts就能看到相应字体
    for($i = 0; $i < $length; $i ++)
    {
        $size = mt_rand ( 14, 18 );//字符串随机大小
        $angle = mt_rand ( - 15, 15 );//角度
        $x = 5 + $i * $size;//横坐标
        $y = mt_rand ( 20, 26 );//纵坐标
        $fontfile = "../fonts/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];
        $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );//颜色
        $text = substr ( $chars, $i, 1 );
        imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text );//向画布image中写入字符串
    }
    if ($pixel) {
        for($i = 0; $i < 50; $i ++) {
            imagesetpixel ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $black );
        }
    }
    if ($line) {
        for($i = 1; $i < $line; $i ++) {
            $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );
            imageline ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $color );
        }
    }
    header ( "content-type:image/gif" );
    imagegif ( $image );
    imagedestroy ( $image );
}



 */
function buildRandomString($type=1,$length=4){//类型,长度
    if ($type == 1) {
        $chars = join ( "", range ( 0, 9 ) );//JOIN以空格连接0-9之间形成的字符串
    } elseif ($type == 2) {
        $chars = join ( "", array_merge ( range ( "a", "z" ), range ( "A", "Z" ) ) );
    } elseif ($type == 3) {
        $chars = join ( "", array_merge ( range ( "a", "z" ), range ( "A", "Z" ), range ( 0, 9 ) ) );
    }
    if ($length > strlen ( $chars )) {
        exit ( "字符串长度不够" );
    }
    $chars = str_shuffle ( $chars );
    return substr ( $chars, 0, $length );
}

就是两个函数。 调用后,出现的验证码和老师展示的用偏差啊,麻烦老师看看了。谢谢。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
手把手教你实现电商网站后台开发
  • 参与学习       117294    人
  • 解答问题       1999    个

手把手教你用PHP搭建电子商务平台,由浅入深教你搭建电商系统

进入课程
意见反馈 帮助中心 APP下载
官方微信