猿问

php验证码制作

<?php

require_once 'strings.func.php';

//通过GD库做验证码

//function verifyImage($type=1,$length=4,$pixel=0,$line=0,$sess_name = "verify"){

header ( "content-type:image/png" );

   // 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 );

    $sess_name="verify";

   $_SESSION [$sess_name] = $chars;

   $fontfiles = array ("MSYH.TTF", "MSYHBD.TTF", "SIMLI.TTF", "SIMSUN.TTC", "SIMYOU.TTF", "STZHONGS.TTF" );

    //$fontfiles = array ("MSYH.TTF" );

    //由于字体文件比较大,就只保留一个字体,如果有需要的同学可以自己添加字体,字体在你的电脑中的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 );

    

    /*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 );

        }

    }

    */

    imagegif ( $image );

    imagedestroy ( $image );

}

用image标签输出不了。

duranze
浏览 1686回答 1
1回答

rubbit

给你个建议,自己一样一样的检查从画布创建开始一步一步来,,,就很快了,
随时随地看视频慕课网APP
我要回答