做的驗證碼可以顯示干擾線和點但是數字顯示不出來,望大神幫忙看一下,謝謝
<?php require_once?'string.func.php'; function?verifyImage($type=1,$length=4,$pixel=40,$line=20,$sess_name?=?"verify"){ $sess_name?=?"verify"; session_start(); $width?=?200; $height?=?100; $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?=getString?(?$type,?$length?); $_SESSION?[$sess_name]?=?$chars; $fontfiles?=??array("consola.ttf","consolaz.ttf"); 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?=?"../font/"?.?$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?); ????} } ob_clean(); header?(?"content-type:image/gif"?); imagegif($image); imagedestroy?(?$image?); } ob_clean(); verifyImage(3,4,20,11);
字體在font文件中
<?php? function?getString($type?=?3,$length?=?4){ ????if($type?==?1){ ????????$chars?=?join("?",range("A",?"Z")); ????}elseif($type?==?2){ ????????$chars?=?join("?",range(0,9)); ????}elseif($type?==?3){ ????????$chars?=?join("?",array_merge(range(0,9),range("A",?"Z"),range("a",?"z"))); ????} ???if?($length?>?strlen?(?$chars?))?{ exit?(?"字符串長度不夠"?); } $chars?=?str_shuffle?(?$chars?); return?substr?(?$chars,?0,?$length?); } function?getUniName(){ ????return?md5(uniqid(microtime(true),true)); } function?getExt($filename){ ????return?strtolower(end(explode(".",$filename))); }
2017-01-05
$sess_name?=?"verify";你在第三行已經變成可選參數賦值,為什么還要在第四行賦值?
2017-01-04
驗證碼不能顯示完全,想問一下,如何讓4個字母全部顯示