大家好,我是因為需求,最近在學php的小白,目前被交付做圖形驗證碼以及手機驗證碼(還未開始做),身為新手的我只好去網路上找現成的程式碼(php),但是不管是哪一個大大貢獻出的程式碼,我複製貼上後改一改都無法顯現出圖形驗證碼的圖(我有啟用GD2),畫面只有一個灰邊的小正方形,也沒有出現錯誤訊息,請問各位高手,我是否少了什麼重要的操作?萬分感謝!!
GD2
顯示結果
以下是我其中一個測試的程式碼:
<?php
function rand_str($length) {
// 驗證碼中所需要的字元
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$str = '';
for($i = 0; $i < $length; $i++)
{
// 隨機擷取 $chars 中的任意一位字元;
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
}
return $str;
}
function rand_color($image){
// 生成隨機顏色
return imagecolorallocate($image, rand(127, 255), rand(127, 255), rand(127, 255));
}
$image = imagecreate(200, 100);
imagecolorallocate($image, 0, 0, 0);
for ($i=0; $i <= 9; $i++) {
// 繪製隨機的干擾線條
imageline($image, rand(0, 200), rand(0, 100), rand(0, 200), rand(0, 100), rand_color($image));
}
for ($i=0; $i <= 100; $i++) {
// 繪製隨機的干擾點
imagesetpixel($image, rand(0, 200), rand(0, 100), rand_color($image));
}
$length = 4;//驗證碼長度
$str = rand_str($length);//獲取驗證碼
$font = 'C:WindowsFontssimhei.ttf';
for ($i=0; $i < $length; $i++) {
// 逐個繪製驗證碼中的字元
imagettftext($image, rand(20, 38), rand(0, 60), $i*50+25, rand(30,70), rand_color($image), $font, $str[$i]);
}
header('Content-type:image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>
PHP生成圖形驗證碼這試過嗎?
https://tw511.com/a/01/3433.html
這也有Code可以下載實測照做?
謝謝回覆!!這些方法我都試過了,但是還是很謝謝您,我後來發現我的PHP沒有GD庫,正在嘗試安裝看看能不能解決,再次感謝您!
可以再看一下第三點,也有載點可以下載試試喽!
https://tw511.com/a/01/28847.html
非常感謝!!!我的PHP版本是8.1.1.0,但是php.ini檔裡沒有;extension = php_gd2.dll @@,查到的資料都說PHP5以上的版本都是預設安裝好的,不知道是不是誤刪,重載試試
GD庫有啟用但是依然沒圖案沒錯誤訊息QQ
小弟用了tw511的圖形驗證,圖形可以跑出來
小弟想用$code去抓取字然後放到session之後來比對
但是不管把$code放到那
但會失敗
$length = 4; //驗證碼長度
$str = rand_str($length); //獲取驗證碼
$font = 'E:\OneDrive_29\OneDrive\Script\PHP\CSRTest\Font\arialbd.ttf';
for ($i = 0; $i < $length; $i++) {
$code = $code . $str[$i];
// 逐個繪製驗證碼中的字元
imagettftext($image, rand(20, 38), 0, $i * 50 + 15, rand(30, 50), rand_color($image), $font, $str[$i]);
}
有那位先進可以指導一下小弟嗎?