Created
March 23, 2018 07:31
-
-
Save morozVA/f698caa989134d56d5ad757a84db6c5a to your computer and use it in GitHub Desktop.
modx анти-спам проверка
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Для eForm (evolutionCMS). | |
Создаем сниппет checkSpamTime, вставляем в него код: | |
<?php | |
if ($_SESSION['now']) | |
{ | |
$_SESSION['lt'] = $_SESSION['now']; | |
} | |
$_SESSION['now'] = microtime(true); | |
if (!function_exists('checkSpamTime')) | |
{ | |
function checkSpamTime(&$fields) | |
{ | |
$time = $_SESSION['now'] - $_SESSION['lt']; | |
if ($time<2) exit(); //Здесь проверяем сколько секунд прошло с момента точки входа. 5 - с запасом, можно ставить и единицу | |
} | |
} | |
Далее делаем вызов сниппета над вызовом eForm (если используется несколько форм, необходимо поставить ОДИН раз над самой верхней), и в самом сниппете пишем &eFormOnBeforeMailSent=`checkSpamTime` | |
В итоге у нас получается что-то вроде такого: | |
[!checkSpamTime!] | |
[!eForm? | |
/*...*/ | |
&eFormOnBeforeMailSent=`checkSpamTime` | |
/*...*/ | |
!] | |
Для formLister (evolutionCMS) | |
Создаем сниппет checkSpamTimeFL, вставляем в него код | |
<?php | |
if ($FormLister->isSubmitted()) | |
{ | |
$flag = false; | |
$now = microtime(true); | |
if ((isset($_SESSION['now'])) && (($now - $_SESSION['now']) > 2)) | |
{ | |
$flag = true; | |
} | |
$FormLister->setValid($flag); | |
} | |
else | |
{ | |
$_SESSION['now'] = microtime(true); | |
} | |
и вызываем его в prepare. | |
В итоге у нас получается что-то вроде такого: | |
[!FormLister? | |
/*...*/ | |
&prepare=`checkSpamTimeFL` | |
/*...*/ | |
!] | |
Для FormIt (Modx Revolution) | |
Создаем сниппет checkSpamTime, вставляем код: | |
<?php | |
if (count($_POST)) | |
{ | |
$flag = false; | |
$now = microtime(true); | |
if ((isset($_SESSION['now'])) && (($now - $_SESSION['now']) > 2)) | |
{ | |
$flag = true; | |
} | |
return $flag; | |
} | |
else | |
{ | |
$_SESSION['now'] = microtime(true); | |
} | |
И вписываем его первым в хук и пре хук, т.е. | |
[[!FormIt? | |
/*...*/ | |
&preHooks=`checkSpamTime` | |
&hooks=`checkSpamTime,email` | |
/*...*/ | |
!]] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment