Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在前端php ajax jquery中验证reCaptcha google_Javascript_Php_Jquery_Ajax_Recaptcha - Fatal编程技术网

Javascript 在前端php ajax jquery中验证reCaptcha google

Javascript 在前端php ajax jquery中验证reCaptcha google,javascript,php,jquery,ajax,recaptcha,Javascript,Php,Jquery,Ajax,Recaptcha,我正在尝试用创建一个表单 虽然我不是javascript和ajax方面的专家,但我成功地创建了表单,并在提交之前使用ajax对其进行了验证,但当我将reCaptcha添加到表单中时,我无法在前端对其进行验证。在后端,它工作得很好,只有在所有字段和验证码都正确填写的情况下才会发送表单 我想创建一些东西,当用户没有填写reCaptcha时提醒他。 下面是我的代码: /********** index.php *************/ <?php $siteKey =

我正在尝试用创建一个表单

虽然我不是javascript和ajax方面的专家,但我成功地创建了表单,并在提交之前使用ajax对其进行了验证,但当我将reCaptcha添加到表单中时,我无法在前端对其进行验证。在后端,它工作得很好,只有在所有字段和验证码都正确填写的情况下才会发送表单

我想创建一些东西,当用户没有填写reCaptcha时提醒他。 下面是我的代码:

 /********** index.php *************/
    <?php  
     $siteKey = 'public key'; // votre clé publique 
     ?>
    <form action="process.php" id="contact" method="POST">


                <label  for="nom" class="label-style">Nom</label>
                <input class="w-input field-style" id="nom" name="nom" onkeyup="checkFilled('nom');" type="text">

                <span id="msg_nom"></span>


                <label for="email" class="label-style">Email</label>
                <input class="w-input field-style" id="email" name="email"  onkeyup="checkFilledEmail('email');" type="email">
                <span id="msg_email"></span>

                <label for="sujet" class="label-style" >Sujet</label>
                <input class="w-input field-style" id="sujet" name="sujet" onkeyup="checkFilled('sujet');" type="text">
                <span id="msg_sujet"></span>

                <label class="label-style" for="message">Message</label>
                <textarea class="w-input messageform" id="message" name="message" onkeyup="checkFilled('message');"  rows="10" cols="80"></textarea>
                <span id="msg_message"></span>

                 <div class="g-recaptcha" data-sitekey="<?php echo $siteKey; ?>"></div>
                 <span id="msg_captch"></span>
                <span id="msg_all"></span>
                <input class="w-button simple-button" type="submit" value="Envoyer" />

        </form>




         <script type="text/javascript">

        function checkFilled(variable) {
            var inputVal = document.getElementById(variable).value;
            if (inputVal == "") {
                document.getElementById(variable).style.borderColor = "red";
            }
            else{
                document.getElementById(variable).style.borderColor = "green";
            }
        }

        function checkFilledEmail(variable) {
            fld_value = document.getElementById(variable).value;
            is_m_valid = 0;
            if (fld_value.indexOf('@') >= 1) {

                m_valid_dom = fld_value.substr(fld_value.indexOf('@')+1).length;

                if (m_valid_dom >= 1) {

                    is_m_valid = 1;

                }

            }
            if (is_m_valid) {
               document.getElementById(variable).style.borderColor = "green";
            } else {
               document.getElementById(variable).style.borderColor = "red";
            }

        }


            $(function(){
                $("#contact").submit(function(event){
                    var nom        = $("#nom").val();
                    var sujet      = $("#sujet").val();
                    var email      = $("#email").val();
                    var message    = $("#message").val();
                    var dataString = nom + sujet + email + message;
                    var captch     = $('.g-recaptcha').val();
                    var msg_all    = "Merci de remplir tous les champs";
                    var msg_alert  = "Merci de remplir le champs: ";
                    var msg_captch = " merci de remplir captcha";
                    $("#msg_all").html('');
                    $("#msg_nom").html('');
                    $("#msg_email").html('');
                    $("#msg_sujet").html('');
                    $("#msg_message").html('');

                 if(dataString  == "")
                    {
                        document.getElementById('nom').style.borderColor = "red";
                        document.getElementById('email').style.borderColor = "red";
                        document.getElementById('sujet').style.borderColor = "red";
                        document.getElementById('message').style.borderColor = "red";

                        $('html, body').animate({
                                scrollTop: $("#msg_nom").offset().top
                                }, 500);

                    }
                    else if(nom == "")
                    {

                        var el10=document.getElementById('nom');
                        el10.style.borderColor = "red";



                    }

                    else if(email == "")
                    {

                        document.getElementById('email').style.borderColor = "red";
                    }
                     else if(sujet == "")
                    {

                        document.getElementById('sujet').style.borderColor = "red";
                    }

                    else if(message == "")
                    {

                        document.getElementById('message').style.borderColor = "red";
                    }

                    else
                    {

                        $.ajax({
                            type : "POST",
                            url: $(this).attr("action"),
                            data: $(this).serialize(),
                            success : function(){
                                $("#msg_all").html(" <p style='text-align:center; margin-bottom:40px;'>Formulaire bien envoyé</p> ");
                                $(':input','#contact')
                                .not(':button, :submit, :reset, :hidden')
                                .val('');
                                $("#msg_nom").html('');
                                $("#msg_email").html('');
                                $("#msg_sujet").html('');
                                $("#msg_message").html('');
                                document.getElementById('nom').style.borderColor = "";
                                document.getElementById('email').style.borderColor = "";
                                document.getElementById('sujet').style.borderColor = "";
                                document.getElementById('message').style.borderColor = "";
                                $('html, body').animate({
                                scrollTop: $("#msg_nom").offset().top
                                }, 500);

                            },
                            error: function(){
                                $("#msg_all").html("<p style='text-align:center; margin-bottom:40px;'>Erreur dappel, le formulaire ne peut pas fonctionner</p>");
                                document.getElementById('nom').style.borderColor = "";
                                document.getElementById('email').style.borderColor = "";
                                document.getElementById('sujet').style.borderColor = "";
                                document.getElementById('message').style.borderColor = "";
                            }
                        });
                    }
                    return false;
                });
            });
        </script>

/************ process.php **************/

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="https://www.google.com/recaptcha/api.js"></script>
<?php


require 'recaptchalib.php';

$secret = 'private key'; // votre clé privée


    // CONDITIONS NOM
    if ( (isset($_POST["nom"])) && (strlen(trim($_POST["nom"])) > 0) ):
        $nom = stripslashes(strip_tags($_POST["nom"]));
    else:
        echo "Merci décrire un nom <br />";
        $nom = "";
    endif;

    // CONDITIONS SUJET
    if ( (isset($_POST["sujet"])) && (strlen(trim($_POST["sujet"])) > 0) ):
        $sujet = stripslashes(strip_tags($_POST["sujet"]));
    else:
        echo "Merci décrire un sujet <br />";
        $sujet = "";
    endif;

    // CONDITIONS EMAIL
    if ( (isset($_POST["email"])) && (strlen(trim($_POST["email"])) > 0) && (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) ):
        $email = stripslashes(strip_tags($_POST["email"]));
    elseif (empty($_POST["email"])):
        echo "Merci décrire une adresse email <br />";
        $email = "";
    else:
        echo "Email invalide :(<br />";
        $email = "";
    endif;

    // CONDITIONS MESSAGE
    if ( (isset($_POST["message"])) && (strlen(trim($_POST["message"])) > 0) ):
        $message = stripslashes(strip_tags($_POST["message"]));
    else:
        echo "Merci décrire un message<br />";
        $message = "";
    endif;

    $cap = 0;
    $reCaptcha = new ReCaptcha($secret);
    if(isset($_POST["g-recaptcha-response"])) 
    {
        $resp = $reCaptcha->verifyResponse(
           $_SERVER["REMOTE_ADDR"],
           $_POST["g-recaptcha-response"]
           );
        if ($resp != null && $resp->success) 
        {
           $cap = 1;
        }
        else
        {       
           echo "verify your CAPTCHA, it is incorrect <br />";
           $cap = 0;
        }

    }
    else 
    {
    echo "ERROR captcha <br />";
    $cap = 0;
    }

    // Les messages d"erreurs ci-dessus s'afficheront si Javascript est désactivé

    // PREPARATION DES DONNEES
    $ip           = $_SERVER["REMOTE_ADDR"];
    $hostname     = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
    $destinataire = 'myEmail@gmail.com';
    $objet        =  $sujet;
    $contenu      = "Nom de l'expéditeur : " . $nom . "\r\n";
    $contenu     .= $message . "\r\n\n";
    $contenu     .= "Adresse IP de l'expéditeur : " . $ip . "\r\n";
    $contenu     .= "DLSAM : " . $hostname;

    $headers  = "From: " . "contact@exemple.com" . " \r\n"; // ici l"expediteur du mail
    $headers  .= "Reply-to: " . $email . " \r\n"; // ici l"expediteur du mail
    $headers .= 'Content-Type: text/plain; charset=ISO-8859-1; DelSp=Yes; format=flowed'. "\r\n";
    $headers .= 'Content-Disposition: inline' . "\r\n";
    $headers .= 'Content-Transfer-Encoding: 7bit' . "\r\n";
    $headers .= 'MIME-Version: 1.0';

    // SI LES CHAMPS SONT MAL REMPLIS
   if ( (empty($nom)) && (empty($sujet)) && (empty($email)) && (!filter_var($email, FILTER_VALIDATE_EMAIL)) && (empty($message)) ):
        echo "echec";
   elseif ( $cap==0 ):
    echo "captcha error <br />";
// ENCAPSULATION DES DONNEES 
else:
        mail($destinataire,$objet,utf8_decode($contenu),$headers);
        echo "Formulaire envoyé";
        unset($_POST);
        unset($message);
        unset($sujet);
        unset($email);
        unset($nom);


endif;

    // Les messages d"erreurs ci-dessus s"afficheront si Javascript est désactivé
?>
我想要的是:

提醒错过检查验证码的用户,就像我在提交前验证其他字段一样。我想在前端提交之前验证我的所有表格。上面的代码检查前端的所有字段,除了验证码

如何验证前端是否已选中验证码


任何允许我继续编码的信息。

我找到了解决方案,如果我们想在提交之前验证reCaptcha,我们必须在submit中添加此简单代码,它将允许我们知道reCaptcha是否被选中:

var msg_captch = " You need to check Captcha";
var captch = jQuery('#g-recaptcha-response').val();
if(!captch)
    {
       $("#msg_captch").html(msg_captch);

    }

请查看上面的代码,了解什么是“msg\u captch”

您的问题到底是什么?你试过什么?你为什么失败了?为什么不能将这些解决方案集成到代码中?请通过添加您面临的实际问题的信息来改进您的问题。done@Eregrith。我编辑了我的问题