Um simples pacote de prevenção de spam para Laravel 5.4 e 5.5.
Execute este comando dentro do seu terminal para adicionar o pacote ao seu projeto.
composer require devarjhay/honeypot
Adicione o pacote aos provedores de serviços de aplicativo no arquivo config/app.php .
' providers ' => [
/*
* Laravel Framework Service Providers...
*/
Illuminate Translation TranslationServiceProvider::class,
Illuminate Validation ValidationServiceProvider::class,
Illuminate View ViewServiceProvider::class,
...
/*
* Package Service Providers...
*/
DevArjhay Honeypot Providers HoneypotServiceProvider::class,
],Otimize o aplicativo
php artisan optimize
Publique o arquivo de configuração do pacote e as traduções para o seu aplicativo. Execute este comando dentro do seu terminal.
php artisan vendor:publish --provider="DevArjhayHoneypotProvidersHoneypotServiceProvider"
Ou você pode publicar o arquivo individualmente.
php artisan vendor:publish --provider="DevArjhayHoneypotProvidersHoneypotServiceProvider" --tag="config"
php artisan vendor:publish --provider="DevArjhayHoneypotProvidersHoneypotServiceProvider" --tag="lang"
Adicione a entrada oculta do honeypot ao seu formulário inserindo Honeypot::make(...) como este:
< form action =" ... " method =" ... " >
{!! Honeypot::make('honeypot_name', 'honeypot_time') !!}
</ form > < form action =" ... " method =" ... " >
{!! honeypot('honeypot_name', 'honeypot_time') !!}
</ form > < form action =" ... " method =" ... " >
@honeypot('honeypot_name', 'honeypot_time')
</ form > O método make produzirá a seguinte entrada HTML. (O campo honeypot_time gerará um tMestamps criptografado.
< div id =" honeypot_name_wrap " style =" display: none; " >
< input type =" text " name =" honeypot_name " id =" honeypot_name " value ="" autocomplete =" off " >
< input type =" text " name =" honeypot_time " id =" honeypot_time " value =" encrypted timestamp " autocomplete =" off " >
</ div >Depois de adicionar os campos do honeypot. Adicione as regras de validação para os campos do Honeypot e do Honey Time.
$ this -> validate ( $ request , [
...
' honeypot_name ' => ' honeypot ' ,
' honeypot_time ' => ' required|honeytime:5 '
]);Observe que você precisa especificar o número de segundos no HoneyTime. Deve levar para o usuário preencher o formulário. Se levar menos tempo do que o formulário é considerado como um envio de spam.
Espero que você goste de obter um spam menos ao enviar um formulário.
Este projeto foi baseado em https://github.com/murguy/honeypot - Maksim Surguy
Trabalho original em https://github.com/ianlandsman/honeypot - Ian Landsman
MIT Licença
Copyright (c) 2017 Arjhay Delos Santos
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou em partes substanciais do software.
O software é fornecido "como está", sem garantia de qualquer tipo, expresso ou implícito, incluindo, entre outros, as garantias de comercialização, aptidão para uma finalidade específica e não innoculação. Em nenhum caso os autores ou detentores de direitos autorais serão responsáveis por qualquer reclamação, danos ou outro passivo, seja em uma ação de contrato, delito ou não, decorrente de, fora ou em conexão com o software ou o uso ou outras negociações no software.