В данном посте предлагаю готовый компонент 2.0. При его размещении в шаблоне сайта, рядом с CAPTCHA средствами JavaScript будет рисоваться элемент управления, при щелчке на котором будет происходить обновление картинки CAPTCHA.[spoiler]
Компонент работать со всеми капчами на странице или же с определёнными, заданными в настройках компонента (идентификация идёт по атрибуту "name" у тега <form>, в котором находится капча).
Теперь немного о структуре компонента. ./templates/.default/template.php - поиск капчи. ./templates/.default/script.js - выполняет непосредственное обновление капчи, функции для кроссбраузерной поддержки. ./component.php - выполняется проверка и обработка параметров компонента, которые будут переданы в шаблон компонента.
Компонент протестировал в различных браузерах, так что проблем быть не должно. Единственное место, куда не удалось "прикрутить" обновление капчи - комментарии в блогах (из-за их сложной вёрстки).
При работе компонента картинка обновляется моментально, поэтому сделал без "колеса ожидания".
Как пользоваться: 1. Распаковываем архив в /bitrix/components/bitrix/ 2. Перед расположением компонента в шаблоне сайта, очищаем кеш визуального редактора.
Интересно. Как перекодировал компоненты из UTF-8 в cp1251: find reload.captcha/ -name "*.*.php" -exec recode -f UTF-8..windows-1251 {} \;
Интересно. Как перекодировал компоненты из UTF-8 в cp1251:
find reload.captcha/ -name "*.*.php" -exec recode -f UTF-8..windows-1251 {} ;
Век живи, век учись. Не знал про это, спасибо за такую наводку
Только у меня оно не сработало, а вот это работает: find reload.captcha/ -name "*.php" | while read i; do iconv -f WINDOWS-1251 -t UTF-8 "$i" >tmp; mv tmp "$i"; done
Скромно напомню, что когда такое вторжение на уровне ядра будете делать, хотелось бы получить: 1. Возможность сменить название с "введите символы" на "введите цифры" или вообще что-то свое. 2. Скорее всего какие-то обработчики что-ли, которые решат не только п.1, но и дадут возможность вовсе переопределять капчу. Например, выводить 2+2.
Спасибо огромное, очень помогли. Вот только я дописала в скрипте при создании элемента картинки стиль, чтобы при наведении на картинку показывалась рука).
reload.captcha/templates/.default/script.js
function addImageObj(pNode)
{
var pos = pNode.getElementsByTagName('IMG')[0];
if (pos){
var imgObj = document.createElement('img');
imgObj.src = imgPath;
imgObj.style.cursor='pointer';// !!! рука
imgObj.onmouseup = Bind;
insertAfter(imgObj, pos);
}
}
Прикручивается очень просто, страннно что вы "еле прикрутили". Да и загружается нормально, может вы слишком быстро нажимали!?. Я с первого раза тоже нетерпеливо ждала, что и секунды не должно пройти, пока перезагрузится картинка.
Допускаю, что на медленных соединениях обновление картинки может занять время. В этом случае желательно в функции-обработчике нажатия на кнопку выводить индикатор ожидания.
Боже мой. Нахрена целый компонент? Битрикс капча идеальна для взлома. При обновлении ссылки на капчу буквы не меняются, а встают по-другому просто. Так что достаточно простой строчки на jQuery: $("img.captcha_image").click(function(){var c = $(this).attr("src") + "&" + Math.round(Math.random(1,999)); $(this).attr("src",c)}) чтобы при клике на капчу она менялась.
Конечно, а с чего у вас будет меняться, если "captcha_code=" постоянный. На реально работающем сайте все меняется. Меняйте параметр при обновлении и будет шастье.
Проверьте, не закэширован ли у вас компонент, который содержит каптчу. Обычно именно это приводит к тому, что каптча всегда показывает один и тот же код.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».