PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
hivuld
Отправлено: 20 Декабря, 2017 - 14:01:13
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2017  


Помог: 0 раз(а)




Доброго времени суток!

Вот в чем суть проблемы:
Пытаюсь создать каптчу на PHP, но не получается, браузер пишет "Изображение не может быть показано, так как содержит ошибки".
Помогите решить проблему. Код ниже:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function randomString($length) {
  3.         $chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
  4.         $string = '';
  5.         for($i = 0; $i < $length; $i++)
  6.                 $string .= $chars[rand(0, strlen($chars) - 1)];
  7.         return $string;
  8. }
  9.  
  10. class CaptchaModule {
  11.         static function generate() {
  12.                 $random = randomString(5);
  13.                 $time = time();
  14.                 $_SESSION['CAPTCHA_TIME'] = $time;
  15.                 $_SESSION['CAPTCHA_STRING'] = self::genMd5($random, $time);
  16.                 self::createImage($random);
  17.                 exit;
  18.         }
  19.        
  20.         static function genMd5($captcha, $time) {
  21.                 return md5(md5(md5($captcha) . md5($time . md5($captcha))) . md5(md5(md5($time) . $captcha) . md5($captcha)));
  22.         }
  23.        
  24.         static function reset() {
  25.                 $_SESSION['CAPTCHA_TIME'] = [];
  26.                 $_SESSION['CAPTCHA_STRING'] = [];
  27.         }
  28.        
  29.         private static function createImage($captcha) {
  30.                 $img = imagecreatetruecolor(170, 50);
  31.                 imagefilledrectangle($img, 0, 0, 170, 50, imagecolorallocate($img, 255, 255, 255));
  32.                 imagettftext($img, 40, 0, 15, 23, imagecolorallocate($img, 82, 82, 82), 'captcha.otf', $captcha);
  33.                 header('Expires: Wed, 1 Jan 1997 00:00:00 GMT');
  34.                 header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
  35.                 header('Cache-Control: no-store, no-cache, must-revalidate');
  36.                 header('Cache-Control: post-check=0, pre-check=0', false);
  37.                 header('Pragma: no-cache');
  38.                 header('Content-type: image/gif');
  39.                 imagegif($img);
  40.                 imagedestroy($img);
  41.         }
  42. }
  43.  
  44. CaptchaModule::generate();
 
 Top
Строитель
Отправлено: 20 Декабря, 2017 - 14:58:43
Post Id



Участник


Покинул форум
Сообщений всего: 1166
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 43 раз(а)




hivuld, проверил на локалке, капча исправно генерируется. Скорее всего у вас нет файла со шрифтом "captcha.otf", или не правильно к нему указан путь.
 
 Top
hivuld
Отправлено: 21 Декабря, 2017 - 02:54:26
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2017  


Помог: 0 раз(а)




Строитель пишет:
hivuld, проверил на локалке, капча исправно генерируется. Скорее всего у вас нет файла со шрифтом "captcha.otf", или не правильно к нему указан путь.
Со шрифтом все нормально. Может проблема с загаловками?
 
 Top
Строитель
Отправлено: 21 Декабря, 2017 - 07:58:47
Post Id



Участник


Покинул форум
Сообщений всего: 1166
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 43 раз(а)




hivuld я же говорю, на локалке запускал этот код - проблем нет.
 
 Top
Sail
Отправлено: 21 Декабря, 2017 - 21:36:49
Post Id



Участник


Покинул форум
Сообщений всего: 1127
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




hivuld, просмотрите полученное изображение альтернативным способом.
Вот что об этой ошибке писали в далеком 2008 на forum.mozilla-russia.org:
топик.
 
 Top
hivuld
Отправлено: 24 Декабря, 2017 - 05:02:12
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2017  


Помог: 0 раз(а)




Строитель пишет:
hivuld я же говорю, на локалке запускал этот код - проблем нет.

Когда я закоментировал эту строку header('Content-Type: image/gif');, то никаких ошибок не было...
 
 Top
Строитель
Отправлено: 24 Декабря, 2017 - 18:22:53
Post Id



Участник


Покинул форум
Сообщений всего: 1166
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 43 раз(а)




hivuld пишет:
Когда я закоментировал эту строку header('Content-Type: image/gif');, то никаких ошибок не было...
Ну так этот заголовок сообщал браузеру о том, как надо обрабатывать этот документ (как картинку), и конечно же, если у вас в этом файле был ещё какой-то код, то скрипт справедливо генерировал ошибку. Попробуйте этот не много изменённый вариант :
Спойлер (Отобразить)
 
 Top
hivuld
Отправлено: 25 Декабря, 2017 - 17:36:32
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2017  


Помог: 0 раз(а)




Строитель пишет:
hivuld пишет:
Когда я закоментировал эту строку header('Content-Type: image/gif');, то никаких ошибок не было...
Ну так этот заголовок сообщал браузеру о том, как надо обрабатывать этот документ (как картинку), и конечно же, если у вас в этом файле был ещё какой-то код, то скрипт справедливо генерировал ошибку. Попробуйте этот не много изменённый вариант :
Спойлер (Отобразить)

Все работает, а как теперь сделать, чтобы можно было вывести в <img>?
 
 Top
Строитель
Отправлено: 25 Декабря, 2017 - 20:58:40
Post Id



Участник


Покинул форум
Сообщений всего: 1166
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 43 раз(а)




hivuld, а сейчас как по вашему выводится? О_о
 
 Top
hivuld
Отправлено: 26 Декабря, 2017 - 03:53:14
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2017  


Помог: 0 раз(а)




Строитель пишет:
hivuld, а сейчас как по вашему выводится? О_о

<img src="/captcha/generate" /> - Как сделать, чтобы изоббражение выводилось?
 
 Top
Строитель
Отправлено: 26 Декабря, 2017 - 06:56:24
Post Id



Участник


Покинул форум
Сообщений всего: 1166
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 43 раз(а)




hivuld пишет:
Как сделать, чтобы изоббражение выводилось?
Как обычно же, так же, как и в примере выше
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Графика в PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB