摘要:php圖形驗證程式碼顯示不出來
問題:
最近在做這方面的網頁~需要用到圖形驗證~
但是在網路上找到的原始碼圖片都顯示不出來~
不知道哪位可以幫我解答一下~
要能夠正常顯示圖形驗證的圖片並檢查是否正確~
解決方案:
-
沒有掛gd2
- 在你的php.ini裡找到;extension=php_gd2.dll
- 把前面的分號刪除
-
再重新啟動IIS或apache
-
驗證碼用使用有字型的ttf檔
- 檢查程式是不是有.ttf的字串,如果有就是有使用字型
- 建議可以換成不使用ttf的程式,如:
<?php
$img_height = 25; // 圖形高度
$img_width = 80; // 圖形寬度
$mass = 200; // 雜點的數量,數字愈大愈不容易辨識
$num=""; // rand後所存的地方
$num_max = 6; // 產生6個驗證碼
for( $i=0; $i<$num_max; $i++ )
{
$num .= rand(0,9);
}
Session_start();
$_SESSION["Checknum"] = $num; // 將產生的驗證碼寫入到session
// 建立圖片,定義圖形和文字顏色
Header("Content-type: image/PNG");
srand((double)microtime()*1000000);
$im = imagecreate($img_width,$img_height);
$black = ImageColorAllocate($im, 0,0,0); // (0,0,0)文字為黑色
$gray = ImageColorAllocate($im, 200,200,200); // (200,200,200)背景是灰色
imagefill($im,0,0,$gray);
// 在圖形產上黑點,起干擾作用;
for( $i=0; $i<$mass; $i++ )
{
imagesetpixel($im, rand(0,$img_width), rand(0,$img_height), $black);
}
// 將數字隨機顯示在圖形上,文字的位置都按一定波動範圍隨機生成
$strx=rand(3,8);
for( $i=0; $i<$num_max; $i++ )
{
$strpos=rand(1,8);
imagestring($im,5,$strx,$strpos, substr($num,$i,1), $black);
$strx+=rand(8,14);
}
ImagePNG($im);
ImageDestroy($im);
?>