iT邦幫忙

1

圖形驗證碼問題

YC 2022-01-17 15:17:061958 瀏覽
  • 分享至 

  • xImage

大家好,我是因為需求,最近在學php的小白,目前被交付做圖形驗證碼以及手機驗證碼(還未開始做),身為新手的我只好去網路上找現成的程式碼(php),但是不管是哪一個大大貢獻出的程式碼,我複製貼上後改一改都無法顯現出圖形驗證碼的圖(我有啟用GD2),畫面只有一個灰邊的小正方形,也沒有出現錯誤訊息,請問各位高手,我是否少了什麼重要的操作?萬分感謝!!

GD2
https://ithelp.ithome.com.tw/upload/images/20220207/20145380ueiWioThZx.jpg

顯示結果
https://ithelp.ithome.com.tw/upload/images/20220207/201453804pIMFHzpr2.jpg

以下是我其中一個測試的程式碼:

<?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);
?>

出自 : https://tw511.com/a/01/3433.html

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
Gary
iT邦好手 1 級 ‧ 2022-01-17 18:10:08

PHP生成圖形驗證碼這試過嗎?
https://tw511.com/a/01/3433.html
這也有Code可以下載實測照做?
Yes

看更多先前的回應...收起先前的回應...
YC iT邦新手 5 級 ‧ 2022-01-18 10:12:47 檢舉

謝謝回覆!!這些方法我都試過了,但是還是很謝謝您,我後來發現我的PHP沒有GD庫,正在嘗試安裝看看能不能解決,再次感謝您!

Gary iT邦好手 1 級 ‧ 2022-01-18 11:07:24 檢舉

可以再看一下第三點,也有載點可以下載試試喽!
https://tw511.com/a/01/28847.html

YC iT邦新手 5 級 ‧ 2022-01-18 12:07:38 檢舉

非常感謝!!!我的PHP版本是8.1.1.0,但是php.ini檔裡沒有;extension = php_gd2.dll @@,查到的資料都說PHP5以上的版本都是預設安裝好的,不知道是不是誤刪,重載試試

YC iT邦新手 5 級 ‧ 2022-01-18 13:43:04 檢舉

GD庫有啟用但是依然沒圖案沒錯誤訊息QQ

ommjki iT邦新手 3 級 ‧ 2022-01-28 07:39:23 檢舉

小弟用了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]);
}

有那位先進可以指導一下小弟嗎?

我要發表回答

立即登入回答