2017-08-08 3 views
0

J'ai une page de demande de mot de passe, j'utilise le google captcha, ma question est de savoir comment les faire allumer les deux à la fois.alertes php et google captcha

http://www.camteach.com/user-password-request.php

Si je clique sans soumettre completeing tout ce que j'ai à la fois l'avertissement « S'il vous plaît vérifier l'anti-spam « Je ne suis pas un robot » case! » ET "Aucun email spécifié!"

<?php function validateGoogleCaptcha(){ 
$errorsAndAlerts = ""; 

if ([email protected]$_REQUEST['g-recaptcha-response'])  { $errorsAndAlerts .= "Please check the anti-spam 'I am not a robot' checkbox!<br/>\n"; } 
else { 
    // check recaptcha 
    $postdata = array(); 
    $postdata['secret'] = '6LcwKCwUAAAAAK5CXed1YJGfMk7iVBL5NgN2vPVd'; 
    $postdata['response'] = @$_REQUEST['g-recaptcha-response']; 
    $postdata['remoteip'] = $_SERVER['REMOTE_ADDR']; 
    $url = "https://www.google.com/recaptcha/api/siteverify?". http_build_query($postdata, '', '&'); 
    list($json, $httpStatusCode, $headers, $request) = getPage($url, 5, '', true); 
    $recaptchaResponse = json_decode($json, true); 

    if (!$recaptchaResponse['success']) { 
    if (is_array($recaptchaResponse['error-codes'])) { 
     if (in_array('missing-input-secret', $recaptchaResponse['error-codes']))  { $errorsAndAlerts .= "There's a problem with recaptcha, please let us know! (no secret)<br/>\n"; } 
     if (in_array('invalid-input-secret', $recaptchaResponse['error-codes']))  { $errorsAndAlerts .= "There's a problem with recaptcha, please let us know! (invald secret)<br/>\n"; } 
     if (in_array('missing-input-response', $recaptchaResponse['error-codes'])) { $errorsAndAlerts .= "Please fill out the recaptcha box!<br/>\n"; } 
     if (in_array('invalid-input-response', $recaptchaResponse['error-codes'])) { $errorsAndAlerts .= "Please fill out the recaptcha box again, your answer was incorrect!<br/>\n"; } 
    } 
    if (!$errorsAndAlerts) { $errorsAndAlerts .= "Invalid captcha response, please try again or contact us directly and let us know."; } 
    @trigger_error("Failed recaptcha on signup form", E_USER_NOTICE); 
    } 
} 

return $errorsAndAlerts; 
} 
// error checking 
$errorsAndAlerts = alert(); 
if (@$CURRENT_USER) { 
$errorsAndAlerts = "You are already logged in! <a href='/'>Click here to continue</a> or <a href='?action=logoff'>Logoff</a>."; 
} 
?> 
<?php // process form 
if (@$_POST['action']):?> 
<?php $errorsAndAlerts = ""; 
$errorsAndAlerts .= validateGoogleCaptcha(); 
?> 
<?php endif ?> 
<?php 
### send reset email 
if (@$_POST['action'] == 'sendPasswordReminder') { 
global $SETTINGS, $TABLE_PREFIX; 

// display errors 
if ([email protected]$_REQUEST['usernameOrEmail']) { $errorsAndAlerts .= "No email specified!<br/>\n"; } 

// send emails 
if (@$_REQUEST['usernameOrEmail']) { 
    $where = mysql_escapef("? IN (`username`,`email`)", $_REQUEST['usernameOrEmail']); 
    $user = mysql_get(accountsTable(), null, $where); 

    // send message 
    if ($user) { 

    $emailHeaders = emailTemplate_loadFromDB(array(
     'template_id' => 'USER-PASSWORD-RESET', 
     'placeholders' => array(
     'user.username' => $user['username'], 
     'user.email' => $user['email'], 
     'loginUrl'  => realUrl($GLOBALS['WEBSITE_LOGIN_LOGIN_FORM_URL']), 
     'resetUrl'  => realUrl($GLOBALS['WEBSITE_LOGIN_RESET_URL'] . "?userNum={$user['num']}&resetCode=" . _generatePasswordResetCode($user['num'])), 
    ))); 
    $mailErrors = sendMessage($emailHeaders); 
    if ($mailErrors) { alert("Mail Error: $mailErrors"); } 

    // 
    $errorsAndAlerts .= "Thanks, we've emailed you instructions on resetting your password.<br/><br/> 
    If you don't receive an email within a few minutes check your spam filter for messages from elvis himself<br/>\n"; 

    // clear form 
    $_REQUEST['usernameOrEmail'] = ''; 
    } 

    // 
    if (!$user) { $errorsAndAlerts .= "No matching username or email was found!<br/>\n"; } 
} 

} ?>

si je viens de cliquer sur le Googles "Je ne suis pas un robot" captcha ,,,, je reçois le "Aucun e-mail indiquée!" alerte

mais si je ne vérifie pas le captcha, et entrez simplement une adresse e-mail, à cette occasion entrez [email protected], et il traverse. Je le veux donc quand le bon email est entré et que captcha n'est pas coché pour que l'alerte apparaisse "Cochez la case anti-spam 'Je ne suis pas un robot'!"

Je serais reconnaissant pour toute contribution. acclamations

Répondre

1

solution simple, ajoutez une variable captcha $ en haut et ajoutez ce code

if(isset($_POST['g-recaptcha-response'])){ 
     $captcha=$_POST['g-recaptcha-response']; 
    } 
    if(!$captcha){ 
     echo "<script> alert('Please check the the captcha form.'); </script>"; 
    } 

Je recommande d'utiliser ce tutoriel, il m'a beaucoup aidé

https://codeforgeek.com/2014/12/google-recaptcha-tutorial/

espère que cela aide :)

+0

Merci pour votre aide, mais mon captcha a plus d'un message d'erreur/alerte. –