2015-04-13 95 views
0

希望有人可以幫助..我有小部件顯示爲無captcha recaptcha,我已經找到了一個在互聯網上的代碼,我試圖使用,因爲我不是很好用PHP但它似乎只能部分工作。每當我點擊框或我不,我試圖發送一封電子郵件說,請檢查驗證碼。谷歌沒有captcha recaptcha無法正常工作

這是我在我的郵件confirm.php文件,該文件是在服務器端(我不認爲那裏有需要發佈的窗口小部件的代碼,因爲它顯示和工作,這是第1步)

$email;$message;$sujet;$header;$captcha; 
    if(isset($_POST['email'])){ 
     $email=$_POST['email']; 
    }if(isset($_POST['message'])){ 
     $email=$_POST['message']; 

}if(isset($_POST['sujet'])){ 
     $email=$_POST['sujet']; 
}if(isset($_POST['header'])){ 
     $email=$_POST['header']; 


    }if(isset($_POST['g-recaptcha-response'])){ 
     $captcha=$_POST['g-recaptcha-response']; 
    } 
    if(!$captcha){ 
     echo '<h2>Please check the the captcha form.</h2>'; 
     exit; 
    } 
     $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=6LcIAgETAAAAAEjbARzUsrkgBIHAeE8QmsNE3US-&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); 
    if($response.success==false) 
    { 
     echo '<h2>You are spammer ! Get the @$%K out</h2>'; 
    } 
    else 
    { 
     echo '<h2>Thanks for posting comment.</h2>'; 
    } 
+0

1.您沒有正確清理您的文章。這是一個嚴重的安全漏洞。 2.你如何處理電子郵件變量?如果您試圖使其成爲正文,您可以使用$ email + =繼續添加到變量的末尾。 3.當你檢查布爾類型時,在PHP $ response.success === false中使用=== – phpmeh

+0

對於任何使用ELSE語句的愛。我不知道你在哪裏找到這個代碼,但它只是可怕的... –

+0

即時通訊不好用的PHP,所以如果你可以建議一個解決這個,將不勝感激:) @phpmeh – Essentialz

回答

2

修改此代碼爲您的願望。

<? 
    $APIkey = "API KEY"; 
    $postresult=$_POST['g-recaptcha-response']; 
    $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$APIkey&response=$postresult"); 

    if (strpos($response, 'true')){ 
     //Captcha is valid, do whatever. 
    } else { 
     //Captcha is invalid. Tell them to go away. 
    } 

?> 
+0

嗨Slava ive試過你的代碼,但現在它只是發送一封電子郵件,不管我是否點擊驗證碼:S,我唯一做的就是在「API密鑰」部分添加我的密鑰並祕密=部分 – Essentialz

+0

@Essentialz It不應該...嘗試使用!strpos($ response,'false')來代替。如果這不起作用,請查看您的表單是如何構建的。 –

+0

嗨Slava!我會嘗試,現在我會讓你知道發生了什麼......謝謝你的幫助到目前爲止:) – Essentialz

相關問題