在contact-form.php上使用reCAPTCHA

时间:2014-12-18 13:23:30

标签: php forms recaptcha

reCaptcha正在发送消息而不激活reCaptcha,昨晚我收到了300多条消息。

请帮助我如何添加,以便仅在按钮被激活时才发送reCaptcha。发送发送效果很好但不能激活reCaptcha。

要在我的模板中启动contact.html,我就这样说了:

<!-- Start formulario de contacto -->   
                <div class="row">
                    <div class="col-md-9">
                        <h2>Formulario de contacto</h2>
                        <form action="php/contact-form.php" id="contact-form">

                            <div class="alert alert-success hidden" id="contact-alert-success">
                                <strong>Mensaje enviado correctamente!</strong>  Muchas gracias, pronto nos pondremos en contacto con usted, normalmente nuestro tiempo de respuesta es inferior a 2 horas.
                            </div>
                            <div class="alert alert-danger hidden" id="contact-alert-error">
                                <strong>Error!</strong> A sucedido un error si lo desea puede contactarnos directamente en XXXX@tize.XXXX
                            </div>

                            <div class="row">
                                <div class="col-md-4">
                                    <div class="form-group">
                                        <label>Nombre <span class="required">*</span></label>
                                        <input type="text"
                                            value=""
                                            data-msg-required="Por favor introduzca su nombre"
                                            class="form-control"
                                            name="name" id="name">
                                    </div>
                                </div>
                                <div class="col-md-4">
                                    <div class="form-group">
                                        <label>eMail <span class="required">*</span>  </label>
                                        <input type="email" 
                                            value=""
                                            data-msg-required="Por favor introduzca su eMail"
                                            data-msg-email="Por favor introduzca un eMail válido"
                                            class="form-control"
                                            name="email"
                                            id="email">
                                    </div>
                                </div>
                                <div class="col-md-4">
                                    <div class="form-group">
                                        <label>Asunto <span class="required">*</span></label>
                                        <input type="text" 
                                            value=""
                                            data-msg-required="Por favor introduzca el asunto"
                                            class="form-control"
                                            name="subject"
                                            id="subject">
                                    </div>
                                </div>
                            </div>
                            <div class="row">
                                <div class="col-md-12">
                                    <div class="form-group">
                                        <label>Mensaje <span class="required">*</span></label>
                                        <textarea
                                            data-msg-required="Por favor introduzca su mensaje"
                                            rows="10"
                                            class="form-control"
                                            name="message"
                                            id="message"></textarea>
                                    </div>
                                </div>
                            </div>                                    
                  <!-- Start Google Recaptcha -->
                     <div class="g-recaptcha" data-sitekey="6Lc88P4SAAAAANiT-ZXILUo-ET4xQmbivHy7uHc8"></div><br>
                  <!-- End Google Recaptcha -->
                            <div class="row">
                                <div class="col-md-12">
                                    <input type="submit" value="Enviar mensaje" class="btn btn-primary" data-loading-text="Cargando...">
                                </div>
                            </div>
                        </form>  
                    </div>
                   <!-- End formulario de contacto -->

以php形式发送消息的帖子有contact-form.php:

   <?php
session_cache_limiter('nocache');
header('Expires: ' . gmdate('r', 0));

header('Content-type: application/json');

// Enter your email address
$to = 'XXXX@tize.XX';

$subject = $_POST['subject'];

if($to) {
    $name = $_POST['name'];
    $email = $_POST['email'];

    $fields = array(
        0 => array(
            'text' => 'Name',
            'val' => $_POST['name']
        ),
        1 => array(
            'text' => 'Email address',
            'val' => $_POST['email']
        ),
        2 => array(
            'text' => 'Message',
            'val' => $_POST['message']
        )
    );

    $message = "";

    foreach($fields as $field) {
        $message .= $field['text'].": " . htmlspecialchars($field['val'], ENT_QUOTES) . "<br>\n";
    }

    $headers = '';
    $headers .= 'From: ' . $name . ' <' . $email . '>' . "\r\n";
    $headers .= "Reply-To: " .  $email . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=UTF-8\r\n";

    if (mail($to, $subject, $message, $headers)){
        $arrResult = array ('response'=>'success');
    } else{
        $arrResult = array ('response'=>'error');
    }

    echo json_encode($arrResult);

} else {

    $arrResult = array ('response'=>'error');
    echo json_encode($arrResult);

}
?>

我的表格图片,如果有人想看我的网站,请告诉我并发送链接。非常感谢你。发送而不激活reCaptcha http://goo.gl/oSLQG9

2 个答案:

答案 0 :(得分:0)

1。)缺少使用当前提供的代码<script src='https://www.google.com/recaptcha/api.js'></script>,这是重新连接工作所必需的。

2。)根据Google关于Re-Captcha的文档,Google会针对经过验证/未经验证的提交发送回复,您必须使用$ _GET调用来评估成功/失败的响应。< / p>

来自Google Re-Captcha第2步 - 服务器端集成:

  

当您的用户提交集成了reCAPTCHA的表单时,您就可以了   作为有效负载的一部分获取具有名称的字符串   &#34; G-验证码 - 响应&#34 ;.要检查Google是否已经过验证   该用户使用以下参数发送GET请求:

     

网址:https://www.google.com/recaptcha/api/siteverify   秘密(必填)6LedHvoSAAAAAN4cRa8x1FaVsKPsMrs8SGMqp4ef   响应(必填)&#39; g-recaptcha-response&#39;的值。 remoteip   最终用户的IP地址。

简而言之 - 我没有在您提供的代码中看到所需的SCRIPT链接,我也看到没有实现对Google重新验证码的$ _GET调用,以验证重新验证码的成功/失败。用户。

请确保您正在使用Google提供的工具/说明,以便在此处进行集成:

Google Re-Captcha Site

答案 1 :(得分:0)

从代码中,我看不到私钥和公钥的链接和声明。 我自己用它来处理它:

1.将google-recaptcha文件放在目录中。 2.declare on contact.php,as:

require_once('../recpatcha_google.php');
$publickey = '6LcZIfxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$privatekey = '6LcZIf8Sxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

3.检查用户是否验证并通过验证码:

$resp = recaptcha_check_answer ($privatekey,$_SERVER['REMOTE_ADDR'],strip_tags($_POST['recaptcha_challenge_field']),strip_tags($_POST['recaptcha_response_field']));
if (!$resp->is_valid) { //if not true ......
................
}

4.拨打表格中的验证码,如下:

<?php echo recaptcha_get_html($publickey); ?>

注意:不要忘记在WWW或没有WWW的情况下注册您的网站,以确保一切正常。