Mục lục
Tư duy của hàm spam nâng cao
- Không quyết định spam theo một dấu hiệu duy nhất
- Chấm điểm hành vi spam
- Vượt ngưỡng là loại
- Dễ chỉnh ngưỡng, dễ mở rộng
Hàm phát hiện spam nâng cao
<?php
function is_spam_ultimate(string $content, int $threshold = 7): bool {
$score = 0;
$text = trim($content);
if ($text === '') {
return true;
}
$lower = mb_strtolower($text);
// 1. độ dài bất thường
$length = mb_strlen($lower);
if ($length < 8) { $score += 3; } elseif ($length > 2000) {
$score += 2;
}
// 2. quá nhiều link
preg_match_all('/https?:\/\//i', $lower, $links);
if (count($links[0]) >= 2) {
$score += 3;
}
// 3. lặp từ khoá bất thường
$words = preg_split('/\s+/u', $lower, -1, PREG_SPLIT_NO_EMPTY);
if (count($words) > 0) {
$counts = array_count_values($words);
foreach ($counts as $count) {
if ($count >= 5) {
$score += 3;
break;
}
}
}
// 4. ký tự dị hoặc trộn chữ số vô nghĩa
if (preg_match('/[a-z]{3,}\d{3,}|[^\p{L}\p{N}\s]{4,}/u', $lower)) {
$score += 2;
}
// 5. viết hoa quá nhiều (la hét)
preg_match_all('/[A-Z]/', $text, $caps);
if (count($caps[0]) > 20) {
$score += 2;
}
// 6. nhiều dòng giống nhau
$lines = array_filter(array_map('trim', explode("\n", $lower)));
if (count($lines) !== count(array_unique($lines))) {
$score += 2;
}
// 7. mật độ link so với chữ
if ($length > 0 && count($links[0]) / $length > 0.02) {
$score += 2;
}
return $score >= $threshold;
}
Cách dùng duy nhất nên dùng
<?php
$content = $_POST['content'] ?? '';
if (is_spam_ultimate($content)) {
die('Nội dung bị đánh dấu là spam');
}
Vì sao hàm này mạnh nhưng không ngu
- Không phụ thuộc keyword cố định
- Không cần database
- Không cần regex dị hợm
- Chặn spam theo hành vi, không theo chữ
Nên chỉnh threshold khi nào
- Form liên hệ: 6–7
- Comment blog: 7–8
- Đăng bài công khai: 8–9
Kết luận
Một hàm spam tốt không phải là hàm bắt được 100% spam, mà là hàm giữ cho hệ thống sạch mà không giết nhầm người dùng thật. Hàm này sinh ra để làm đúng điều đó: gọn, mạnh, và dùng được ngay.
Spam thì tiến hoá từng ngày, nhưng backend mà tỉnh là spam không có cửa!
Bình luận