nickurt/laravel-akismet

Laravel 10.x & 11.x 的 Akismet

1.13 2024-03-09 14:21 UTC

README

Build Status Total Downloads Latest Stable Version MIT Licensed

安装

使用 composer 安装此包

composer require nickurt/laravel-akismet

复制 api 的配置文件

php artisan vendor:publish --provider="nickurt\Akismet\ServiceProvider" --tag="config"

配置

可以通过 .env 文件中的环境变量设置 Akismet 信息(或直接在 config/akismet.php 文件中设置)

AKISMET_APIKEY=MY_UNIQUE_APIKEY
AKISMET_BLOGURL=https://my-custom-blogurl.dev

示例

验证规则

您可以在表单请求中使用隐藏字段 akismet 来验证请求是否有效

// FormRequest ...

public function rules()
{
    return [
        'akismet' => [new \nickurt\Akismet\Rules\AkismetRule(
            request()->input('email'), request()->input('name')
        )]
    ];
}

// Manually ...

$validator = validator()->make(['akismet' => 'akismet'], ['akismet' => [new \nickurt\Akismet\Rules\AkismetRule(
    request()->input('email'), request()->input('name')
)]]);

AkismetRule 需要一个 emailname 参数来验证请求。

事件

您可以监听 IsSpamReportSpamReportHam 事件,例如,如果您想记录应用程序中的所有 IsSpam-请求

IsSpam 事件

当请求包含垃圾邮件时,将触发此事件 nickurt\Akismet\Events\IsSpam

ReportSpam 事件

当您成功报告垃圾邮件时,将触发此事件 nickurt\Akismet\Events\ReportSpam

ReportHam 事件

当您成功报告正常邮件时,将触发此事件 nickurt\Akismet\Events\ReportHam

自定义实现

验证密钥
if( \Akismet::validateKey() ) {
    // valid
} else {
    // invalid
}
设置评论作者信息
\Akismet::setCommentAuthor("John Doe")
    ->setCommentAuthorUrl("https://www.google.com")
    ->setCommentContent("It's me, John!")
    ->setCommentType('registration');
    // etc
    
// or
\Akismet::fill([
    'comment_author' => 'John Doe',
    'comment_author_url' => 'https://www.google.com',
    'comment_content' => 'It's me, John!'
]);
// etc
这是垃圾邮件吗?
if( \Akismet::isSpam() ) {
    // yes, i'm spam!
}
提交垃圾邮件(误报垃圾邮件)
if( \Akismet::reportSpam() ) {
    // yes, thanks!
}
提交正常邮件(误报正常邮件)
if( \Akismet::reportHam() ) {
    // yes, thanks!
}

测试

composer test