自從上次改過別人的 PHP Captcha 以後,這次玩得更瘋了。
今天跟 scwu 聊過以後想出一堆鬼主意來當作 captcha 上面的文字,可以考慮的有注音文、火星文和一堆有的沒的符號。後來想整人所以決定讓大家動動頭腦,出點數學題目讓大家做,如加減乘除:
不過加減乘除對對電腦來說太簡單了,以後要試試看來點方程式求解,有必要來個微積分也行,不過這樣就得大費周章的請 LeTex 出來幫忙了。
上面的 captcha 我改名叫做「mathcha」,程式碼如下:
<?php
$font_face = 'arialbd.ttf'; //font you want to use
$width='80';
$height='25';
$font_size = $height * 0.65;
$image = imagecreate($width, $height) or die('Cannot initialize new GD image stream');
$background_color = imagecolorallocate($image, 0, 0, 0);
$text_color = imagecolorallocate($image, 255, 255, 255);
$noise_color = imagecolorallocate($image, 150, 255, 150);
//create dots
for( $i=0; $i<($width*$height)/3; $i++ ) {
imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
}
//print text
$n1 = mt_rand(1,20);
$n2 = mt_rand(1,20);
$string = "$n1 + $n2";
$textbox = imagettfbbox($font_size, 0, $font_face, $string) or die('Error in imagettfbbox function');
$x = ($width - $textbox[4])/2;
$y = ($height - $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font_face , $string) or die('Error in imagettftext function');
/* output captcha image to browser */
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
$_SESSION['mathcha'] = $n1 + $n2;
?>
記得你把你用的字型和這個程式放在同一個目錄。