2015-04-13 224 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