Captcha и ее смена при каждом обновлении страницы — различия между версиями
Материал из Umicms
Cmac (обсуждение | вклад) |
Mad grant (обсуждение | вклад) |
||
Строка 44: | Строка 44: | ||
</xsl:template> | </xsl:template> | ||
</pre> | </pre> | ||
+ | [[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]] |
Текущая версия на 13:04, 5 июня 2013
По умолчанию, каптча для одного Гостя не меняется, точнее самое изображение меняется, но набор символов остается неизменным, также после правильного ввода каптчи, для текущего пользователя (Гостя) она отключается. Если по каким-то причинам необходимо сделать так, чтобы при каждом обновлении страницы менялся набор символов для каптчи и даже при правильном вводе каптчи она снова отображалась, то можно воспользоваться кастомным макросом следующего содержания:
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>