Joomla 收到大量垃圾询盘信息,在 php 代码中屏蔽关键词

更新日期: 2024-10-10 阅读次数: 228 字数: 645 分类: PHP

Joomla 网站收到了大量的垃圾询盘信息,几乎一秒一条,即浪费精力去清理,又占用了处理线程,拖慢了网站速度。

所以必须在发送邮件前,就过滤掉。

修改哪个代码文件

太久不看,已经忘记了需要修改哪个代码文件。但是好在记住了一个变量名 emailBody, 这样就定位到了:

> grep emailBody -r components/
components/com_sppagebuilder/addons/form_builder/site.php:              $emailBody = '';

先备份

不想在线上用 git 管理,担心有漏洞,还是简单粗暴的使用 cp 备份稳妥一些。

cd components/com_sppagebuilder/addons/form_builder/
cp site.php site.php.bak20241010

判断是否包含关键词

<?php
// 判断 $emailBody 这个字符串变量中,是否包含以下垃圾信息关键词
$emailBody = "这是一封包含垃圾信息关键词的邮件,例如 ГОСЛОТО 和 лотерейный билет。";

// 定义垃圾信息关键词数组
$spamKeywords = array(
    "ГОСЛОТО",
    "Добрый день",
    "Поздравляем",
    "Подравляем!",
    "лотepeйный",
    "юбилейный",
    "билете",
    "ГосЛото",
    "ГОСЛОТО.",
    "ГосЛото.",
    "лотерейный билет"
);

// 遍历关键词数组,检查是否包含在邮件内容中
foreach ($spamKeywords as $keyword) {
    if (strpos($emailBody, $keyword)!== false) {
        echo "邮件中包含垃圾信息关键词:". $keyword. "\n";
    }
}
?>

测试

先判断本机是否安装了 PHP:

> php --version
PHP 7.4.3 (cli) (built: Oct  6 2020 15:47:56) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

执行:

> php /mnt/d/temp/a.php
邮件中包含垃圾信息关键词:ГОСЛОТО
邮件中包含垃圾信息关键词:лотерейный билет

返回什么

参考发送成功的逻辑:

if ($mail->sendMail(...)) {
		$output['status'] = true;
		$output['content'] = '<span class="sppb-text-success">' . $success_message_ajax . '</span>';
}

return json_encode($output);

直接返回

$output['status'] = true;
$output['content'] = '<span class="sppb-text-success">' . $success_message_ajax . '</span>';
return json_encode($output);

只要让垃圾信息发布者不知道发送失败就行。

最终代码

<?php
// 判断 $emailBody 这个字符串变量中,是否包含以下垃圾信息关键词
$emailBody = "这是一封包含垃圾信息关键词的邮件,例如 ГОСЛОТО 和 лотерейный билет。";

// 定义垃圾信息关键词数组
$spamKeywords = array(
    "ГОСЛОТО",
    "Добрый день",
    "Поздравляем",
    "Подравляем!",
    "лотepeйный",
    "юбилейный",
    "билете",
    "ГосЛото",
    "ГОСЛОТО.",
    "ГосЛото.",
    "лотерейный билет"
);

// 遍历关键词数组,检查是否包含在邮件内容中
foreach ($spamKeywords as $keyword) {
    if (strpos($emailBody, $keyword)!== false) {
        //echo "邮件中包含垃圾信息关键词:". $keyword. "\n";
        $output['status'] = true;
        $output['content'] = '<span class="sppb-text-success">' . $success_message_ajax . '</span>';
        return json_encode($output);
    }
}
?>

微信关注我哦 👍

大象工具微信公众号

我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式

tags: joomla