Autor | Zpráva | ||
---|---|---|---|
gully Profil |
Zdravím,
z nějakýho důvodu (určitě to bude blbost) nedokážu už 2 hodiny rozjet recaptcha na stránce kkbabice.cz/kontakty.php. Můžete mi prosím někdo poradit, co dělám špatně? $captcha = $_POST['g-recaptcha-response']; $private_recaptcha_key = '6LeAUhHkbpX1AAAAALuTdOtmcLD6aHmzLGYp2Il62aJzE'; //kkbabice.cz $ip = $_SERVER['REMOTE_ADDR']; $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$private_recaptcha_key."&response=".$captcha."&remoteip=".$ip); $response = json_decode($response,true); if($response["success"] === false) { die ('Je potřeba vyplnit antispamovou ochranu.'); } EDIT: hodnota $response: { "success": false, "error-codes": [ "missing-input-response" ] } EDIT Hodnota ze serveru se vrací dobře, ale v mém skriptu se špatně vyhodnotí. Nechápu, proč ... $str = "https://www.google.com/recaptcha/api/siteverify?secret=".$private_recaptcha_key."&response=".$captcha."&remoteip=".$ip; $response = json_decode(file_get_contents($str),true); if ($response->success == false) { die ('False: '.$str); } else { die ('True: '.$str); } |
||
Keeehi Profil |
#2 · Zasláno: 7. 7. 2018, 22:03:01
gully:
Je to proto, že json_decode s druhým parametrem nastaveným na true vytvoří z odpovědi asociativní pole ale ty k tomu v podmínce na 4. řádku přistupuješ jako k objektu. Což vyhodí error (úrovně Notice) a vrátí to NULL a NULL == false se v PHP vyhodnotí jako true.
|
||
gully Profil |
A můžu se zeptat, jak by to mělo být správně napsané?
Změnil jsem na $response = json_decode(file_get_contents($str), false); ale výsledek je pořád stejný EDIT: Zkusil jsem taky: $str = "https://www.google.com/recaptcha/api/siteverify?secret=".$private_recaptcha_key."&response=".$captcha."&remoteip=".$ip; $responseData = json_decode(file_get_contents($str)); if (!$responseData->success) { die ('False: '.$str); } else { die ('True: '.$str); } Ale se stejným výsledkem ... |
||
RastyAmateur Profil |
[#2] Keeehi:
„json_decode s druhým parametrem nastaveným na true vytvoří z odpovědi asociativní pole ale ty k tomu v podmínce na 4. řádku přistupuješ jako k objektu“ $response = json_decode(file_get_contents($str),true); if ($response["success"] == false) { // ... } EDIT: I když pak tedy nechápu, proč ti to zprvu nešlo. Tam to vypadá, že je to dobře |
||
gully Profil |
#5 · Zasláno: 8. 7. 2018, 11:04:13
Už to funguje. Problém byl v nastaveni serveru. Neměl jsem povolený fopen wrapper. Všem zúčastněným ale děkuju za váš čas a ochotu pomoct a přeji hezký den.
|
||
Časová prodleva: 6 let
|
0