亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

顯示一個黑色背景中間白框

https://img1.sycdn.imooc.com//5b5ffc590001992312860719.jpg

求大神指導下!~


源碼:

<?php
require_once?'string.func.php';
$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);
$type=1;
$length?=4;
$chars?=?buildRandomString($type,$length);
$sess_name?=?"verify";
$_SESSION[$sess_name]?=?$chars;
$fontfiles?=?array("SIMYOU.TTF","STSONG.TTF","msyh.ttc","msyhbd.ttc","msyhl.ttc","simsun.ttc");

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);
????$fontfiles="../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,$fontfiles,$text);
}
header("content-type:image/gif");
imagegif($image);
imagedestroy($image);



<?php
function?buildRandomString($type=1,$length=4){
????if?($type?==?1)?{
????????$chars?=?join?(?"",?range?(?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?);
}


正在回答

7 回答

ob_clean();?//關鍵代碼,防止出現'圖像因其本身有錯無法顯示'的問題
加上這句,放在header前面,立馬解決,我剛碰到這問題

https://img1.sycdn.imooc.com//5c9adc620001b7c006500519.jpg

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

你在最后調用的時候verifyImage(4,50,2);把參數傳進去就好了,我的也有過類似問題,希望可以幫到你

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

emmm……把路徑改成絕對路徑就可以了,不過不知道相對路徑為什么會出問題

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

同樣得到問題,樓主解決了嗎

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

https://img1.sycdn.imooc.com//5b653107000118a908010156.jpg我把你的代碼拷貝過來試了一下,字體那塊出錯了,改了以后就正常了。你看看是不是字體文件寫錯了,或者是字體路徑?

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

我也出現過這種情況? 我就把header(); imagepng(); imagedestroy();這三句先注釋掉,再運行就會報哪兒錯了

0 回復 有任何疑惑可以回復我~
這個也是驗證碼的制作代碼,你可以用我的參考一下
<?php
session_start();
function?verifyImage($length,$pixel,?$line){
????$image?=?imagecreatetruecolor(100,30);
????$bgcolor?=?imagecolorallocate($image,255,255,255);//#FFFFFFFFFFFF
????imagefill($image,0,0,$bgcolor);
????$captch_name="";
????if($length){
????for?($i=0;$i<$length;$i++){
????????$fontsize?=?6;
????????$fontcolor?=?imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
????????$data='abcdefghijkmnpqrstuvwxy3456789';
????????$fontcontent=substr($data,rand(0,strlen($data)),1);
????????$captch_name.="$fontcontent";
????????$x?=?($i?*?100/4)+rand(5,10);
????????$y?=?rand(5,10);
????????imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
????}
????}
????$_SESSION['name']=$captch_name;
????if($pixel){??//隨機點
????????for($i=0;$i<$pixel;$i++){
????????????$pointcolor?=?imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));
????????????imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);
????????}
????}
????if($line){??//隨機線
????????for($i=0;$i<$line;$i++){
????????????$linecolor?=?imagecolorallocate($image,rand(60,220),rand(60,220),rand(60,220));
????????????imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);
????????}
????}
????header('content-type:?image/png');
????imagepng($image);
//銷毀
????imagedestroy($image);

}
verifyImage(4,50,2);
??>


1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
手把手教你實現電商網站后臺開發
  • 參與學習       117255    人
  • 解答問題       2101    個

手把手教你用PHP搭建電子商務平臺,由淺入深教你搭建電商系統

進入課程

顯示一個黑色背景中間白框

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號