Fungsi imagettfbbox PHP menghasilkan jawaban ngawur

Masalah

Kadang-kadang fungsi imagettfbbox() menghasilkan jawaban ngawur, misalnya nilai negatif yang besar.

array(8) {
 [0]=>
 int(5)
 [1]=>
 int(-1610627808)
 [2]=>
 int(-1610628216)
 [3]=>
 int(134958127)
 [4]=>
 int(136904992)
 [5]=>
 int(12)
 [6]=>
 int(-1610628152)
 [7]=>
 int(1075156968)
}

Solusi

Menurut referensi [1], penyebabnya mungkin adalah masalah threading.

Untuk mengakalinya, di kode Anda, ulangi pemanggilan imagettfbox() beberapa kali hingga memperoleh jawaban yang tidak ngawur.

Contoh, kode berikut:

$textbox = imagettfbbox($font_size, 0, $this->font, $code);

bisa Anda tambahkan sehingga menjadi:

while (1) {
  $textbox = imagettfbbox($font_size, 0, $this->font, $code);
  if ($textbox[2] > 0) break;
}

Joomla, komponen D-Mack RecommendFriends

Bug ini menyebabkan CAPTCHA tidak muncul tulisannya, hanya latar belakang dan garis-garisnya saja.

versi yang dicek: Version v2.0.3

Pada baris 607, ganti:

$textbox = imagettfbbox($font_size, $angle, $font, $code) or die('Error in imagettfbbox function");

menjadi:

while (1) {
    $textbox = imagettfbbox($font_size, $angle, $font, $code) or die('Error in imagettfbbox function");
    if ($textbox[2] > 0) break;
}

Referensi

[1] http://bugs.php.net/bug.php?id=22513

Resita has written 705 articles