2013-05-16 61 views
0

我是一個新手,所以希望我張貼在正確的地方!我只有最基本的瞭解代碼&技術問題一般,所以我希望我能解釋這一點....Captcha php代碼不見了?

我想在我的網站上的窗體上實施驗證碼,以阻止機器人攻擊它。我使用的是這樣的:

https://developers.google.com/recaptcha/docs/php

我創建了客戶端的測試php文件併成功實施窗體上的小部件。

我還創建了服務器端的verify.php文件,但我不清楚如何在verify.php文件輸入其中指令(按照上面的鏈接)說,在大膽

if (!$resp->is_valid) { 

**// What happens when the CAPTCHA was entered incorrectly** 

    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . 

     "(reCAPTCHA said: " . $resp->error . ")"); 

} else { 

**// Your code here to handle a successful verification** 

說明書說了以下內容,但我不明白輸入什麼地方。

在上面的代碼中: recaptcha_check_answer返回一個對象,該對象表示用戶是否成功完成了挑戰。

如果$ resp-> is_valid爲true,那麼captcha挑戰已正確完成,您應該繼續進行表單處理。

如果$ resp-> is_valid爲false,那麼用戶無法提供正確的驗證碼文本,您應該重新顯示錶單以允許他們再次嘗試。在這種情況下,$ resp-> error將會是一個可以提供給recaptcha_get_html的錯誤代碼。傳遞錯誤代碼會使reCAPTCHA控件顯示一條消息,說明用戶輸入的文本不正確,應再試一次。

任何幫助非常感謝!

非常感謝。 馬克

+0

您可以插入想要處理成功/不成功驗證的方式,例如顯示錯誤消息,或將用戶重定向到解決驗證碼訪問所需的頁面。 – 2013-05-16 14:19:31

+0

重定向到驗證碼填充的頁面,並顯示錯誤消息,請填寫您在圖片中看到的正確文本或類似內容。 – CodeBird

回答

0
if (!$resp->is_valid) { 

**// What happens when the CAPTCHA was entered incorrectly** 

    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . 

     "(reCAPTCHA said: " . $resp->error . ")"); 

} else { 

**// Your code here to handle a successful verification** 

echo "Login succesfull"; } 
+0

感謝您的迅速回復! :-)我添加了代碼,但它仍然在做同樣的事情,即可以進入下一頁,即使放入驗證碼的單詞是錯誤的。:-( – user2390212

+0

這是所有的代碼: is_valid){ 模(以下簡稱「驗證碼輸入不正確回去試試吧再次」。 「(驗證碼說:」 $ resp->錯誤。 「)」);} 其他{ 回聲 「登錄succesfull」;} } ?> – user2390212

1

//什麼時候CAPTCHA輸入錯誤發生 - >下這個,應該是這樣一個消息,說明他沒有填寫重定向用戶返回到表單頁面驗證碼正確。

//您的代碼在這裏處理成功的驗證 - >在此之下,請正常提交您的聯繫表格。

這是在我的網站工作代碼:

$publickey = "YOUR PUBLIC KEY HERE"; 
$privatekey = "YOUR PRIVATE KEY"; 
$resp = null; 
$resp = recaptcha_check_answer ($privatekey, 
           $_SERVER["REMOTE_ADDR"], 
           $_POST["recaptcha_challenge_field"], 
           $_POST["recaptcha_response_field"]); 

if($resp->is_valid){ 
    // under this, submit your contact form normally. 
} 
else { 
    header("Location: page_where_the_user_was.php?error=1"); 
      die(); 
} 
+0

非常感謝您。不過我想現在我更加困惑了!所以我需要放入一些新的代碼?或者輸入我原始問題底部的說明中的內容? – user2390212

+0

我發佈了包含重定向的代碼。 – Matheno

0

這包括重定向到他們需要重新填寫驗證碼的頁面。 希望它能幫助你。

if (!$resp->is_valid) { 

    **// What happens when the CAPTCHA was entered incorrectly** 

    header('Location: index.php'); 
    **// Or test.php, I don't know the name of your page 

     die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . 

      "(reCAPTCHA said: " . $resp->error . ")"); 

    } else { 

    **// Your code here to handle a successful verification** 

    echo "Login succesfull"; } 
+0

感謝您的幫助!我輸入了您的代碼並插入了正確的重定向頁面,但表單仍能成功完成,無論輸入到captcha中的單詞是否正確:-( – user2390212

+0

@Marijke請在下一次編輯您的答案時在創建新的答案處致謝 – CodeBird

+0

再次感謝您的幫助,我想我到了那裏!對於這些愚蠢的問題抱歉,但我有兩個...... a)說「** //您的代碼在這裏處理成功的驗證**」這意味着我需要一些代碼這行?它會是什麼樣子? b)在代碼中進一步提到「$ _SERVER [」REMOTE_ADDR「]」 - 這是否意味着我需要將我的服務器地址放入?謝謝你的耐心 :-) – user2390212