Tutorial de captcha do Laravel 8. Neste tutorial, mostraremos como adicionar uma validação de captcha com laravel 8 forms.
O captcha oferece um desafio de segurança em formulários para evitar spam de comentários, spam de formulários.
Laravel 8 Captcha - Adicionar Validação de Captcha no Formulário
- Passo 1 - Baixe o aplicativo Laravel 8
- Etapa 2 - Configurar banco de dados com aplicativo
- Etapa 3 - Instale o pacote Captcha
- Etapa 4 - Registrar o pacote Captcha
- Etapa 5 - Configuração de Captcha
- Etapa 6 - Criar Rotas de Formulários
- Etapa 7 - Criar controlador de formulário por comando Artisan
- Etapa 8 - Criar arquivo de folha de formulário
- Etapa 9 - Executar o servidor de desenvolvimento
Passo 1 - Baixe o aplicativo Laravel 8
Em primeiro lugar, baixe ou instale a nova configuração do laravel 8. Portanto, abra o terminal e digite o seguinte comando para instalar o novo aplicativo laravel 8 em sua máquina:
composer create-project --prefer-dist laravel / laravel FormValidation
Etapa 2 - Configurar banco de dados com aplicativo
Nesta etapa, configure o banco de dados com seu aplicativo laravel 8 baixado / instalado. Portanto, você precisa encontrar o arquivo .env e os detalhes do banco de dados de configuração da seguinte forma:
|
1
2
3
4
5
6
|
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database-name
DB_USERNAME=database-user-name
DB_PASSWORD=database-password
|
Etapa 3 - Instale o pacote Captcha
captcha package:
composer require mews/captcha
Etapa 4 - Registrar o pacote Captcha
Nesta etapa, registre este pacote no aplicativo laravel. Portanto, abra o arquivo supplies / config / app.php e registre o provedor de serviço captcha e os aliases .
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
'providers' => [
...
...
...
Mews\Captcha\CaptchaServiceProvider::class,
]
'aliases' => [
...
...
...
'Captcha' => Mews\Captcha\Facades\Captcha::class,
]
|
Etapa 5 - Configuração de Captcha
Nesta etapa, abra o arquivo config / captcha.php . E neste arquivo você pode habilitar ou desabilitar as configurações com base nas suas necessidades:
|
1
2
3
4
5
6
7
8
9
10
11
|
return [
'default' => [
'length' => 5,
'width' => 120,
'height' => 36,
'quality' => 90,
'math' => true,
'expire' => 60,
],
];
|
Etapa 6 - Criar Rotas
Nesta etapa, abra o arquivo web.php do diretório de rotas. E atualize as seguintes rotas no arquivo web.php:
|
1
2
3
4
5
6
|
use App\Http\Controllers\CaptchaValidationController;
Route::get('contact-form-captcha', [CaptchaValidationController::class, 'index']);
Route::post('captcha-validation', [CaptchaValidationController::class, 'capthcaFormValidate']);
Route::get('reload-captcha', [CaptchaValidationController::class, 'reloadCaptcha']);
|
Etapa 7 - Criar controlador de formulário por comando Artisan
Nesta etapa, execute o seguinte comando no prompt de comando para criar o arquivo do controlador:
php artisan make: controlador CaptchaValidationController
Depois disso, vá para app / http / controllers e abra o arquivo CaptchaValidationController.php . E atualize o seguinte código nele:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class CaptchaValidationController extends Controller
{
public function index()
{
return view('form-with-captcha');
}
public function capthcaFormValidate(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required|email',
'message' => 'required',
'captcha' => 'required|captcha'
]);
}
public function reloadCaptcha()
{
return response()->json(['captcha'=> captcha_img()]);
}
}
|
Etapa 8 - Criar Arquivo Blade
Agora, crie um arquivo de visualização em lâmina para exibir o formulário com o desafio captcha e enviar ao banco de dados. Portanto, vá para resources / views e crie form-with-captcha.blade.php e atualize o seguinte código nele:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<!DOCTYPE html>
<html>
<head>
<title>Laravel 8 Form Captcha Validation</title>
<meta name="csrf-token" content="{{ csrf_token() }}">
</head>
<body>
<div class="container mt-4">
@if(session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
<div class="card">
<div class="card-header text-center font-weight-bold">
<h2>Laravel 8 Add Captcha in Form For Validation</h2>
</div>
<div class="card-body">
<form name="captcha-contact-us" id="captcha-contact-us" method="post" action="{{url('captcha-validation')}}">
@csrf
<div class="form-group">
<label for="exampleInputEmail1">Name</label>
<input type="text" id="name" name="name" class="@error('name') is-invalid @enderror form-control">
@error('name')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<label for="exampleInputEmail1">Email</label>
<input type="email" id="email" name="email" class="@error('email') is-invalid @enderror form-control">
@error('email')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<label for="exampleInputEmail1">Message</label>
<textarea name="message" class="@error('message') is-invalid @enderror form-control"></textarea>
@error('message')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
<div class="form-group mt-4 mb-4">
<div class="captcha">
<span>{!! captcha_img() !!}</span>
<button type="button" class="btn btn-danger" class="reload" id="reload">
↻
</button>
</div>
</div>
<div class="form-group mb-4">
<input id="captcha" type="text" class="form-control" placeholder="Enter Captcha" name="captcha">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
<script type="text/javascript">
$('#reload').click(function () {
$.ajax({
type: 'GET',
url: 'reload-captcha',
success: function (data) {
$(".captcha span").html(data.captcha);
}
});
});
</script>
</body>
</html>
|
O código a seguir exibirá uma mensagem de erro de validação no arquivo de visualização em lâmina:
|
1
2
3
|
@error('name')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
|
Etapa 9 - Executar o servidor de desenvolvimento
Última etapa, abra o prompt de comando e execute o seguinte comando para iniciar o servidor de desenvolvimento:
php artisan serve
Em seguida, abra seu navegador e acesse o seguinte url:
http://127.0.0.1:8000/contact-form-captcha
Fontes:
https://www.tutsmake.com/laravel-8-captcha-tutorial-add-captcha-in-forms/
https://packagist.org/packages/mews/captcha