本篇文章給大家分享的是PHP實現加法、減法驗證碼,有興趣的朋友可以看一看
<?phpheader('Content-Type: image/png');$im = imagecreatetruecolor( 200 , 50 );// Create some colors$white = imagecolorallocate($im, 255, 255, 255);$grey = imagecolorallocate($im, 128, 128, 128);$black = imagecolorallocate($im, 0, 0, 0);imagefilledrectangle($im, 0, 0, 200, 49, $white);// The text to draw$rand = rand( 1 ,2 ) ;$one = rand(1,9);$two = rand(1,9);if( $rand == 1 ){ $result = $one + $two; $text = "$one+$two=?";}else{ if( $one < $two ){ list( $two , $one ) = [ $one , $two ]; } $result = $one - $two; $text = "$one-$two=?";}session_start();$_SESSION['vcode'] = $result;// Replace path by your own font path$font = './Arvo-Regular.ttf';//imageline( $im , 0 , rand( 1,49 ) , 199 , 30 , $grey );// Add the text$i = 0;$len = strlen( $text );while( $i < $len ){ if( is_numeric( $text[$i] ) ){ imagettftext($im, 20, rand(-45,45), 20 * ($i+1) , 30, $black, $font, $text[$i]); }else{ imagettftext($im, 20, 0 , 20 * ($i+1) , 30, $black, $font, $text[$i]); }//echo $text[$i]; $i ++;}// Using imagepng() results in clearer text compared with imagejpeg()imagepng($im);imagedestroy($im);
加法減法可以這麼實現,除法和乘法也類似
除法時候會遇到除不盡的情況,可以換一種思路,使用乘法解決
2*3=6
6/2=3
這樣就不會出現負數的情況了