{"id":27849,"date":"2021-05-26T09:51:00","date_gmt":"2021-05-26T06:51:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27849"},"modified":"2021-10-18T04:09:12","modified_gmt":"2021-10-18T01:09:12","slug":"como-adicionar-eu-nao-sou-um-captcha-de-robo-no-laravel-forms","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/como-adicionar-eu-nao-sou-um-captcha-de-robo-no-laravel-forms\/","title":{"rendered":"Como adicionar Eu n\u00e3o sou um captcha de rob\u00f4 no Laravel Forms"},"content":{"rendered":"<p>Voc\u00ea deseja adicionar o Google reCAPTCHA aos seus formul\u00e1rios do Laravel? O reCAPTCHA do Google ajuda a proteger os formul\u00e1rios contra bots que nos salvam de spams. Se voc\u00ea n\u00e3o est\u00e1 protegendo seus formul\u00e1rios, provavelmente est\u00e1 recebendo uma tonelada de spams no banco de dados.<\/p>\n<p>No momento em que este artigo foi escrito, o Google fornece 2 vers\u00f5es do reCAPTCHA &#8211; v2 e v3. O reCAPTCHA v3 coloca um \u00edcone no canto inferior direito de suas p\u00e1ginas e eles verificam as solicita\u00e7\u00f5es com uma pontua\u00e7\u00e3o. Por outro lado, o reCAPTCHA v2 verifica as solicita\u00e7\u00f5es com um desafio. Neste artigo, estudamos o reCAPTCHA v2 e validaremos as solicita\u00e7\u00f5es com a caixa de sele\u00e7\u00e3o &#8220;N\u00e3o sou um rob\u00f4&quot;.<\/p>\n<h3>Por que precisa do Google reCAPTCHA?<\/h3>\n<p>Um bot da Internet \u00e9 um sistema que executa scripts automatizados na Internet. Eles direcionam os formul\u00e1rios do site para enviar spams para o banco de dados. Basicamente, esse sistema funciona a uma taxa muito mais alta do que os humanos sozinhos. Sempre queremos um ser humano de verdade para interagir com os formul\u00e1rios do nosso site, n\u00e3o um bot.<\/p>\n<p>Ao adicionar o Google reCAPTCHA, podemos proteger os formul\u00e1rios do nosso site contra esses bots da Internet, seus spams e abusos. \u00c9 imposs\u00edvel para um sistema automatizado resolver o desafio definido pelo reCAPTCHA. E seu formul\u00e1rio n\u00e3o ser\u00e1 enviado at\u00e9 que o desafio seja resolvido. Um humano pode facilmente resolver esses desafios e enviar um formul\u00e1rio.<\/p>\n<h3>Configure o Google reCAPTCHA em seu site do Laravel<\/h3>\n<p>Para come\u00e7ar, primeiro voc\u00ea precisa registrar o site no <a href=\"https:\/\/www.google.com\/recaptcha\/admin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Google<\/a>. Escolha a op\u00e7\u00e3o reCAPTCHA v2 e a caixa de sele\u00e7\u00e3o &#8220;N\u00e3o sou um rob\u00f4&#8221;, conforme mostrado na captura de tela abaixo.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20464-6081f5fd17f3f.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20464-6081f5fd17f3f.png\" alt=\"Como adicionar Eu n\u00e3o sou um captcha de rob\u00f4 no Laravel Forms\" ><\/a><\/p>\n<p>Ao registrar o site, copie a chave do site e a chave secreta que precisaremos em um momento.<\/p>\n<p>Temos que adicionar reCAPTCHA no projeto Laravel. Para realizar a tarefa, vou usar a <a href=\"https:\/\/github.com\/anhskohbo\/no-captcha\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">biblioteca anhskohbo \/ no-captcha<\/a>.<\/p>\n<p>Abra o prompt de comando no diret\u00f3rio raiz do seu projeto e execute o comando:<\/p>\n<pre><code>composer require anhskohbo\/no-captcha<\/code><\/pre>\n<p>Abra o arquivo &#8216;config \/ app.php&#8217; e adicione a linha abaixo ao array &#8216;Provedores&#8217;.<\/p>\n<pre><code>AnhskohboNoCaptchaNoCaptchaServiceProvider::class,<\/code><\/pre>\n<p>Adicione o alias da classe \u00e0 matriz de aliases:<\/p>\n<pre><code>'NoCaptcha' =&gt; AnhskohboNoCaptchaFacadesNoCaptcha::class,<\/code><\/pre>\n<p>Publique o arquivo de configura\u00e7\u00e3o usando o comando:<\/p>\n<pre><code>php artisan vendor:publish --provider=\"AnhskohboNoCaptchaNoCaptchaServiceProvider\"<\/code><\/pre>\n<p>Em seguida, abra o <code>.env<\/code>arquivo e especifique as chaves reCAPTCHA da seguinte maneira.<\/p>\n<pre><code>NOCAPTCHA_SECRET=secret-key\nNOCAPTCHA_SITEKEY=site-key<\/code><\/pre>\n<p>Certifique-se de substituir os marcadores de chave secreta e chave do site pelos valores reais.<\/p>\n<p>Limpe o cache de configura\u00e7\u00e3o executando o comando abaixo.<\/p>\n<pre><code>php artisan config:clear <\/code><\/pre>\n<h3>Adicionando Google reCAPTCHA ao formul\u00e1rio no Laravel<\/h3>\n<p>Neste est\u00e1gio, voc\u00ea concluiu a configura\u00e7\u00e3o b\u00e1sica necess\u00e1ria para o reCAPTCHA. Agora vamos escrever algum c\u00f3digo e coloc\u00e1-lo em a\u00e7\u00e3o.<\/p>\n<p>Abra o arquivo de visualiza\u00e7\u00e3o onde deseja adicionar a caixa de sele\u00e7\u00e3o N\u00e3o sou um rob\u00f4. Na parte superior do arquivo blade, inicialize a fonte JS da seguinte maneira:<\/p>\n<pre><code>{!! NoCaptcha::renderJs() !!}<\/code><\/pre>\n<p>Adicione a instru\u00e7\u00e3o de linha \u00fanica abaixo no local onde deseja exibir a caixa de sele\u00e7\u00e3o reCAPTCHA. O melhor lugar \u00e9 antes do bot\u00e3o enviar.<\/p>\n<pre><code>{!! NoCaptcha::display() !!}<\/code><\/pre>\n<p>Como exemplo, vamos criar um formul\u00e1rio com poucos campos e adicionar reCAPTCHA a ele usando o c\u00f3digo abaixo.<\/p>\n<pre><code>{!! NoCaptcha::renderJs() !!}\n\u00a0\n@if ($errors-&gt;has('g-recaptcha-response'))\n\u00a0\u00a0\u00a0\u00a0&lt;span class=\"help-block\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;strong&gt;{{ $errors-&gt;first('g-recaptcha-response') }}&lt;\/strong&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/span&gt;\n@endif\n&lt;form action=\"{{ url('ROUTE_HERE') }}\" method=\"post\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;Name: &lt;input type=\"text\" name=\"fullname\" \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;Email: &lt;input type=\"email\" name=\"email\" \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;Message: &lt;textarea name=\"message\"&gt;&lt;\/textarea&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0{!! NoCaptcha::display() !!}\n\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"submit\" name=\"submit\" value=\"Submit\" \/&gt;&lt;\/p&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Depois de adicionar as linhas acima, voc\u00ea ver\u00e1 o reCAPTCHA aparecer como mostrado na captura de tela abaixo.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20464-6081f5fd17f3f.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20464-6081f5fd17f3f.png\" alt=\"Como adicionar Eu n\u00e3o sou um captcha de rob\u00f4 no Laravel Forms\" ><\/a><\/p>\n<p>No c\u00f3digo acima, tamb\u00e9m adicionei um c\u00f3digo que exibe um erro se ocorrer na valida\u00e7\u00e3o de um reCAPTCHA.<\/p>\n<p>Agora, temos que validar o reCAPTCHA no envio do formul\u00e1rio. Para conseguir isso, vou usar o <a href=\"https:\/\/laravel.com\/docs\/master\/validation\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Validador Laravel da<\/a> seguinte maneira.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse IlluminateSupportFacadesValidator;\n\u00a0\nclass ContactController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0...\n\u00a0\u00a0\u00a0\u00a0...\n\u00a0\u00a0\u00a0\u00a0public function store(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$messages = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'g-recaptcha-response.required' =&gt; 'You must check the reCAPTCHA.',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'g-recaptcha-response.captcha' =&gt; 'Captcha error! try again later or contact site admin.',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$validator = Validator::make($request-&gt;all(), [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'g-recaptcha-response' =&gt; 'required|captcha'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0], $messages);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($validator-&gt;fails()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect('ROUTE_HERE')\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-&gt;withErrors($validator)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-&gt;withInput();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ process the form\n\u00a0\u00a0\u00a0\u00a0}\u00a0\u00a0 \n}<\/code><\/pre>\n<p>Aqui, inclu\u00ed o &#8216;Validador&#8217; de fachada e a valida\u00e7\u00e3o de um reCAPTCHA no m\u00e9todo &#8216;armazenar&#8217;. Se falhar na valida\u00e7\u00e3o, ele gerar\u00e1 um erro.<\/p>\n<p>\u00c9 isso! Voc\u00ea adicionou com sucesso o reCAPTCHA v2 com a caixa de sele\u00e7\u00e3o N\u00e3o sou um rob\u00f4 ao formul\u00e1rio do Laravel. Agora, seu formul\u00e1rio n\u00e3o ser\u00e1 enviado at\u00e9 que o visitante resolva o desafio reCAPTCHA.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/sistema-de-registro-de-usuario-e-login-no-laravel\/\" title=\"Sistema de Registro de Usu\u00e1rio e Login no Laravel\">Sistema de Registro de Usu\u00e1rio e Login no Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/sistema-de-login-social-usando-laravel-socialite\/\" title=\"Sistema de login social usando Laravel Socialite\">Sistema de login social usando Laravel Socialite<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/authorize-net-payment-gateway-integration-no-laravel\/\" title=\"Authorize.Net Payment Gateway Integration no Laravel\">Authorize.Net Payment Gateway Integration no Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quer implementar o captcha N\u00e3o sou um rob\u00f4 no seu Laravel Forms? Neste artigo, mostramos como configurar e usar o google reCaptcha no Laravel.<\/p>\n","protected":false},"author":1,"featured_media":21671,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[502],"tags":[848],"class_list":["post-27849","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=27849"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27849\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21671"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=27849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}