Intereting Posts
PHP: exec () не работает в фоновом режиме даже с помощью «> / dev / null 2> & 1 &" Перенаправление PHP не работает на сервере помещает маркер в URL безопасно, чтобы предотвратить атаки CSRF в приложениях PHP? MySQL, безопасно используя зарезервированное слово в запросе Получить все имена FUNCTIONS из всех CONTROLLERS в Codeigniter Как избежать ошибки запроса Entity Too Large 413 Преобразование метки времени UNIX в форматированную строку даты Сканирование Google Search с помощью PHP Code-Golf: однострочный синтаксис PHP Не удается подключиться к сайту HTTPS с помощью cURL. Вместо этого возвращает 0 длину. Что я могу сделать? Запрос обновления MySQL обновляет один столбец, но не другой столбец Как PHP ассоциативные массивы? Ошибка базы данных. Неизвестная ошибка базы данных на phpmyAdmin MySQLi num_rows возвращает 0 Как вы разрешаете клиентам использовать свой openid на вашем веб-сайте, как и stackoverflow?

Создать Captcha Image PHP

Я хочу создать Captcha Image с помощью PHP imagettftext. И следующий мой код. Он дает пустое изображение. Я хочу решить эту проблему.

Я проверил код, но не смог найти, почему изображение не отображается, хотя мой случайный текст передается функции генерации изображения captcha.

<?php function generateRandomString($length = 10) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, strlen($characters) - 1)]; } return $randomString; } function generateCaptchaImage($text = 'good'){ echo $text; echo 'OK'; // Set the content-type header('Content-Type: image/png'); $width = 200; $height = 30; $font = 'ThisisKeSha.ttf'; // Create the image $im = imagecreatetruecolor($width, $height); //ADD NOISE - DRAW background squares $square_count = 6; for ($i = 0; $i < 10; $i++) { $cx = (int)rand(0, $width/2); $cy = (int)rand(0, $height); $h = $cy + (int)rand(0, $height/5); $w = $cx + (int)rand($width/3, $width); imagefilledrectangle($im, $cx, $cy, $w, $h, $white); } //ADD NOISE - DRAW ELLIPSES $ellipse_count = 5; for ($i = 0; $i < $ellipse_count; $i++) { $cx = (int)rand(-1*($width/2), $width + ($width/2)); $cy = (int)rand(-1*($height/2), $height + ($height/2)); $h = (int)rand($height/2, 2*$height); $w = (int)rand($width/2, 2*$width); imageellipse($im, $cx, $cy, $w, $h, $grey); } // Add the text imagettftext($im, 20, 0, 10, 20, $black, $font, $text); imagepng($im); } $randomString = generateRandomString(); generateCaptchaImage($randomString); ?> 

Исправлено из комментариев

  • $white и $black не определены.
  • Удалить echo $text; и echo 'OK'; ,
  • Is ThisisKeSha.ttf на вашем сервере и в том же каталоге, что и этот?

$white и $black не определены.

Попробуйте этот код;

 <?php function generateRandomString($length = 10) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, strlen($characters) - 1)]; } return $randomString; } function generateCaptchaImage($text = 'good'){ // Set the content-type header('Content-Type: image/png'); $width = 200; $height = 30; // Create the image $im = imagecreatetruecolor($width, $height); // 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, 399, 29, $white); //ADD NOISE - DRAW background squares $square_count = 6; for($i = 0; $i < $square_count; $i++){ $cx = rand(0,$width); $cy = (int)rand(0, $width/2); $h = $cy + (int)rand(0, $height/5); $w = $cx + (int)rand($width/3, $width); imagefilledrectangle($im, $cx, $cy, $w, $h, $white); } //ADD NOISE - DRAW ELLIPSES $ellipse_count = 5; for ($i = 0; $i < $ellipse_count; $i++) { $cx = (int)rand(-1*($width/2), $width + ($width/2)); $cy = (int)rand(-1*($height/2), $height + ($height/2)); $h = (int)rand($height/2, 2*$height); $w = (int)rand($width/2, 2*$width); imageellipse($im, $cx, $cy, $w, $h, $grey); } // Replace path by your own font path $font = 'ThisisKeSha.ttf'; // Add some shadow to the text imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); // Add the text imagettftext($im, 20, 0, 10, 20, $black, $font, $text); // Using imagepng() results in clearer text compared with imagejpeg() imagepng($im); imagedestroy($im); } $randomString = generateRandomString(); generateCaptchaImage($randomString); ?> 

Вы не создали цвета $white , $black и $grey . Также шрифт должен находиться в той же папке этого файла php.

Это простой способ создать канадца в PHP, вы можете попробовать это,

 <?php @session_start(); header("Content-type: image/png"); $_SESSION["captcha"] = substr(md5(time()),0,5); $im = imagecreate(110, 30); $white = imagecolorallocate($im, 244, 255, 255); $red = imagecolorallocate($im, 255, 255, 255); $black = imagecolorallocate($im, 0, 0, 0); $size = $_SESSION["captcha"]; $text = "$size"; $font = 'comic.TTF'; imagettftext($im, 20, 0, 25, 20, $red, $font, $text); imagettftext($im, 20, 0, 25, 20, $black, $font, $text); imagepng($im); imagedestroy($im); ?> 

php сеанс, используемый для этого. Подробнее о Captcha в PHP