Так как потребуется получить новую картинку CAPTCHA без перезагрузки страницы, нам потребуется использовать технологию AJAX. При этом необходимо создать java-скрипт для клиентской части и php-скрипт для сервера. Для клиентского скрипта используем библиотеку JQuery.
function cptRefresh() {
var countOfexec = 0;
var code = $("#sid").val();
return function() {
if(countOfexec < 5) {
var timestamp = new Date();
$('#code').attr("src", "/bitrix/tools/captcha.php?captcha_sid="+code+"×tamp="+
timestamp.getTime());
} else {
$.get("/chat/chat.php", function(data){
$("#sid").val(data);
$('#code').attr("src", "/bitrix/tools/captcha.php?captcha_sid="+data);
});
countOfexec = 0;
}
return ++countOfexec;
}
}
var refresh = cptRefresh();
Функцию refresh нужно повесить на событие, которое вызывается при клике на текст "обновить картинку". В шаблоне компонента для тега вывода каптчи нужно установить id="code", а у скрытого поля, которое передает идентификатор капчи, установить id="sid".
// Подключаем класс битрикса для работы с captcha
include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");
// Создаем экземпляр класса
$cpt = new CCaptcha();
// Удаляем текущую капчу
$cpt->Delete($_REQUEST['captcha_sid']);
// Генерируем и выводим код новой капчи
echo htmlspecialchars($APPLICATION->CaptchaGetCode());