2017-06-15 1 views
4

Je suis nouveau à cette chose google Recaptcha. J'essaie de comprendre ce qui ne fonctionne pas. J'ai essayé plusieurs autres codes et ils ne fonctionnent pas aussi bien que je ne sais pas pourquoi.En ce qui concerne mon code pour Google Recaptcha

Ceci est mon code sous forme

<form name="contact_form" method="post" action="functions.php"> 
<input type="text" id="fname" name="full_name" placeholder="Full Name" required /> 
<input type="number" id="pnumber" name="phone_number" placeholder="Phone Number" required /> 
<input type="email" id="emailid" name="email_address" placeholder="Email Address" required /> 
<textarea placeholder="Message" name="message" required></textarea> 
<span><input type="checkbox" id="disclaimerid" class="disclaimerclass" name="agreement" value="Agree" required>I have read and agreed with the <a class="dataPrivacyLink" href="#">(Data Protection and Privacy Policy)</a> of Hello World</span> 
<div class="g-recaptcha" data-sitekey="--PUBLIC KEY--"></div> 
<input type="submit" name="sendmessage" class="send-message" value="SUBMIT NOW" /> 
</form> 

Et voici mon code PHP

<?php 
    function post_captcha($user_response) { 
     $fields_string = ''; 
     $fields = array(
     'secret' => '_______________PRIVATE_KEY_______________', 
     'response' => $user_response 
    ); 
    foreach($fields as $key=>$value) 
    $fields_string .= $key . '=' . $value . '&'; 
    $fields_string = rtrim($fields_string, '&'); 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify'); 
    curl_setopt($ch, CURLOPT_POST, count($fields)); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, True); 

    $result = curl_exec($ch); 
    curl_close($ch); 

    return json_decode($result, true); 
} 
// Call the function post_captcha 
$res = post_captcha($_POST['g-recaptcha-response']); 
if (!$res['success']) { 
    // What happens when the CAPTCHA wasn't checked 
    echo '<p>Please go back and make sure you check the security CAPTCHA box.</p><br>'; 
} else { 
    // If CAPTCHA is successfully completed... 

    // Paste mail function or whatever else you want to happen here! 
    $send; 
if(isset($_POST['email_address'])) 
{ 
    $send="Your inquiry submitted successfully. we will contact you very soon. "; 
    send_message_to_agent($_POST['full_name'], $_POST['phone_number'], $_POST['email_address'], $_POST['message']); 
} 
else 
{ 
    $send="fail"; 
} 
function send_message_to_agent($full_name, $phone_number, $email_address, $visiter_message){ 

    $to  = '[email protected]'; 
    $subject = 'Hello World'; 

    $message = '<p>Name : '.$full_name.'</p>'; 
    $message .= '<p>Phone Number : '.$phone_number.'</p>'; 
    $message .= '<p>Email Address : '.$email_address.'</p>'; 
    $message .= '<p>Message : '.$visiter_message.'</p>'; 

    $headers = "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 

    mail($to, $subject, $message, $headers); 
} 
echo $send; 
//die; 
} 
// Your code here to handle a successful verification 
/> 
+0

Avez-vous remplacé cette ligne par votre propre clé privée? "'secret' => '_______________PRIVATE_KEY_______________'," –

+0

Oui, j'ai remplacé cette ligne par ma propre clé privée, je l'ai juste retirée car je colle le code ici :) – HELLOHK

Répondre

0

vous devez aussi passer votre ipaddress

$fields = array('secret' => '_______________PRIVATE_KEY_______________', 'response' => $user_response, 'remoteip' => xxx.xxx.xxx.xxx //your ip );

+1

Merci beaucoup! Ce travail: D – HELLOHK

+0

@ HELLOHK Pouvez-vous s'il vous plaît upvote ma réponse, quelqu'un donne un avis négatif –

+0

Cela fonctionne pour quelques essais, puis il a cessé de travailler. Et je n'ai aucune idée pourquoi. – HELLOHK

0

Au début, vous devez inclure la bibliothèque JavaScript de l'API reCAPTCHA.

<script src="https://www.google.com/recaptcha/api.js" async defer></script> 

Dans votre formulaire

<div class="g-recaptcha" data-sitekey="--PUBLIC KEY--"></div> 

Dans votre fonction post

 $secret = 'SCREAT_KEY'; 
       //get verify response data 
    $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']); 
       $responseData = json_decode($verifyResponse); 
       if($responseData->success){ 
//perform action on success 
} 
else{ 
//redirect to login 
} 
+0

Après avoir ajouté dans mon action d'envoi, cela ne fonctionne toujours pas. – HELLOHK

0

Il est bizarre, car après avoir ajouté dans mon serveur IP, il fonctionne pendant un certain temps alors maintenant il ne veut pas envoyer encore.