Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Работа Капчи

00 голосов
1
Здравствуйте.

На текущем проекте стоит старенький Битрикс 11ой версии.

После недавнего времени перестала отображаться каптча на страницах сайта.

Вместо какртинки значек ошибки.

Первое что сделал проверил отображается ли капча на странице её настроек. Там она отображается, выводится несколько картинок, можно изменять настройки, все рабоает нормально.

После этого попробовал просто открыть картинку в браузере по её ссылке, к примеру: "/bitrix/tools/captcha.php?captcha_sid=04230ef268ba0f5f51dffedcdc79440b"

Файрфокс выдал следующее:

«Изображение "/bitrix/tools/captcha.php?captcha_sid=04230ef268ba0f5f51dffedcdc79440b" не может быть показано т.к. содержит ошибки»

Проверил файлы генерации капчи, и сам класс генерации капчи, там все номрально, т.к. админка и компоненты сайта используют один и тот же класс, отличается лиш файл в котором создается капча.

Может кто-нибудь сталкивался?

Есть подозрение на создаваемые mime-type при отдаче картинки, но тоже врятли т.к. они формируются в классе капчи "bitrix/modules/main/classes/general/cpatcha.php"
спросил 11 Июнь, 14 от silverspeed (150 баллов)

1 Ответ

00 голосов
вы бы не могли мне помочь написать капча а то для меня темный лес, а она мне срочна нудна
ответил 04 Май, 16 от аноним
Подключение CAPTCHA в своих скриптах, модулях или компонентах:
Для начала генерим саму CAPTCHA :

01      <?include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");
02    $cpt = new CCaptcha();
03    $captchaPass = COption::GetOptionString("main", "captcha_password", "");
04    if(strlen($captchaPass) <= 0)
05    {
06        $captchaPass = randString(10);
07        COption::SetOptionString("main", "captcha_password", $captchaPass);
08    }
09    $cpt->SetCodeCrypt($captchaPass);
10    ?>
После этого выводите в нужном месте формы три элемента: скрытое поле со сгенерированным кодом, поле для ввода капчи пользователем и саму картинку.

<input name="captcha_code" value="<?=htmlspecialchars($cpt->GetCodeCrypt());?>" type="hidden">
<input id="captcha_word" name="captcha_word" type="text">
<img src="/bitrix/tools/captcha.php?captcha_code=<?=htmlspecialchars($cpt->GetCodeCrypt());?>">
В скрипте, на который сабмитится форма, просто добавляем проверку:

01      <?
02      if(!$APPLICATION->CaptchaCheckCode($_POST["captcha_word"], $_POST["captcha_code"]))
03    {
04        // Неправильное значение
05    }
06    else
07    {
08        // Правильное значение
09    }
10    ?>

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

0 голосов
1 ответ
спросил 16 Июль, 23 от root (25,590 баллов)
0 голосов
1 ответ
0 голосов
1 ответ
спросил 09 Сен, 21 от root (25,590 баллов)
0 голосов
1 ответ