如何使用Composer解決Laravel表單提交的垃圾郵件問題?spatie/laravel-honeypot助你一臂之力

可以通過一下地址學習composer學習地址

在開發一個包含用戶提交表單的網站時,如何有效地防止垃圾郵件機器人的攻擊一直是一個棘手的問題。我曾嘗試過多種方法,但效果都不盡如人意。直到我發現了 spatie/laravel-honeypot 這個庫,它通過“蜜罐”技術,輕松解決了我的困擾。

安裝與配置

使用 spatie/laravel-honeypot 非常簡單,通過 composer 即可完成安裝:

composer require spatie/laravel-honeypot

安裝后,你可以選擇發布配置文件,以便進一步定制蜜罐設置:

php artisan vendor:publish --provider="SpatieHoneypotHoneypotServiceProvider" --tag="honeypot-config"

配置文件位于 config/honeypot.php,你可以根據需要調整蜜罐字段的名稱、有效時間等參數。

使用方法

要使用蜜罐保護你的表單,只需在表單中添加 x-honeypot Blade 組件:

<form method="POST">     <x-honeypot />     <input name="myField" type="text"> </form>

或者使用 @honeypot Blade 指令:

<form method="POST">     @honeypot     <input name="myField" type="text"> </form>

這兩種方法都會在表單中添加兩個隱藏字段:my_name 和 valid_from_timestamp。你可以在配置文件中修改這些字段的名稱。

接下來,在處理表單提交的路由中,添加 SpatieHoneypotProtectAgainstSpam 中間件

use AppHttpControllersContactFormSubmissionController; use SpatieHoneypotProtectAgainstSpam;  Route::post('contact', [ContactFormSubmissionController::class, 'create'])->middleware(ProtectAgainstSpam::class);

這個中間件會攔截任何包含非空 my_name 字段的請求,以及在 valid_from_timestamp 指定時間內提交的請求。

高級用法

如果你的應用使用 Inertia 或 Livewire,也可以輕松集成 spatie/laravel-honeypot。以下是 Inertia 的示例:

在控制器中:

public function create(SpatieHoneypotHoneypot $honeypot)  {     return inertia('contactform.show', [         'honeypot' => $honeypot,     ]); }

在前端 vue 組件中:

<div v-if="honeypot.enabled" :name="`${honeypot.nameFieldName}_wrap`" style="display:none;">     <input type="text" v-model="form[honeypot.nameFieldName]" :name="honeypot.nameFieldName" :id="honeypot.nameFieldName" />     <input type="text" v-model="form[honeypot.validFromFieldName]" :name="honeypot.validFromFieldName" /> </div>  props: ['honeypot'],  data() {     return {         form: this.$inertia.form({             [this.honeypot.nameFieldName]: '',             [this.honeypot.validFromFieldName]: this.honeypot.encryptedValidFrom,         }),     } }

優勢與效果

使用 spatie/laravel-honeypot 的最大優勢在于其簡單性和有效性。通過在表單中添加一個隱藏字段,我們可以輕松地識別并阻止垃圾郵件機器人的攻擊。同時,這個庫還提供了時間戳檢查,進一步提高了防護效果。

在實際應用中,我發現自從使用了這個庫,垃圾郵件提交的數量顯著減少,極大地提高了網站數據的質量和用戶體驗。無論是小型博客還是大型企業網站,spatie/laravel-honeypot 都能夠提供可靠的垃圾郵件防護,幫助我們更專注于核心業務。

總之,如果你在開發 Laravel 應用時遇到表單垃圾郵件的問題,spatie/laravel-honeypot 無疑是一個值得嘗試的解決方案。

以上就是如何使用Composer解決Laravel

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享