Skip to content

Commit ec19a51

Browse files
committed
Re-factor Spam Word Filter
-Refactored Spam Word Filter -Removed Caching of Results -Re-added SpamWord regex
1 parent d53760d commit ec19a51

File tree

1 file changed

+7
-13
lines changed

1 file changed

+7
-13
lines changed

core/components/formprotection/elements/snippets/formProtectionHook.php

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -151,23 +151,17 @@
151151
$modx->log(modX::LOG_LEVEL_ERROR, "[FormProtection] rateLimiter.php not found at: {$path}");
152152
}
153153
}
154+
// Create a regex pattern from spam word patterns
155+
$spamWordRegex = '/' . implode('|', array_map('preg_quote', $spamWordPatterns)) . '/i';
154156

155157
// Spam content check for all text fields
156-
$userIp = $_SERVER['REMOTE_ADDR'];
157-
$cacheKey = "spam_check_{$formId}_{$userIp}";
158-
$spamCheckResult = $modx->cacheManager->get($cacheKey);
159-
160-
if (!$spamCheckResult) {
161-
// Perform spam checks
162-
foreach ($formFields as $fieldName => $fieldValue) {
163-
if (!is_array($fieldValue) && !empty($fieldValue)) {
164-
if (preg_match($spamWordRegex, $fieldValue)) {
165-
$modx->log(modX::LOG_LEVEL_ERROR, "[FormProtection] SPAM DETECTED in field '{$fieldName}'");
166-
$hook->addError($fieldName, $spamContentErrorMessage);
167-
}
158+
foreach ($formFields as $fieldName => $fieldValue) {
159+
if (!is_array($fieldValue) && !empty($fieldValue)) {
160+
if (preg_match($spamWordRegex, $fieldValue)) {
161+
$modx->log(modX::LOG_LEVEL_ERROR, "[FormProtection] SPAM DETECTED in field '{$fieldName}'");
162+
$hook->addError($fieldName, $spamContentErrorMessage);
168163
}
169164
}
170-
$modx->cacheManager->set($cacheKey, true, 3600); // Cache result for 1 hour
171165
}
172166

173167
// Email pattern spam check

0 commit comments

Comments
 (0)