2014-12-29 33 views
5

Sto cercando di implementare Googles nuovo 'NoCaptcha' sul mio sito. Finora ho il widget che appare bene, ma non verifica sulla mia pagina PHP.Nuovo Google ReCaptcha che non pubblica/riceve 'g-recaptcha-response'

Il mio codice è configurato come tale:

In <head>

<script src='https://www.google.com/recaptcha/api.js'></script> 

lato client:

<form id="contactform" action="bookingverify.php" method="POST"> 
<input type="text" name="name" size="41"> 
<!--OTHER FORM INPUTS--> 
<div class="g-recaptcha" data-sitekey="mypublickey"></div> 
</form> 

Server Side (bookingverify.php)

$captcha; 
    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=myprivatekey&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); 

    if($response.success==false){ 
      echo '<h2>You are spammer</h2>'; 
    } 
    else{ 
    //SEND MAIL 
    } 

I 've provato a echeggiare $_POST['g-recaptcha-response'] ma sembra vuoto. È come se quella variabile non venisse pubblicata sul PHP.

Qualcuno sa cosa sto facendo male qui?

risposta

2

Il tuo codice ha funzionato bene sul mio server di test con la mia chiave privata/pubblica. Sembra banale, ma l'unica cosa che ho dovuto aggiungere - hai un pulsante di invio negli altri input del tuo modulo? Questo è ciò che effettivamente pubblica i dati nel tuo script PHP.

<input type="submit"> 
</form> 

In caso contrario, aggiungere var_dump($_POST['g-recaptcha-response']); al vostro bookingverify.php e vedere che cosa uscite.

+0

Sì, mi dispiace ho messo il pulsante di invio in - ho appena dimenticato di includerlo sopra. Quando eseguo il dump ottengo solo NULL - il PHP non riceve i dati della chiave privata – MeltingDog

+0

Ho lo stesso problema di MeltingDog e non ho idea di come risolverlo. –

1

OK Non ho idea del motivo, ma ho eliminato il exit; nella seconda istruzione IF e ha funzionato. Strano.

+1

Ho lo stesso problema di te. Ma hai bisogno di quell'uscita altrimenti possono passare senza nemmeno fare la verifica lol. Non sono sicuro del motivo per cui sta accadendo. – frosty

-2

Ho avuto un problema simile. Apparentemente se non si fa clic sulla casella di controllo $ _POST ['g-recaptcha-response'] è vuoto. quindi assicurati di fare clic su di esso durante il test