Всем доброго времени суток! Добро пожаловать в мир бесполезных скриптов и алгоритмов ) Рад представить вам математическую капчу! В настройках (в самом начале) можно указать размер шрифта, минимальный и максимальный угол наклона символа, минимальный и максимальный операнд. Ответ сохраняется в сессии в секции 'answer'. Доступно три выражения (сложение, вычитание, умножение. От деления отказался из-за дробного остатка). Ширина и высота изображения подстраиваются сами под размер шрифта. PHP: <?php session_start(); $font = './ARIAL.TTF'; $fontSize = 90; $minAngle = -20; $maxAngle = 20; $minOP = 0; $maxOP = 90; $op1 = mt_rand($minOP, $maxOP); $op2 = mt_rand($minOP, $maxOP); $logics = ['+', '-', '*']; $logic = $logics[mt_rand(0, count($logics)-1)]; $answer = 0; $string = ''; if ($logic == '+') { $answer = $op1 + $op2; $string = sprintf('%d + %d = ', $op1, $op2); } else if ($logic == '-') { if ($op1 < $op2) { $string = sprintf('%s - %s = ', $op2, $op1); $answer = $op2 - $op1; } else if ($op1 > $op2) { $string = sprintf('%s - %s = ', $op1, $op2); $answer = $op1 - $op2; } } else if ($logic == '*') { $answer = $op1 * $op2; $string = sprintf('%s * %s = ', $op1, $op2); } $_SESSION['answer'] = $answer; $width = (int)(strlen($string) * ($fontSize / 2) + $fontSize); $height = $fontSize * 2; $cimg = imagecreatetruecolor($width, $height); $bg = imagecolorallocate($cimg, 241, 255, 168); imagefill($cimg, 0, 0, $bg); for ($i = 0; $i < strlen($string); $i++) { $x = (int)(($i * ($fontSize / 2))+ ($fontSize / 2)); $y = (int)(($height / 2) + ($fontSize / 2)); $angle = mt_rand($minAngle, $maxAngle); $r = mt_rand(0, 255); $g = mt_rand(0, 255); $b = mt_rand(0, 255); $color = imagecolorallocate($cimg, $r, $g, $b); $char = $string[$i]; imagettftext($cimg, $fontSize, $angle, $x, $y, $color, $font, $char); } header('Content-Type: image/png'); imagepng($cimg); imagedestroy($cimg); ?>