{"id":29483,"date":"2021-06-16T16:06:00","date_gmt":"2021-06-16T13:06:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29483"},"modified":"2021-10-18T03:31:56","modified_gmt":"2021-10-18T00:31:56","slug":"przewodnik-po-integracji-hcaptcha-z-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/przewodnik-po-integracji-hcaptcha-z-php\/","title":{"rendered":"Przewodnik po integracji hCaptcha z PHP"},"content":{"rendered":"<p>Ostatnio jeden z naszych czytelnik\u00f3w zapyta\u0142 o integracj\u0119 hCapctha na stronie internetowej. <a href=\"https:\/\/www.hcaptcha.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">HCaptcha<\/a> jest mi\u0142\u0105 alternatyw\u0105 do us\u0142ugi Google reCAPTCHA. W tym artykule dowiemy si\u0119, jak mo\u017cna doda\u0107 hCapctha z PHP na swojej stronie internetowej.<\/p>\n<p>Zawsze zaleca si\u0119 umieszczanie captcha na formularzach na stronie. Spamy s\u0105 naprawd\u0119 z\u0142e i po prostu Ci\u0119 frustruj\u0105. Nigdy nie chcesz traci\u0107 cennego czasu na usuwanie fa\u0142szywych\/niepotrzebnych komentarzy.<\/p>\n<p>Korzystaj\u0105c z hCaptcha, u\u017cytkownik musi rozwi\u0105za\u0107 wyzwania przed przes\u0142aniem formularza. A Tw\u00f3j formularz powinien dzia\u0142a\u0107 tylko wtedy, gdy captcha przejdzie jego weryfikacj\u0119. Integruj\u0105c captcha, oszcz\u0119dza mn\u00f3stwo spamu przed wej\u015bciem do bazy danych i skrzynki odbiorczej. Poniewa\u017c tylko prawdziwy cz\u0142owiek mo\u017ce rozwi\u0105za\u0107 zagadk\u0119 captcha.<\/p>\n<p>Powiedziawszy to, przyjrzyjmy si\u0119 integracji hCaptcha z PHP. Wymaga weryfikacji odpowiedzi hCaptcha po stronie serwera. Napiszemy kod po stronie serwera, u\u017cywaj\u0105c zar\u00f3wno cURL, jak i biblioteki Guzzle. U\u017cytkownik mo\u017ce skorzysta\u0107 z dowolnego z nich.<\/p>\n<h3>Pierwsze kroki<\/h3>\n<p>Musisz najpierw za\u0142o\u017cy\u0107 konto w us\u0142udze <a href=\"https:\/\/www.hcaptcha.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hCaptcha<\/a>. W przeciwie\u0144stwie do Google reCAPTCHA, mo\u017cesz u\u017cywa\u0107 kluczy hCaptcha bezpo\u015brednio w swojej witrynie. Nie musisz rejestrowa\u0107 u nich swojej domeny.<\/p>\n<p>Ale je\u015bli chcesz, mo\u017cesz doda\u0107 swoj\u0105 domen\u0119, klikaj\u0105c przycisk <strong>+Nowa witryna<\/strong>. Otworzy si\u0119 formularz, w kt\u00f3rym musisz przekaza\u0107 swoj\u0105 domen\u0119 do pola Hostnames.<\/p>\n<p>Nast\u0119pnie kliknij ikon\u0119 ustawie\u0144 z tabeli i pobierz klucz witryny.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20195-6081cb5f289f4.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-20195-6081cb5f289f4.png\" alt=\"Przewodnik po integracji hCaptcha z PHP\" ><\/a><\/p>\n<p>Aby pobra\u0107 tajny klucz, kliknij kart\u0119 \u201eUstawienia&quot;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20195-6081cb5fbc9c8.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-20195-6081cb5fbc9c8.png\" alt=\"Przewodnik po integracji hCaptcha z PHP\" ><\/a><\/p>\n<p>Gdy b\u0119dziesz gotowy z kluczami, musisz wykona\u0107 2 kroki. Najpierw dodaj hCaptcha do swojego formularza. A nast\u0119pnie sprawd\u017a poprawno\u015b\u0107 odpowiedzi captcha po stronie serwera.<\/p>\n<p>Stw\u00f3rzmy prosty formularz i dodajmy do niego hCaptcha w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<pre><code>&lt;form action=\"\" method=\"POST\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"email\" placeholder=\"Email\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"password\" name=\"password\" placeholder=\"Password\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"h-captcha\" data-sitekey=\"YOUR_SITE_KEY\"&gt;&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;br \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\" \/&gt;\n&lt;\/form&gt;\n&lt;script src=\"https:\/\/hcaptcha.com\/1\/api.js\" async defer&gt;&lt;\/script&gt;<\/code><\/pre>\n<p>Tutaj dodali\u015bmy bibliotek\u0119 JavaScript hCaptcha i dodali\u015bmy klas\u0119 <code>h-captcha<\/code>do kontenera div. Musisz te\u017c przekaza\u0107 klucz witryny do atrybutu <strong>data data-sitekey<\/strong>.<\/p>\n<p>Za\u0142aduj ponownie stron\u0119 i powiniene\u015b teraz zobaczy\u0107 pole wyboru hCaptcha dodane do formularza. Zobaczmy teraz, jak zweryfikowa\u0107 odpowied\u017a captcha.<\/p>\n<h3>Sprawd\u017a odpowied\u017a hCaptcha za pomoc\u0105 cURL<\/h3>\n<p>Gdy u\u017cytkownik przesy\u0142a formularz wraz z captcha, musisz zweryfikowa\u0107 odpowied\u017a captcha po stronie serwera. W celu weryfikacji musisz wys\u0142a\u0107 \u017c\u0105dania POST do punktu ko\u0144cowego hCaptcha <code>https:\/\/hcaptcha.com\/siteverify<\/code>. W \u017c\u0105daniu POST parametrami s\u0105 tajny klucz i h-captcha-response (pochodz\u0105ce z przes\u0142anego formularza).<\/p>\n<p>W PHP mo\u017cemy u\u017cywa\u0107 zar\u00f3wno cURL, jak i Guzzle do interakcji z zewn\u0119trznym serwerem. Podczas wysy\u0142ania \u017c\u0105da\u0144 przez cURL upewnij si\u0119, \u017ce rozszerzenie cURL jest w\u0142\u0105czone na twoim serwerze.<\/p>\n<p>W przypadku cURL Tw\u00f3j kod b\u0119dzie wygl\u0105da\u0142 nast\u0119puj\u0105co, aby zweryfikowa\u0107 odpowied\u017a hCaptcha.<\/p>\n<pre><code>&lt;?php\nif (isset($_POST['submit'])) {\n\u00a0\u00a0\u00a0\u00a0$data = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; \"YOUR_SECRET_KEY\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'response' =&gt; $_POST['h-captcha-response']\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0$ch = curl_init();\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_URL, \"https:\/\/hcaptcha.com\/siteverify\");\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_POST, true);\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\u00a0\u00a0\u00a0\u00a0$response = curl_exec($ch);\n\u00a0\u00a0\u00a0\u00a0$responseData = json_decode($response);\n\u00a0\u00a0\u00a0\u00a0if($responseData-&gt;success) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ proceed the form\n\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo 'Robot verification failed, please try again.';\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;<\/code><\/pre>\n<p>Zast\u0105p symbol zast\u0119pczy rzeczywist\u0105 warto\u015bci\u0105. W powy\u017cszym kodzie sprawdzamy, czy <code>success<\/code>zmienna jest prawdziwa w odpowiedzi. Je\u015bli to prawda, formularz mo\u017cna bezpiecznie kontynuowa\u0107.<\/p>\n<h3>Sprawd\u017a odpowied\u017a hCaptcha za pomoc\u0105 Guzzle<\/h3>\n<p><a href=\"https:\/\/themewp.inform.click\/pl\/jak-korzystac-z-guzzle-klienta-php-http-do-wysylania-zadan-http\/\" title=\"Guzzle\">Guzzle<\/a> jest alternatyw\u0105 dla cURL. Zapewnia znacznie czystszy kod w por\u00f3wnaniu do cURL. Je\u015bli u\u017cywasz Guzzle, nie musisz mie\u0107 rozszerzenia cURL na swoim serwerze.<\/p>\n<p>Aby rozpocz\u0105\u0107, musisz najpierw zainstalowa\u0107 bibliotek\u0119 Guzzle w swoim projekcie. Uruchom poni\u017csze polecenie, aby zainstalowa\u0107 bibliotek\u0119.<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Nast\u0119pnie napisz poni\u017cszy kod, kt\u00f3ry zweryfikuje odpowied\u017a hCAPTCHA za pomoc\u0105 biblioteki Guzzle.<\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\n\u00a0\nuse GuzzleHttpClient;\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$client = new Client([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Base URI is used with relative requests\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'base_uri' =&gt; 'https:\/\/hcaptcha.com',\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/siteverify', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; \"YOUR_SECRET_KEY\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'response' =&gt; $_POST['h-captcha-response']\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$body = $response-&gt;getBody();\n\u00a0\u00a0\u00a0\u00a0$arr_body = json_decode($body);\n\u00a0\u00a0\u00a0\u00a0if($arr_body-&gt;success) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ proceed the form\n\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo 'Robot verification failed, please try again.';\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;<\/code><\/pre>\n<p>Mam nadziej\u0119, \u017ce rozumiesz integracj\u0119 hCaptcha z PHP za pomoc\u0105 cURL i Guzzle. Podziel si\u0119 swoimi przemy\u015bleniami i sugestiami w sekcji komentarzy poni\u017cej.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/text-to-speech-przy-uzyciu-amazon-polly-w-php\/\" title=\"Text-To-Speech przy u\u017cyciu Amazon Polly w PHP\">Text-To-Speech przy u\u017cyciu Amazon Polly w PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-dodac-twitter-oauth-login-w-witrynie-za-pomoca-php\/\" title=\"Jak doda\u0107 Twitter OAuth Login w witrynie za pomoc\u0105 PHP\">Jak doda\u0107 Twitter OAuth Login w witrynie za pomoc\u0105 PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/kompresuj-obrazy-dla-strony-internetowej-za-pomoca-resmush-it-w-php\/\" title=\"Kompresuj obrazy dla strony internetowej za pomoc\u0105 reSmush.it w PHP\">Kompresuj obrazy dla strony internetowej za pomoc\u0105 reSmush.it w PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Chcesz wiedzie\u0107 o integracji hCaptcha z PHP? W tym artykule dowiemy si\u0119, jak u\u017cywa\u0107 cURL i Guzzle oraz zintegrowa\u0107 hCaptcha na swoim on<\/p>\n","protected":false},"author":1,"featured_media":21620,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[277],"tags":[847],"class_list":["post-29483","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=29483"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29483\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/21620"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=29483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=29483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=29483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}