0
recaptcha似乎在我的本地機器上進行驗證,但是當我將其上傳到我的現場網站時,它總是失敗。我傾倒了答案/響應對象,它看起來像這樣:Recaptcha在現場直播無效
ReCaptchaResponse::__set_state(array(
'is_valid' => false,
'error' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"',
))
There's HTML in it!發生了什麼事,爲什麼這會失敗?
我甩我$_POST
瓦爾過,他們是這樣的:
array (
*snip*
'recaptcha_challenge_field' => '03AHJ_VuvqpAkJnmfOZHHf80EPt85lVEeq9IRuO9zw1jZ1fzUk-_DAw0z2k3-TeXzAXQVXUWChyCGnC1RoXRPly4Ldz0FugPKW_WKWEoKysNLnpcv2xvyWONpq0VDV3ipsy5Vukui0zxlSqiBBWw00VYPSkO52OqMv_A',
'recaptcha_response_field' => 'uterf sw',
)
輸入驗證碼:
$recaptcha_answer = recaptcha_check_answer('MY_PRIVATE_KEY_HERE', $_SERVER['REMOTE_ADDR'], $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field']);
if(!$recaptcha_answer->is_valid) {
$validation_errors[] = 'The reCAPTCHA you entered was not correct';
echo '<!-- '.var_export($recaptcha_answer,true).var_export($_POST,true).' -->';
}
顯示代碼:
<?= recaptcha_get_html('MY_PUBLIC_KEY_HERE') ?>
如果我離開的ReCaptcha文本框爲空,並提交我得到正確的錯誤消息的形式:
不正確,驗證碼溶膠
但如果我填補它,它總是顯示文檔類型。 ..我只注意到那不是我使用的文檔類型;它試圖告訴我,我需要使用嚴格的文檔類型,而不是過渡?
我使用的是「乾淨」的主題,如果這有什麼差別:
<script type="text/javascript">
var RecaptchaOptions = {
theme : 'clean'
};
</script>
「紅」一個不能正確顯示;該文本框未對齊。
做了一些戳進圖書館。有一種方法叫做_recaptcha_http_post
。它使用fsockopen
向驗證服務器發送請求。即將離任的要求看起來是這樣的:
POST /recaptcha/api/verify HTTP/1.0
Host: www.google.com
Content-Type: application/x-www-form-urlencoded;
Content-Length: 272
User-Agent: reCAPTCHA/PHP
privatekey=<<MY INFO HERE>>&challenge=<<BLAH>>...
但我回來的響應並不像它從谷歌的。這是「禁止訪問!」頁。我想知道是否有東西在攔截它...
這是Google的reCaptcha?還有你用什麼代碼驗證驗證碼本身? – Sammaye 2012-08-11 20:43:42
@Sammaye:是的,Google recaptcha。現在發佈代碼。 – mpen 2012-08-11 20:46:54
好的,你說!$ recaptcha_answer-> is_valid,else語句在哪裏? – 2012-08-11 20:55:52