reCaptcha v AJAX formuláři

admin@easyweb4u.cz
Backer | 133
+
0
-

Mám ve formuláři recaptchu. V presenteru mám

<?php
$this->recaptcha = false;

if (isset($_POST['g-recaptcha-response'])) {

            $this->recaptcha = json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=XXXXX&response=' . $_POST['g-recaptcha-response']));

            $this->recaptcha = $this->recaptcha->{'success'};
}
?>

Ve dvou webech mi to – kupodivu – funguje, ale v dalších už ne. Všechny jsou Nette 3.0. Ta POST proměnná přijde, ale json_decode už nevrátí co má, nebo nefunguje toto $this->recaptcha->{‚success‘}. Kdyby mi to nefungovalo jinde, tak neotravuju, ale tohle mě docela štve. Dík.

Editoval admin@easyweb4u.cz (7. 7. 2021 9:32)

admin@easyweb4u.cz
Backer | 133
+
0
-

Tak tedy odpovím si sám. Na serveru musí být povoleno allow_url_fopen. Pak to normálně funguje, mám recaptchu v ajaxovém formuláři a scripty pro načtení recaptchy jsem dal do snippetu, pro případ, že podmínky pro vyplnění polí formuláře nejsou splněny. Jen mi není jasné, proč CONTRIBUTTE nebo UESTLA píší pro recaptchu celé moduly, když to funguje takto jednoduše.

Felix
Nette Core | 1161
+
0
-

Ahoj @adminaeasyweb4ucz, contributte/recaptcha jsem napsal pro lidi, kteri nemaji s recaptcha takovou zkusenost. A take pro inspiraci, jak psat balicky do nette.

uestla
Backer | 783
+
+1
-

Ahoj, hlavní argumenty pro balíček:

  • znovupoužitelnost (tebou uvedený kód nechceš psát pořád znovu + v něm máš hardcodovaný secret)
  • zasazení do Nette (jde o formuláře, tak to chceš mít jako rozšíření formulářů vč. validační hlášky, a už vůbec ne používat superglobální $_POST)
  • lepší možnost integrace do projektu (allow_url_fopen je fajn, ale většinou máš v aplikaci jinou vrstvu HTTP klienta, kterou chceš použít)
admin@easyweb4u.cz
Backer | 133
+
0
-

Felix napsal(a):

Ahoj @adminaeasyweb4ucz, contributte/recaptcha jsem napsal pro lidi, kteri nemaji s recaptcha takovou zkusenost. A take pro inspiraci, jak psat balicky do nette.

Já jsem se pokoušel přes composer contributte/recaptcha nainstalovat, ale neprošlo to – tuším, že tam nebyla kompatibilita s verzi DI. Používám nette 3.0. Je chyba na mé straně?

admin@easyweb4u.cz
Backer | 133
+
0
-

uestla napsal(a):

Ahoj, hlavní argumenty pro balíček:

  • znovupoužitelnost (tebou uvedený kód nechceš psát pořád znovu + v něm máš hardcodovaný secret)
  • zasazení do Nette (jde o formuláře, tak to chceš mít jako rozšíření formulářů vč. validační hlášky, a už vůbec ne používat superglobální $_POST)
  • lepší možnost integrace do projektu (allow_url_fopen je fajn, ale většinou máš v aplikaci jinou vrstvu HTTP klienta, kterou chceš použít)

Jo jo, díky, tomu rozumím. Až budu mít čas, ještě se k uestla captche vrátím. Gratuluji, je to pěkné dílo.

admin@easyweb4u.cz
Backer | 133
+
0
-

admin@easyweb4u.cz napsal(a):

Felix napsal(a):

Ahoj @adminaeasyweb4ucz, contributte/recaptcha jsem napsal pro lidi, kteri nemaji s recaptcha takovou zkusenost. A take pro inspiraci, jak psat balicky do nette.

Já jsem se pokoušel přes composer contributte/recaptcha nainstalovat, ale neprošlo to – tuším, že tam nebyla kompatibilita s verzi DI. Používám nette 3.0. Je chyba na mé straně?

ještě bych měl prosbu, posílám trvalým příkazem 220,–. Můžete ze mě udělat Backera?

Felix
Nette Core | 1161
+
0
-

admin@easyweb4u.cz napsal(a):

Já jsem se pokoušel přes composer contributte/recaptcha nainstalovat, ale neprošlo to – tuším, že tam nebyla kompatibilita s verzi DI. Používám nette 3.0. Je chyba na mé straně?

Posli mi prosim nejakou error hlasku nebo neco co nefunguje, bohuzel to takto muzu jen hadat, cim by to mohlo byt.

ještě bych měl prosbu, posílám trvalým příkazem 220,–. Můžete ze mě udělat Backera?

Poresim s @DavidGrudl.

admin@easyweb4u.cz
Backer | 133
+
0
-

Felix napsal(a):

admin@easyweb4u.cz napsal(a):

Já jsem se pokoušel přes composer contributte/recaptcha nainstalovat, ale neprošlo to – tuším, že tam nebyla kompatibilita s verzi DI. Používám nette 3.0. Je chyba na mé straně?

Posli mi prosim nejakou error hlasku nebo neco co nefunguje, bohuzel to takto muzu jen hadat, cim by to mohlo byt.

ještě bych měl prosbu, posílám trvalým příkazem 220,–. Můžete ze mě udělat Backera?

Poresim s @DavidGrudl.

provedl jsem upgrade Nette (kvůli té bezpečnostní díře) a už to přes composer proběhlo

C:\xampp\htdocs\solidarita>composer require contributte/recaptcha
Using version ^3.4 for contributte/recaptcha
./composer.json has been updated
Running composer update contributte/recaptcha
Loading composer repositories with package information
Updating dependencies
Lock file operations: 2 installs, 0 updates, 0 removals
 – Locking contributte/di (v0.5.1)
 – Locking contributte/recaptcha (v3.4.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
 – Downloading contributte/di (v0.5.1)
 – Downloading contributte/recaptcha (v3.4.1)
 – Installing contributte/di (v0.5.1): Extracting archive
 – Installing contributte/recaptcha (v3.4.1): Extracting archive
1 package suggestions were added by new dependencies, use composer suggest to see details.
Generating autoload files

jinak k tomu upgradu Nette na ostrých webech jsem před chvílí napsal na forum. Jestli bych tě mohl poprosit…

admin@easyweb4u.cz
Backer | 133
+
0
-

C:\xampp\htdocs\solidarita>composer suggest

nette/utils suggests
ext-intl: to use Strings::webalize(), toAscii(), normalize() and compare()
uestla/recaptcha-control suggests
guzzlehttp/guzzle: Needed by ReCaptchaControl\Http\Requester\GuzzleRequester.

2 additional suggestions by transitive dependencies can be shown with –all

nevěděl by někdo co s tím?