1
我無法弄清楚爲什麼服務器的響應不允許我驗證驗證碼。我的PHP代碼是:無法驗證PHP格式的reCAPTCHA
$captcha = $_POST['g-recaptcha-response'];
$secret = "my key";
$postdata = "secret=".$secret."&response=".$captcha;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
$out = json_decode($server_output);
curl_close($ch);
if($out->success == true){/*make stuff*/} /* when the user clicks, $out->success is not true! */
我的HTML表單很普通。
<form method="POST" id="form">
<!-- inputs -->
<div class="g-recaptcha" data-sitekey="my key" style="margin:10px"></div>
<input type="submit" name="submit" value="Valider">
</form>
我知道這個問題一定非常愚蠢。我找到了一個解決方法,而不是檢查是否$out->success==true
,檢查是否strlen($captcha) > 1
。但我很確定這不太可能阻止機器人......任何想法?謝謝...
編輯:我剛剛在我的網站(ZED攻擊代理,OWASP基金會的安全工具)上運行ZAP攻擊。它無法完成註冊表單(在此之前,它能夠在一分鐘內創建100個用戶!)。所以這意味着一些機器人會被阻塞。我還是希望把它做正確雖然...
你可以嘗試呼應輸出:'回聲$出;' - 這給你什麼? –
你好,是的,我試着用strval來回應它,但它是空的... –
在解碼之前回顯輸出怎麼樣? –