Laravel Akismet
, (*1)
Installation
Install this package with composer:, (*2)
composer require nickurt/laravel-akismet
Copy the config files for the api, (*3)
php artisan vendor:publish --provider="nickurt\Akismet\ServiceProvider" --tag="config"
Configuration
The Akismet information can be set with environment values in the .env
file (or directly in the config/akismet.php
file), (*4)
AKISMET_APIKEY=MY_UNIQUE_APIKEY
AKISMET_BLOGURL=https://my-custom-blogurl.dev
Examples
Validation Rule
You can use a hidden-field akismet
in your Form-Request to validate if the request is valid, (*5)
// 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')
)]]);
The AkismetRule
requires a email
and name
parameter to validate the request., (*6)
Events
You can listen to the IsSpam
, ReportSpam
and ReportHam
events, e.g. if you want to log all the IsSpam
-requests in your application, (*7)
IsSpam Event
This event will be fired when the request contains spam
nickurt\Akismet\Events\IsSpam
, (*8)
ReportSpam Event
This event will be fired when you succesfully reported spam
nickurt\Akismet\Events\ReportSpam
, (*9)
ReportHam Event
This event will be fired when you succesfully reported ham
nickurt\Akismet\Events\ReportHam
, (*10)
Custom Implementation
Validate Key
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
Is it Spam?
if( \Akismet::isSpam() ) {
// yes, i'm spam!
}
Submit Spam (missed spam)
if( \Akismet::reportSpam() ) {
// yes, thanks!
}
Submit Ham (false positives)
if( \Akismet::reportHam() ) {
// yes, thanks!
}
Tests
composer test