|
151 | 151 | $modx->log(modX::LOG_LEVEL_ERROR, "[FormProtection] rateLimiter.php not found at: {$path}"); |
152 | 152 | } |
153 | 153 | } |
| 154 | +// Create a regex pattern from spam word patterns |
| 155 | +$spamWordRegex = '/' . implode('|', array_map('preg_quote', $spamWordPatterns)) . '/i'; |
154 | 156 |
|
155 | 157 | // 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); |
168 | 163 | } |
169 | 164 | } |
170 | | - $modx->cacheManager->set($cacheKey, true, 3600); // Cache result for 1 hour |
171 | 165 | } |
172 | 166 |
|
173 | 167 | // Email pattern spam check |
|
0 commit comments