Captcha и ее смена при каждом обновлении страницы
Материал из Umicms
Версия от 13:04, 5 июня 2013; Mad grant (обсуждение | вклад)
По умолчанию, каптча для одного Гостя не меняется, точнее самое изображение меняется, но набор символов остается неизменным, также после правильного ввода каптчи, для текущего пользователя (Гостя) она отключается. Если по каким-то причинам необходимо сделать так, чтобы при каждом обновлении страницы менялся набор символов для каптчи и даже при правильном вводе каптчи она снова отображалась, то можно воспользоваться кастомным макросом следующего содержания:
public function captchanew($template="default") {
$config = mainConfiguration::getInstance();
if(!$config->get('anti-spam', 'captcha.enabled')) {
return '';
}
unset($_SESSION['umi_captcha_plain']);
if(getSession('is_human') == 1){
unset($_COOKIE['user_captcha']);
unset($_SESSION['is_human']);
}
return umiCaptcha::generateCaptcha($template);
}
метод необходимо добавить в файл classes/modules/custom.php, после слов //TODO: Write your own macroses here
В шаблонах сайтах необходимо будет вызвать новый макрос, вместо system captcha(), для TPL вызов следующий:
%custom captchanew()%
в XSLT:
<xsl:apply-templates select="document('udata://custom/captchanew/')/udata" />
И в самом шаблоне должны стоять уже новые условия:
<xsl:template match="udata[@module = 'custom' and @method = 'captchanew'"> ... </xsl:template>