Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Как вывести капчу без искажений символов, или почему не работает fluctuation_amplitude=0 в antibot.php ?

Как вывести капчу без искажений символов, или почему не работает fluctuation_amplitude=0 в antibot.php ?


     01.11.2015    Общие вопросы по PHP, Ламерские вопросы    577

вопрос
Подскажите, пожалуйста, как полностью отключить искажение символов в капче? Изменение значения$fluctuation_amplitude с дефолтного на 0,1,2 в antibot.php только уменьшает искажения, но не убирает его полностью!

Ответил: Sander


$fluctuation_amplitude - это смещение по оси Y.
Т.е. чтобы буквы прыгали вверх-вниз.

Чтобы убрать искажение, найти строку
        $rand10=mt_rand(330,450)/100;

После нее вставить:
$rand9 = 0;
$rand10 = 0;

Это полностью уберет искажение текста.
Можете поиграться, обнуляя только одну переменную.

Комментарии пользователей (5)

prpobed5
25

prpobed5 - 2 ноября 2015 11:03 - Юзер

Sander, спасибо! Текст действительно теперь не искажает! Но одинаковые символы капчи не получаются, так как в папке Fonts антибота лежит три разных версии одного шрифта, и антибот берет случайный шрифт для вывода каждого символа. В итоге символы, то толще, то тоньше, с засечками или без. Как корректнее, - удалить два щрифта из трех или где-то в коде антибота отключить использование нескольких шрифтов?

ПафНутиЙ
1065

3396 | 2434

ПафНутиЙ - 2 ноября 2015 11:13 - Админ

Скопируйте нужный шрифт и переименуйте.

Каков вопрос - таков и ответ. Просто помните об этом.

prpobed5
25

prpobed5 - 2 ноября 2015 12:12 - Юзер

Тоже вариант ) Но все таки, если править изначально только antibot.php. К сожалению, мои познания в php близки к нулю, корректным ли будет такое выражение $font_file=$fonts[1]; вместо верхней строчки в цитате...

$font_file=$fonts[mt_rand(0, count($fonts)-1)];
$font=imagecreatefrompng($font_file);
imagealphablending($font, true);

Sander
1126

1637 | 1204

Sander - 2 ноября 2015 17:35 - Эксперт

$font_file=$fonts[mt_rand(0, count($fonts)-1)];

заменить на
$font_file=$fonts[0];

Всегда будет браться первый шрифт.

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

prpobed5
25

prpobed5 - 3 ноября 2015 10:29 - Юзер

Sander, спасибо!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы