PHP实现变色验证码

jopen 8年前

    <?php        header("Content-type: image/png,charset='utf-8'");        $im = imagecreatetruecolor(400, 30);        //白色        $white = imagecolorallocate($im, 255, 255, 255);        //红色        $red = imagecolorallocate($im, 255, 0, 0);        //黑色        $black=imagecolorallocate($im, 0, 0, 0);        //绿色        $green=imagecolorallocate($im, 0, 255, 0);        //蓝色        $blue=imagecolorallocate($im, 0, 0, 255);        $color_arr=array($green,$blue,$red);        $color=array_rand($color_arr);        $text = '我靠这验证码太变态啦';        $textlen=iconv_strlen($text,'utf-8');//计算字符串长度        //随机截取两个字符,变色显示        $p1=rand(1,$textlen)-1;        while(($p2=rand(1,$textlen)-1)==$p1);        $w1=iconv_substr($text,$p1,1,'utf-8');        $w2=iconv_substr($text,$p1,1,'utf-8');        //字体文件 (PS:T不错的php Q扣峮:276167802,验证:csl)        $font = 'simkai.ttf';        imagefilledrectangle($im, 0, 0, 399, 29, $white);        for($i=0;$i<$textlen;$i++)        {        if($i==$p1||$i==$p2)        {        imagettftext($im, 15, 0, 20*($i-1)+20, 20, $color_arr[$color], $font, iconv_substr($text,$i,1,'utf-8'));        }        else        {        imagettftext($im, 15, 0, 20*($i-1)+20, 20, $black, $font, iconv_substr($text,$i,1,'utf-8'));        }        }        imagepng($im);        imagedestroy($im);        ?>