Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcelocardoso

Google Recaptcha V3 - Param não resgata

Recommended Posts

olá colegas.

depois de tanto quebrar a cabeça com o RECAPTCHA do google, v3.
não estou conseguindo resgatar o ID do INPUT hidden que guarda o TOKEN!!!!

Segue código
HTML
 

<!DOCTYPE html>
<html lang="pt_BR">

    <head>
        <meta charset="utf-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <meta content="ie=edge" http-equiv="X-UA-Compatible">
        <title>Google Recaptcha - v3</title>

        <!-- STYLES CSS -->
        <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/css/bootstrap.min.css">
        <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/inputmask@3.3.11/css/inputmask.min.css">
        <!-- STYLES CSS -->

        <!-- SCRIPTS JS -->
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-form@4.2.2/dist/jquery.form.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/jquery.validate.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/localization/messages_pt_BR.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/additional-methods.min.js"></script>
        <!-- SCRIPTS JS -->

        <!-- SCRIPTS RECAPTCHA - SITE KEY -->
        <script src="https://www.google.com/recaptcha/api.js?render=6LesQewUAAAAAIWQKRKk19yob6G8hx3LEoYXybIC"></script>
        <!-- SCRIPTS RECAPTCHA - SITE KEY -->

        <style type="text/css">
            *:focus {
                outline: none !important;
            }

            html,
            body {
                height: 100%;
                width: 100%;
            }

            body {
                color: darkgrey;
                margin: 60px 0px;
                -webkit-font-smoothing: antialiased;
                -moz-osx-font-smoothing: grayscale;
            }

            /* google captcha - hidden na tela */
            .grecaptcha-badge {
                display: none !important;
            }

            .valid-class {
                color: #006400;
                padding-left: 12px;
                padding-top: 3px;
                font-size: 15px;
                display: block;
            }

            .error-class {
                color: #e33d00;
                padding-left: 12px;
                padding-top: 3px;
                font-size: 15px;
                display: block;
            }

            .loading {
                position: fixed;
                left: 0px;
                top: 0px;
                margin: 0px;
                width: 100%;
                height: 100%;
                display: block;
                z-index: 999999;
                opacity: 0.92;
                -moz-opacity: 0.92;
                filter: alpha(opacity=98);
                background-color: #00224b;
                background-image: url("img/loading.gif");
                background-repeat: no-repeat;
                background-position: 50% 50%;
                text-align: center;
                overflow: hidden;
                font-weight: bold;
                font-size: 25px;
                color: white;
                padding-top: 25%;
            }

        </style>
    </head>

    <body>


        <!-- code | formulario -->
        <section class="container-fluid">
            <h1 class="text-center">RECAPTCHA</h1>
            <h4 class="text-center">GOOGLE v3</h4>
            <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12">
                <form id="frm_form_contato" method="post" action="inc/google-form.asp">
                    <div class="form-group">
                        <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 mb-2">
                            <label class="control-label" for="campo_nome">Nome</label>
                            <input type="text" id="campo_nome" name="campo_nome" class="form-control" autocomplete="name" placeholder="Digite seu nome">
                        </div>
                        <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 mb-2">
                            <label class="control-label" for="campo_email">Email</label>
                            <input type="text" id="campo_email" name="campo_email" class="form-control" autocomplete="email" placeholder="Digite seu e-mail">
                        </div>
                        <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 mb-2">
                            <label class="control-label" for="campo_mensagem">Mensagem</label>
                            <textarea type="text" id="campo_mensagem" name="campo_mensagem" class="form-control" placeholder="Descreva sua mensagem"></textarea>
                        </div>
                        <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 mt-4">
                            <div id="contato_retorno"></div>
                            <button id="btn-form" type="submit" class="btn btn-block btn-md btn-success">ENVIAR</button>
                        </div>
                    </div>

                    <input type="hidden" id="token">
                </form>
            </div>
            <div id="contato_carregando"></div>
        </section>
        <!-- code | formulario -->





        <!-- GOOGLE reCAPTCHA -->
        <script type="text/javascript">
            "use strict";

            //formulario de validacao
            $("#frm_form_contato").validate({
                errorClass: "error-class",
                validClass: "valid-class",

                onkeyup: function (element) {
                    this.element(element);
                },

                onfocusout: function (element) {
                    this.element(element);
                },

                rules: {
                    campo_nome: {
                        required: true,
                        minlength: 5,
                        maxlength: 50
                    },

                    campo_email: {
                        required: true,
                        minlength: 5,
                        email: true
                    },

                    campo_mensagem: {
                        required: true,
                        minlength: 5,
                        maxlength: 5000
                    }
                },

                submitHandler: function (form) {
                    grecaptcha.ready(function () {
                        grecaptcha.execute('6LesQewUAAAAAIWQKRKk19yob6G8hx3LEoYXybIC', {
                            action: 'homepage'
                        }).then(function (token) {
                            $("input#token").attr({
                                "value": "" + token + ""
                            });
                        });
                    });

                    // A) resgatar variaveis (uma por uma)
                    var form_url = $(this).attr("action");
                    var form_method = $(this).attr("method");
                    var form_token = $(this).find('input[name="token"]').val();
                    var form_nome = $(this).find('input[name="campo_nome"]').val();
                    var form_email = $(this).find('input[name="campo_email"]').val();
                    var form_telefone = $(this).find('input[name="campo_telefone"]').val();
                    var form_mensagem = $(this).find('input[name="campo_mensagem"]').val();

                    // B) resgatar variaveis (tudo de uma vez)
                    // var form_data = $("#frm_form_contato").serializeArray();

                    var form_data = {
                        'campo_nome': $("#campo_nome").val(),
                        'campo_email': $("#campo_email").val(),
                        'campo_mensagem': $("#campo_mensagem").val(),
                        'campo_token': $("#token").val(),
                    };


                    // ENVIAR FORM com POST
                    // $("form").submit(function (e) {
                    //     e.preventDefault();
                    //     var $form = $(this);
                    //     $.post($form.attr("action"), $form.serialize()).then(function () {});
                    // });


                    //ENVIAR FORM com AJAX
                    $.ajax({
                        url: $("#frm_form_contato").attr("action"),
                        type: $("#frm_form_contato").attr("method"),
                        data: JSON.stringify(form_data),
                        dataType: 'json',
                        contentType: 'application/json; utf-8',

                        //loading antes do sucesso e do envio
                        beforeSend: function () {
                            $("#btn-form").prop("disabled", false).text('Enviando ...').fadeIn();
                            $("#contato_carregando").html("<div class='loading'></div>").fadeIn(500);
                        },

                        //se houver sucesso
                        success: function (response) {
                            setTimeout(function () {
                                $("#contato_carregando").fadeOut(250);
                            }, 3950);

                            setTimeout(function () {
                                $("#contato_retorno").html("<div class='valida_a_certo'>" + response + "</div>").fadeIn(500);
                            }, 4000);

                            setTimeout(function () {
                                $("#contato_retorno").fadeOut(500);
                                $("#btn-form").prop("disabled", false).text('Enviado');
                                $(form)[0].reset();
                            }, 10000);
                        },

                        //se houver sucesso, finaliza
                        complete: function (response) {
                            $('body').fadeTo(4000, '1');
                        },

                        //se houver erro
                        error: function (response) {
                            setTimeout(function () {
                                $("#contato_retorno").html("<div class='valida_a_erro'>" + response + "</div>").fadeIn(500);
                            }, 4000);

                            setTimeout(function () {
                                $("#contato_retorno").fadeOut(500);
                                $(form)[0].reset();
                            }, 10000);
                        },
                    });
                    return false;
                }
            });

        </script>

        <!-- SCRIPTS RODAPE -->
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/js/bootstrap.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/inputmask@3.3.11/dist/jquery.inputmask.bundle.js"></script>
        <!-- SCRIPTS RODAPE -->

    </body>

</html>

BACKEND - ASP
não estou conseguindo repassar o TOKEN para cá, já tentei de várias formas... 
mas não consigo nem com REQUEST.QUERYSTRING, REQUEST e nem REQUEST.FORM.


 

<%
   Response.LCID = 1033 'USA LCID
IF Request.ServerVariables("SERVER_NAME") <> Request.ServerVariables("SERVER_NAME") THEN
   Response.Write "ACESSO RESTRITO!"
ELSE

   G_TOKEN      = Request.Form("campo_token")                                 'google token
   G_KEY_URL    = "https://www.google.com/recaptcha/api/siteverify?secret="   'google url
   G_KEY_SITE   = ""                  'google chave do site
   G_KEY_SECRET = ""                  'google chave secreta

   IF Request.ServerVariables("REQUEST_METHOD") = "POST" THEN
      SET objXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
          objXML.Open "GET", ""& G_KEY_URL & G_KEY_SECRET &"&response=" & G_TOKEN & "", false
          objXML.Send
      
         IF InStr(objXML.ResponseText, "TRUE") THEN
            campo_nome      = Request.Form("campo_nome")
            campo_email     = Request.Form("campo_email")
            campo_mensagem  = Replace(Request.Form("campo_mensagem"), Chr(13), "<br>") 

                 cdoSERVER  = "mail.teste.com.br"
                 cdoORIGEM  = "teste@teste.com.br"
                 cdoPASS    = "senha"
                 cdoPORT    = 587
                 cdoTIMEOUT = 120
                 cdoUSING   = 2
                 cdoAUT     = 1
                 cdoSSL     = 0

                 cdoDE      =  campo_nome &" <"& campo_email &">"
                 cdoPARA    = "teste@teste.com.br"
                 cdoASSUNTO = "teste - contato"
                 cdoTEXT    = "Envio de mensagem usando CDOSYS"

            SET objCDOSYSmail = Server.CreateObject("cdo.message")
            SET objCDOSYScon  = Server.CreateObject("cdo.configuration")

                objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport")          = cdoPORT
                objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing")               = cdoUSING
                objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")        = cdoAUT
                objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout")   = cdoTIMEOUT
                objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl")              = cdoSSL
                objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver")              = cdoSERVER
                objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername")            = cdoORIGEM
                objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword")            = cdoPASS
                objCDOSYScon.Fields.Update

            SET objCDOSYSmail.Configuration    = objCDOSYScon
                objCDOSYSmail.From             = cdoORIGEM
                objCDOSYSmail.To               = cdoPARA
                objCDOSYSmail.Subject          = cdoASSUNTO
                objCDOSYSmail.TextBody         = cdoTEXT

                  ON ERROR RESUME NEXT
                     IF objCDOSYSmail.SEND = "" THEN 
                        Response.Write "Mensagem enviada com sucesso!"
                     ELSE
                        IF NOT ERR.NUMBER = "0" THEN
                              Response.Write "Não foi possível enviar a mensagem!"
                              Response.Write "OCORREU UM ERRO: " & Err.Number & " | " & Err.Description
                           Err.Clear()
                        END IF
                     END IF
                  ON ERROR GOTO 0

            SET objCDOSYSmail = Nothing 
            SET objCDOSYScon  = Nothing

         ELSE
            Response.Write "recaptcha errado!"
         END IF

      SET objXML = Nothing
   END IF

END IF
%>

Quem tiver tempo, e quiser dar uma olhada, só falta isso para finalizar o código, PASSAR o bendito parametro que não consigo do input para o ASP.
No demais, agradeço.
Até....
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Após 4 dias de quebra-cabeça, consegui finalizar o script....
Quem tá sofrendo, e precisar, segue exemplo completo em ASP, mas podendo ser adaptável para PHP ou qualquer outra linguagem.

HTML:
 

<!DOCTYPE html>
<html lang="pt_BR">

    <head>
        <meta charset="utf-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <meta content="ie=edge" http-equiv="X-UA-Compatible">
        <title>Google Recaptcha - v3</title>

        <!-- STYLES CSS -->
        <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/css/bootstrap.min.css">
        <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/inputmask@3.3.11/css/inputmask.min.css">
        <!-- STYLES CSS -->

        <!-- SCRIPTS JS -->
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-form@4.2.2/dist/jquery.form.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/jquery.validate.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/localization/messages_pt_BR.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/additional-methods.min.js"></script>
        <!-- SCRIPTS JS -->

        <!-- SCRIPTS RECAPTCHA - SITE KEY -->
        <script src="https://www.google.com/recaptcha/api.js?render=6LesKRKk19yob6G8hx3LEoYXybIC"></script>
        <!-- SCRIPTS RECAPTCHA - SITE KEY -->

        <style type="text/css">
            *:focus {
                outline: none !important;
            }

            html,
            body {
                height: 100%;
                width: 100%;
            }

            body {
                color: darkgrey;
                margin: 60px 0px;
                -webkit-font-smoothing: antialiased;
                -moz-osx-font-smoothing: grayscale;
            }

            /* google captcha - hidden na tela */
            .grecaptcha-badge {
                /* display: none !important; */
                visibility: hidden !important;
            }

            /* google captcha - exibe somente na página contato */
            #frm-contato .grecaptcha-badge {
                visibility: visible !important;
            }

            .grecaptcha-badge {
                width: 0 !important;
            }

            .grecaptcha-badge.show {
                width: 256px !important;
            }

            .grecaptcha-badge {
                display: flex;
                justify-content: flex-end;
                overflow: hidden;
                width: 70px;
                height: 60px;
                margin: 0 auto;
                box-shadow: 0 0 4px #ddd;
                transition: linear 100ms width;
            }

            .grecaptcha-badge:hover {
                width: 256px;
            }

            .grecaptcha-badge-small {
                font-size: 9px;
                color: darkgray;
                text-align: center;
            }

            .valid-class {
                color: #006400;
                padding-left: 12px;
                padding-top: 3px;
                font-size: 15px;
                display: block;
            }

            .error-class {
                color: #e33d00;
                padding-left: 12px;
                padding-top: 3px;
                font-size: 15px;
                display: block;
            }

            .loading {
                position: fixed;
                left: 0px;
                top: 0px;
                margin: 0px;
                width: 100%;
                height: 100%;
                display: block;
                z-index: 999999;
                opacity: 0.92;
                -moz-opacity: 0.92;
                filter: alpha(opacity=98);
                background-color: #00224b;
                background-image: url("img/loading.gif");
                background-repeat: no-repeat;
                background-position: 50% 50%;
                text-align: center;
                overflow: hidden;
                font-weight: bold;
                font-size: 25px;
                color: white;
                padding-top: 25%;
            }

        </style>
    </head>

    <body>


        <!-- code | formulario -->
        <section id="frm-contato" class="container-fluid">
            <h1 class="text-center">RECAPTCHA</h1>
            <h4 class="text-center">GOOGLE v3</h4>
            <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12">
                <form id="form_contato" method="post" action="inc/recaptcha.asp">
                    <div class="form-group">
                        <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 mb-2">
                            <label class="control-label" for="campo_nome">Nome</label>
                            <input type="text" id="campo_nome" name="campo_nome" class="form-control" autocomplete="name" placeholder="Digite seu nome">
                        </div>
                        <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 mb-2">
                            <label class="control-label" for="campo_email">Email</label>
                            <input type="text" id="campo_email" name="campo_email" class="form-control" autocomplete="email" placeholder="Digite seu e-mail">
                        </div>
                        <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 mb-2">
                            <label class="control-label" for="campo_mensagem">Mensagem</label>
                            <textarea type="text" id="campo_mensagem" name="campo_mensagem" class="form-control" placeholder="Descreva sua mensagem"></textarea>
                        </div>
                        <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 mt-4">
                            <div id="contato_retorno"></div>
                            <button id="btn-form" type="submit" class="btn btn-block btn-md btn-success">ENVIAR</button>
                        </div>
                    </div>

                    <input type="hidden" id="g-recaptcha-response">
                    <input type="hidden" id="action" value="validate_captcha">

                    <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 grecaptcha-badge-small p-4">
                        Este site é protegido pelo reCAPTCHA e pelo Google
                        <a href="https://policies.google.com/privacy">Política de Privacidade</a> e
                        <a href="https://policies.google.com/terms">Termos do serviço</a>.
                    </div>

                </form>
            </div>
            <div id="contato_carregando"></div>
        </section>
        <!-- code | formulario -->



        <!-- GOOGLE reCAPTCHA -->
        <script type="text/javascript">
            "use strict";

            //formulario de validacao
            $("#form_contato").validate({
                errorClass: "error-class",
                validClass: "valid-class",

                onkeyup: function (element) {
                    this.element(element);
                },
                onfocusout: function (element) {
                    this.element(element);
                },

                rules: {
                    campo_nome: {
                        required: true,
                        minlength: 5,
                        maxlength: 50
                    },
                    campo_email: {
                        required: true,
                        minlength: 5,
                        email: true
                    },
                    campo_mensagem: {
                        required: true,
                        minlength: 5,
                        maxlength: 5000
                    }
                },

                submitHandler: function (form) {

                    // A) resgatar variaveis (SerializeArray)
                    // var formData = $("#frm_form_contato").serialize();
                    // var formData = $("#frm_form_contato").serializeArray();

                    // B) resgatar variaveis (FormData)
                    // var formData = {
                    // 'campo_nome': $("#campo_nome").val(),
                    // 'campo_email': $("#campo_email").val(),
                    // 'campo_mensagem': $("#campo_mensagem").val(),
                    // 'campo_token': $("#g-recaptcha-response").val(),
                    // };


                    //CAPTCHA + FORM POR POST
                    // grecaptcha.ready(function () {
                    //     grecaptcha.execute('6LeWQKRKk19yob6G8hx3LEoYXybIC', {
                    //         action: 'validate_captcha'
                    //     }).then(function (token) {
                    //         document.getElementById('g-recaptcha-response').value = token;

                    //         $.post($("#form_contato").attr("action"), {
                    //             campo_nome: $("#campo_nome").val(),
                    //             campo_email: $("#campo_email").val(),
                    //             campo_mensagem: $("#campo_mensagem").val(),
                    //             campo_token: $("#g-recaptcha-response").val(),
                    //         }).then(function (response) {
                    //             if (response = "success") {
                    //                 console.log('captcha ok');
                    //                 alert(token);
                    //             } else {
                    //                 console.log('recaptcha inválido! você é um ROBO ou SPAMMER!!!');
                    //             }
                    //         });

                    //     });
                    // });



                    var nome = $("#campo_nome").val();
                    var email = $("#campo_email").val();
                    var mensagem = $("#campo_mensagem").val();
                    var token = $("#g-recaptcha-response").val();


                    //CAPTCHA + FORM POR AJAX
                    grecaptcha.ready(function () {
                        grecaptcha.execute('6LesKk19yob6G8hx3LEoYXybIC', {
                            action: 'validate_captcha'
                        }).then(function (token) {
                            document.getElementById('g-recaptcha-response').value = token;

                            $.ajax({
                                url: $("#form_contato").attr("action"),
                                type: "get",
                                // contentType: 'application/json; utf-8',
                                // dataType: 'json',
                                // data: "nome=" + nome + "&email=" + email + "&msg=" + mensagem + "&token=" + token + "",
                                data: {
                                    nome: nome,
                                    email: email,
                                    mensagem: mensagem,
                                    token: token,
                                },

                                // antes de tudo
                                beforeSend: function () {
                                    $("#btn-form").removeClass('btn-success').addClass('btn-warning').text('Aguarde, enviando ...').fadeIn();
                                    $("#contato_carregando").html("<div class='loading'></div>").fadeIn();
                                },

                                // se houver sucesso
                                success: function (response) {
                                    $("#contato_carregando").delay(100).fadeOut();
                                    $("#contato_retorno").html("<div class='valida_a_certo'>" + response + "</div>").delay(2000).fadeIn();
                                    $("#contato_retorno").fadeOut();
                                    $("#btn-form").removeClass('btn-warning').addClass('btn-success').text('Mensagem Enviada!');
                                    $(form)[0].reset();
                                },

                                // se houver erro
                                error: function (response) {
                                    $("#contato_retorno").html("<div class='valida_a_erro'>" + response + "</div>").delay(2000).fadeIn();
                                    $("#contato_retorno").fadeOut();
                                    $(form)[0].reset();
                                },

                                // depois de tudo,
                                complete: function (response) {
                                    $("body").fadeTo(4000, '1');
                                },

                            });

                            return false;
                        });
                    });

                }
            });

        </script>



        <!-- SCRIPTS RODAPE -->
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/js/bootstrap.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/inputmask@3.3.11/dist/jquery.inputmask.bundle.js"></script>
        <!-- SCRIPTS RODAPE -->

    </body>

</html>


ASP:
 

<!--#include file="objetojson.asp"-->

<%
   Response.LCID = 1033 'USA LCID
IF Request.ServerVariables("SERVER_NAME") <> Request.ServerVariables("SERVER_NAME") THEN
   Response.Write "ACESSO RESTRITO!"
ELSE

      G_TOKEN      = Request("token")                                            'google token
      G_KEY_URL    = "https://www.google.com/recaptcha/api/siteverify?secret="   'google url
      G_KEY_SITE   = "suachave"                  'google chave do site
      G_KEY_SECRET = "chavesecreta"                  'google chave secreta

      ' response.write request("nome") & "<br>"
      ' response.write request("email") & "<br>"
      ' response.write request("mensagem") & "<br><br>"
      ' response.write request("token") & "<br><br>"

   IF Request.ServerVariables("REQUEST_METHOD") = "POST" OR Request.ServerVariables("REQUEST_METHOD") = "GET" THEN
      SET objXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
          objXML.Open "GET", ""&G_KEY_URL&G_KEY_SECRET&"&response="&G_TOKEN&"", false
          objXML.Send
      
          SET objXMLjson    = new jsonClass
          SET objXMLjsonOut = objXMLjson.parse(objXML.responseText) 

               IF objXMLjson.value("success") THEN
                  recaptcha = "true"
               ELSE
                  recaptcha = "false"
               END IF

            ' response.write recaptcha & "<br>"
            ' response.write objXML.responseText & "<br>"

         IF recaptcha = "true" THEN
         
                campo_nome      = Request.Form("nome")
                campo_email     = Request.Form("email")
                campo_mensagem  = Replace(Request.Form("mensagem"), Chr(13), "<br>") 

                     cdoSERVER  = "mail.teste.com.br"
                     cdoORIGEM  = "teste@teste.com.br"
                     cdoPASS    = "teste%#@"
                     cdoPORT    = 587
                     cdoTIMEOUT = 120
                     cdoUSING   = 2
                     cdoAUT     = 1
                     cdoSSL     = 0

                     cdoDE      =  campo_nome &" <"& campo_email &">"
                     cdoPARA    = "teste@teste.com.br"
                     cdoASSUNTO = "teste - Contato"
                     cdoTEXT    = "Envio de mensagem usando CDOSYS"

              SET objCDOSYSmail = Server.CreateObject("cdo.message")
              SET objCDOSYScon  = Server.CreateObject("cdo.configuration")

                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport")          = cdoPORT
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing")               = cdoUSING
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")        = cdoAUT
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout")   = cdoTIMEOUT
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl")              = cdoSSL
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver")              = cdoSERVER
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername")            = cdoORIGEM
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword")            = cdoPASS
                  objCDOSYScon.Fields.Update

              SET objCDOSYSmail.Configuration    = objCDOSYScon
                  objCDOSYSmail.From             = cdoORIGEM
                  objCDOSYSmail.To               = cdoPARA
                  objCDOSYSmail.Subject          = cdoASSUNTO
                  objCDOSYSmail.TextBody         = cdoTEXT

                     ON ERROR RESUME NEXT
                        IF NOT objCDOSYSmail.Send = "" THEN 
                           Response.Write "Mensagem enviada com sucesso!"
                        ELSE
                           IF NOT ERR.NUMBER = "0" THEN
                                 Response.Write "Não foi possível enviar a mensagem!"
                                 Response.Write "OCORREU UM ERRO: " & Err.Number & " | " & Err.Description
                              ERR.Clear()
                           END IF
                        END IF
                     ON ERROR GOTO 0

              SET objCDOSYSmail = Nothing 
              SET objCDOSYScon  = Nothing

         ELSE
            Response.Write "<b>Google Captcha - Erro!<b>"
         END IF

      SET objXML = Nothing
   END IF

END IF
%>

uma contribuição...
serve de exemplo e implementação...
correções, melhorias, fico satisfeito....

abraços....

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 30/04/2020 at 18:36, marcelocardoso disse:

Após 4 dias de quebra-cabeça, consegui finalizar o script....
Quem tá sofrendo, e precisar, segue exemplo completo em ASP, mas podendo ser adaptável para PHP ou qualquer outra linguagem.

HTML:
 


<!DOCTYPE html>
<html lang="pt_BR">

    <head>
        <meta charset="utf-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <meta content="ie=edge" http-equiv="X-UA-Compatible">
        <title>Google Recaptcha - v3</title>

        <!-- STYLES CSS -->
        <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/css/bootstrap.min.css">
        <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/inputmask@3.3.11/css/inputmask.min.css">
        <!-- STYLES CSS -->

        <!-- SCRIPTS JS -->
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-form@4.2.2/dist/jquery.form.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/jquery.validate.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/localization/messages_pt_BR.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/additional-methods.min.js"></script>
        <!-- SCRIPTS JS -->

        <!-- SCRIPTS RECAPTCHA - SITE KEY -->
        <script src="https://www.google.com/recaptcha/api.js?render=6LesKRKk19yob6G8hx3LEoYXybIC"></script>
        <!-- SCRIPTS RECAPTCHA - SITE KEY -->

        <style type="text/css">
            *:focus {
                outline: none !important;
            }

            html,
            body {
                height: 100%;
                width: 100%;
            }

            body {
                color: darkgrey;
                margin: 60px 0px;
                -webkit-font-smoothing: antialiased;
                -moz-osx-font-smoothing: grayscale;
            }

            /* google captcha - hidden na tela */
            .grecaptcha-badge {
                /* display: none !important; */
                visibility: hidden !important;
            }

            /* google captcha - exibe somente na página contato */
            #frm-contato .grecaptcha-badge {
                visibility: visible !important;
            }

            .grecaptcha-badge {
                width: 0 !important;
            }

            .grecaptcha-badge.show {
                width: 256px !important;
            }

            .grecaptcha-badge {
                display: flex;
                justify-content: flex-end;
                overflow: hidden;
                width: 70px;
                height: 60px;
                margin: 0 auto;
                box-shadow: 0 0 4px #ddd;
                transition: linear 100ms width;
            }

            .grecaptcha-badge:hover {
                width: 256px;
            }

            .grecaptcha-badge-small {
                font-size: 9px;
                color: darkgray;
                text-align: center;
            }

            .valid-class {
                color: #006400;
                padding-left: 12px;
                padding-top: 3px;
                font-size: 15px;
                display: block;
            }

            .error-class {
                color: #e33d00;
                padding-left: 12px;
                padding-top: 3px;
                font-size: 15px;
                display: block;
            }

            .loading {
                position: fixed;
                left: 0px;
                top: 0px;
                margin: 0px;
                width: 100%;
                height: 100%;
                display: block;
                z-index: 999999;
                opacity: 0.92;
                -moz-opacity: 0.92;
                filter: alpha(opacity=98);
                background-color: #00224b;
                background-image: url("img/loading.gif");
                background-repeat: no-repeat;
                background-position: 50% 50%;
                text-align: center;
                overflow: hidden;
                font-weight: bold;
                font-size: 25px;
                color: white;
                padding-top: 25%;
            }

        </style>
    </head>

    <body>


        <!-- code | formulario -->
        <section id="frm-contato" class="container-fluid">
            <h1 class="text-center">RECAPTCHA</h1>
            <h4 class="text-center">GOOGLE v3</h4>
            <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12">
                <form id="form_contato" method="post" action="inc/recaptcha.asp">
                    <div class="form-group">
                        <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 mb-2">
                            <label class="control-label" for="campo_nome">Nome</label>
                            <input type="text" id="campo_nome" name="campo_nome" class="form-control" autocomplete="name" placeholder="Digite seu nome">
                        </div>
                        <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 mb-2">
                            <label class="control-label" for="campo_email">Email</label>
                            <input type="text" id="campo_email" name="campo_email" class="form-control" autocomplete="email" placeholder="Digite seu e-mail">
                        </div>
                        <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 mb-2">
                            <label class="control-label" for="campo_mensagem">Mensagem</label>
                            <textarea type="text" id="campo_mensagem" name="campo_mensagem" class="form-control" placeholder="Descreva sua mensagem"></textarea>
                        </div>
                        <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 mt-4">
                            <div id="contato_retorno"></div>
                            <button id="btn-form" type="submit" class="btn btn-block btn-md btn-success">ENVIAR</button>
                        </div>
                    </div>

                    <input type="hidden" id="g-recaptcha-response">
                    <input type="hidden" id="action" value="validate_captcha">

                    <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 grecaptcha-badge-small p-4">
                        Este site é protegido pelo reCAPTCHA e pelo Google
                        <a href="https://policies.google.com/privacy">Política de Privacidade</a> e
                        <a href="https://policies.google.com/terms">Termos do serviço</a>.
                    </div>

                </form>
            </div>
            <div id="contato_carregando"></div>
        </section>
        <!-- code | formulario -->



        <!-- GOOGLE reCAPTCHA -->
        <script type="text/javascript">
            "use strict";

            //formulario de validacao
            $("#form_contato").validate({
                errorClass: "error-class",
                validClass: "valid-class",

                onkeyup: function (element) {
                    this.element(element);
                },
                onfocusout: function (element) {
                    this.element(element);
                },

                rules: {
                    campo_nome: {
                        required: true,
                        minlength: 5,
                        maxlength: 50
                    },
                    campo_email: {
                        required: true,
                        minlength: 5,
                        email: true
                    },
                    campo_mensagem: {
                        required: true,
                        minlength: 5,
                        maxlength: 5000
                    }
                },

                submitHandler: function (form) {

                    // A) resgatar variaveis (SerializeArray)
                    // var formData = $("#frm_form_contato").serialize();
                    // var formData = $("#frm_form_contato").serializeArray();

                    // B) resgatar variaveis (FormData)
                    // var formData = {
                    // 'campo_nome': $("#campo_nome").val(),
                    // 'campo_email': $("#campo_email").val(),
                    // 'campo_mensagem': $("#campo_mensagem").val(),
                    // 'campo_token': $("#g-recaptcha-response").val(),
                    // };


                    //CAPTCHA + FORM POR POST
                    // grecaptcha.ready(function () {
                    //     grecaptcha.execute('6LeWQKRKk19yob6G8hx3LEoYXybIC', {
                    //         action: 'validate_captcha'
                    //     }).then(function (token) {
                    //         document.getElementById('g-recaptcha-response').value = token;

                    //         $.post($("#form_contato").attr("action"), {
                    //             campo_nome: $("#campo_nome").val(),
                    //             campo_email: $("#campo_email").val(),
                    //             campo_mensagem: $("#campo_mensagem").val(),
                    //             campo_token: $("#g-recaptcha-response").val(),
                    //         }).then(function (response) {
                    //             if (response = "success") {
                    //                 console.log('captcha ok');
                    //                 alert(token);
                    //             } else {
                    //                 console.log('recaptcha inválido! você é um ROBO ou SPAMMER!!!');
                    //             }
                    //         });

                    //     });
                    // });



                    var nome = $("#campo_nome").val();
                    var email = $("#campo_email").val();
                    var mensagem = $("#campo_mensagem").val();
                    var token = $("#g-recaptcha-response").val();


                    //CAPTCHA + FORM POR AJAX
                    grecaptcha.ready(function () {
                        grecaptcha.execute('6LesKk19yob6G8hx3LEoYXybIC', {
                            action: 'validate_captcha'
                        }).then(function (token) {
                            document.getElementById('g-recaptcha-response').value = token;

                            $.ajax({
                                url: $("#form_contato").attr("action"),
                                type: "get",
                                // contentType: 'application/json; utf-8',
                                // dataType: 'json',
                                // data: "nome=" + nome + "&email=" + email + "&msg=" + mensagem + "&token=" + token + "",
                                data: {
                                    nome: nome,
                                    email: email,
                                    mensagem: mensagem,
                                    token: token,
                                },

                                // antes de tudo
                                beforeSend: function () {
                                    $("#btn-form").removeClass('btn-success').addClass('btn-warning').text('Aguarde, enviando ...').fadeIn();
                                    $("#contato_carregando").html("<div class='loading'></div>").fadeIn();
                                },

                                // se houver sucesso
                                success: function (response) {
                                    $("#contato_carregando").delay(100).fadeOut();
                                    $("#contato_retorno").html("<div class='valida_a_certo'>" + response + "</div>").delay(2000).fadeIn();
                                    $("#contato_retorno").fadeOut();
                                    $("#btn-form").removeClass('btn-warning').addClass('btn-success').text('Mensagem Enviada!');
                                    $(form)[0].reset();
                                },

                                // se houver erro
                                error: function (response) {
                                    $("#contato_retorno").html("<div class='valida_a_erro'>" + response + "</div>").delay(2000).fadeIn();
                                    $("#contato_retorno").fadeOut();
                                    $(form)[0].reset();
                                },

                                // depois de tudo,
                                complete: function (response) {
                                    $("body").fadeTo(4000, '1');
                                },

                            });

                            return false;
                        });
                    });

                }
            });

        </script>



        <!-- SCRIPTS RODAPE -->
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/js/bootstrap.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/inputmask@3.3.11/dist/jquery.inputmask.bundle.js"></script>
        <!-- SCRIPTS RODAPE -->

    </body>

</html>


ASP:
 


<!--#include file="objetojson.asp"-->

<%
   Response.LCID = 1033 'USA LCID
IF Request.ServerVariables("SERVER_NAME") <> Request.ServerVariables("SERVER_NAME") THEN
   Response.Write "ACESSO RESTRITO!"
ELSE

      G_TOKEN      = Request("token")                                            'google token
      G_KEY_URL    = "https://www.google.com/recaptcha/api/siteverify?secret="   'google url
      G_KEY_SITE   = "suachave"                  'google chave do site
      G_KEY_SECRET = "chavesecreta"                  'google chave secreta

      ' response.write request("nome") & "<br>"
      ' response.write request("email") & "<br>"
      ' response.write request("mensagem") & "<br><br>"
      ' response.write request("token") & "<br><br>"

   IF Request.ServerVariables("REQUEST_METHOD") = "POST" OR Request.ServerVariables("REQUEST_METHOD") = "GET" THEN
      SET objXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
          objXML.Open "GET", ""&G_KEY_URL&G_KEY_SECRET&"&response="&G_TOKEN&"", false
          objXML.Send
      
          SET objXMLjson    = new jsonClass
          SET objXMLjsonOut = objXMLjson.parse(objXML.responseText) 

               IF objXMLjson.value("success") THEN
                  recaptcha = "true"
               ELSE
                  recaptcha = "false"
               END IF

            ' response.write recaptcha & "<br>"
            ' response.write objXML.responseText & "<br>"

         IF recaptcha = "true" THEN
         
                campo_nome      = Request.Form("nome")
                campo_email     = Request.Form("email")
                campo_mensagem  = Replace(Request.Form("mensagem"), Chr(13), "<br>") 

                     cdoSERVER  = "mail.teste.com.br"
                     cdoORIGEM  = "teste@teste.com.br"
                     cdoPASS    = "teste%#@"
                     cdoPORT    = 587
                     cdoTIMEOUT = 120
                     cdoUSING   = 2
                     cdoAUT     = 1
                     cdoSSL     = 0

                     cdoDE      =  campo_nome &" <"& campo_email &">"
                     cdoPARA    = "teste@teste.com.br"
                     cdoASSUNTO = "teste - Contato"
                     cdoTEXT    = "Envio de mensagem usando CDOSYS"

              SET objCDOSYSmail = Server.CreateObject("cdo.message")
              SET objCDOSYScon  = Server.CreateObject("cdo.configuration")

                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport")          = cdoPORT
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing")               = cdoUSING
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")        = cdoAUT
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout")   = cdoTIMEOUT
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl")              = cdoSSL
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver")              = cdoSERVER
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername")            = cdoORIGEM
                  objCDOSYScon.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword")            = cdoPASS
                  objCDOSYScon.Fields.Update

              SET objCDOSYSmail.Configuration    = objCDOSYScon
                  objCDOSYSmail.From             = cdoORIGEM
                  objCDOSYSmail.To               = cdoPARA
                  objCDOSYSmail.Subject          = cdoASSUNTO
                  objCDOSYSmail.TextBody         = cdoTEXT

                     ON ERROR RESUME NEXT
                        IF NOT objCDOSYSmail.Send = "" THEN 
                           Response.Write "Mensagem enviada com sucesso!"
                        ELSE
                           IF NOT ERR.NUMBER = "0" THEN
                                 Response.Write "Não foi possível enviar a mensagem!"
                                 Response.Write "OCORREU UM ERRO: " & Err.Number & " | " & Err.Description
                              ERR.Clear()
                           END IF
                        END IF
                     ON ERROR GOTO 0

              SET objCDOSYSmail = Nothing 
              SET objCDOSYScon  = Nothing

         ELSE
            Response.Write "<b>Google Captcha - Erro!<b>"
         END IF

      SET objXML = Nothing
   END IF

END IF
%>

uma contribuição...
serve de exemplo e implementação...
correções, melhorias, fico satisfeito....

abraços....

 

 

Existe algum requisito? alguma lib (css, javascript) ou algo do gênero?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não utilizei no wordpress, mas acredito que consiga sim....
o código acima, é feito em ASP, para backend e html puro para qualquer linguagem além de javascript, então, não utilizo wordpress, mas com certeza, consegue ....

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por luiz monteiro
      Olá.
      Estou atualizando meu conhecimento com Front-End e me deparei com o seguinte problema.
      Criei um sistema para fazer o upload de imagens e alguns campos text.
      Algo bem simples para depois começar a estudar javascript para mostrar a miniatura....
      Mas quando saio do navegador Chrome ou da aba por mais de 3 minutos, ao retornar o navegador as vezes atualiza ou nem chega atualizar mas limpa os campos.
      Estou usando um Smart Motorola com Android, mas um amigo testou no iPhone e acontece a mesma coisa.
      Gostaria de saber se há como usar javascript para evitar isso?
      Agradeço desde já.

      <!DOCTYPE html>
      <html>
      <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <title>Uploader</title>
      </head>
      <body>
          <form action="?" method="post" enctype="multipart/form-data">
              <br><br>
              <div>selecione a imagem 1</div>
              <input type="file" name="foto1" accept="image/*">
              <br><br>
              <input type="text" name="nome_imagem1">
              
              <br><br>
              <input type="file" name="foto2" accept="image/*">
              <br><br>
              <input type="text" name="nome_imagem2">
              
              <br><br>

              <input type="file" name="foto3" accept="image/*">
              <br><br>
              <input type="text" name="nome_imagem3">
              
              <br><br>
              <input type="submit" value="Enviar">
              <br><br>
          </form>
      <?php
      if ($_SERVER['REQUEST_METHOD'] == 'POST')
      {
          vardump ($_FILES);
      }
      ?>
      </body>
      </html>
       
       
       
    • Por daemon
      Colocando no navegador a url "site:news.google.com", aparece centenas de resultados.
       
      Exemplo:
       
      https://news.google.com/articles/CBMiWGh0dHA6Ly93d3cuYWljYS5vcmcvMzU2NzUtbWVuc2FqZS1kZWwtcGFwYS1sb3MtY2F0b2xpY29zLWNoaW5vcy11bmEtbnVldmEtcGFnaW5hLWRlLmh0bWzSAQA
       
      Como o google consegue colocar este redirecionamento ?
       
      Por padrão o site deveria ir automaticamente para o site destino não sei como fazem para colocar este redirecionamento.
    • Por Jack Oliveira
      Ola estou fazendo um instalador de banco de dados 
       
      em parte funciona  
       
      Mas quando uso o
      <<<HTML
       
      HTML;
       
      Ele fica com estas informações no top
       
      7.4 ao 8.38.0.28512MOnOnOnOffOffOnOffOffOnOnOnOnOnprogress-bar-success
       
      <?php $MeuHtml = <<<HTML <!DOCTYPE html> <html> <head><meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Instalação {$autor}</title> <link rel="icon" href="{$urlApi}api/allinstall/assets/icone.png?v={$versao}" sizes="32x32"> <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> <link rel="stylesheet" href="{$urlApi}api/allinstall/assets/css/app.css?v={$versao}"> <style type="text/css"> .license { background-color: #FFF; height: 400px; width: 100%; margin: 10px; } .form-control{ margin-bottom: 5px; } #primary{background: #FF6403} .paper-card{background: #272c33} .card{background: none;} .sw-theme-circles>ul.step-anchor:before{background-color: #30363d} .sw-theme-circles>ul.step-anchor>li>a{border: 3px solid #30363d} .sw-theme-circles>ul.step-anchor>li>a{background: #f5f5f5; min-width: 50px; height: 50px; text-align: center; -webkit-box-shadow: inset 0 0 0 3px #fff!important; box-shadow: inset 0 0 0 3px #fff!important; text-decoration: none; outline-style: none; z-index: 99; color: #999; background: #fff; line-height: 2; font-weight: bold;} .sw-theme-circles>ul.step-anchor>li{margin-left: 15%;} .card-header{border-bottom: 0} .table-striped tbody tr:nth-of-type(odd){background-color: #30363d;} .table-bordered{border: 1px solid #30363d;} .table-bordered td, .table-bordered th { border: 1px solid #30363d; } </style> </head> <body class="light loaded"> <div id="app"> <main> <div id="primary" class="p-t-b-100 height-full"> <div class="container"> <div class="row"> <div class="col-lg-8 mx-md-auto paper-card"> <div class="text-center"> <img class="img-responsive" src="{$urlApi}api/allinstall/assets/{$imagem}?v={$versao}"> <p><strong><H3>Instalação {$projeto} | V: {$versao}</H3></strong></p> </div> HTML; if (!isset($_GET['step']) || $_GET['step'] == '1') { $MeuHtml .= <<<HTML <div class="card no-b"> <div class="card-header pb-0"> <div class="stepper sw-main sw-theme-circles" id="smartwizard" data-options='{ "theme":"sw-theme-circles", "transitionEffect":"fade" }'> <ul class="nav step-anchor"> <li><a href="#step-1y">1</a></li> <li><a href="#step-2y">2</a></li> <li><a href="#step-3y">3</a></li> <li><a href="#step-4y">4</a></li> </ul> </div> </div> <div class="card-body"> <h6><b>Configurações do Servidor</b></h6><br> <table class="table table-condensed table-bordered table-striped"> <tr> <th>Função / Extensão</th> <th>Config. Necessária</th> <th>Config. Atual</th> <th width="50px">Status</th> </tr> <tr> <td>Versão do PHP</td> <td> HTML; echo $php7. ' ao '.$php8; $MeuHtml .= <<<HTML </td> <td> HTML; echo phpversion(); $MeuHtml .= <<<HTML </td> <td> HTML; if(phpversion() >= $php7 && phpversion() <= $php8) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> HTML; $MeuHtml .= <<<HTML <tr> <td>Memória do PHP</td> <td>128MB</td> <td> HTML; echo $mem = ini_get('memory_limit'); $MeuHtml .= <<<HTML </td> <td> HTML; if($mem >= 128) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>cURL</td> <td>On</td> <td> HTML; if(function_exists('curl_init')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(function_exists('curl_init')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>Allow URL fopen</td> <td>On</td> <td> HTML; if(ini_get('allow_url_fopen')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(ini_get('allow_url_fopen')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>File Get Contents</td> <td>On</td> <td> HTML; if(function_exists('file_get_contents')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(function_exists('file_get_contents')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>Sessão Auto Start</td> <td>Off</td> <td> HTML; if(ini_get('session_auto_start')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(!ini_get('session_auto_start')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>Safe Mode</td> <td>Off</td> <td> HTML; if(ini_get('safe_mode')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(!ini_get('safe_mode')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>Short Open Tags</td> <td>On</td> <td> HTML; if(ini_get('short_open_tag')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(ini_get('short_open_tag')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>Magic Quotes GPC</td> <td>Off</td> <td> HTML; if(ini_get('magic_quotes_gpc')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(!ini_get('magic_quotes_gpc')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>Register Globals</td> <td>Off</td> <td> HTML; if(ini_get('register_globals')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(!ini_get('register_globals')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>PHPMail</td> <td>On</td> <td> HTML; if(function_exists('mail')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(function_exists('mail')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { $i = $i + 1; echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>MySQLi</td> <td>On</td> <td> HTML; if(extension_loaded('mysqli')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(extension_loaded('mysqli')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>ZIP</td> <td>On</td> <td> HTML; if(extension_loaded('zip')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(extension_loaded('zip')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>MBString</td> <td>On</td> <td> HTML; if(extension_loaded('mbstring')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(extension_loaded('mbstring')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> <tr> <td>XML</td> <td>On</td> <td> HTML; if(extension_loaded('libxml')) { echo 'On'; } else { echo 'Off'; } $MeuHtml .= <<<HTML </td> <td> HTML; if(extension_loaded('libxml')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> </table> <hr> <h6><b>Diretórios e Permissões de Arquivos</b></h6><br> <table class="table table-condensed table-bordered table-striped"> <tr> <th>Diretório</th> <th style="width: 40px">Status</th> </tr> <tr> <td>database</td> <td> HTML; if(is_writable('database')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } $MeuHtml .= <<<HTML </td> </tr> </table> <hr> <h6><b>Pontuação / Compatibilidade</b></h6><br> <div class="progress"> <div class="progress-bar progress-bar-striped progress-bar-animated HTML; echo ProgressBar(substr(VerificaPontuacao($i,'16'),0,4)); $PontPorce = VerificaPontuacao($i,'16'); $pont100 = substr(VerificaPontuacao($i,'16'),0,4); $MeuHtml .= <<<HTML " role="progressbar" aria-valuemax="100" style="width: {$PontPorce}%;"> <strong>{$pont100} / 100</strong> </div> </div> <center> <br> <button class="btn btn-primary" onclick="document.location.href='{$URL}?step=1';">Verificar</button> <button class="btn btn-primary" onclick="document.location.href='{$URL}?step=2';">Próximo</button> </center> </div> </div> HTML; } elseif (isset($_GET['step']) && $_GET['step'] == '2') { $MeuHtml .= <<<HTML <div class="card no-b"> <div class="card-header pb-0"> <div class="stepper sw-main sw-theme-circles" id="smartwizard" data-options='{ "theme":"sw-theme-circles", "transitionEffect":"fade" }'> <ul class="nav step-anchor"> <li><a href="#step-1y">1</a></li> <li class="active"><a href="#step-2y">2</a></li> <li><a href="#step-3y">3</a></li> <li><a href="#step-4y">4</a></li> </ul> </div> </div> <div class="card-body "> <iframe src="{$urlApi}api/allinstall/termos.php{$Frame}" class="license" frameborder="0" scrolling="auto"></iframe> <form action="setup.php"> <input type="hidden" name="step" value="3"> <label><input type="checkbox" required=""> Sim, eu aceito</label> <center> <br> <a href="javascript:history.back()"><button class="btn btn-primary">Voltar</button></a> <button class="btn btn-primary" type="submit">Próximo</button> </center> </form> </div> </div> HTML; } elseif (isset($_GET['step']) && $_GET['step'] == '3') { $MeuHtml .= <<<HTML <div class="card no-b"> <div class="card-header pb-0"> <div class="stepper sw-main sw-theme-circles" id="smartwizard" data-options='{ "theme":"sw-theme-circles", "transitionEffect":"fade" }'> <ul class="nav step-anchor"> <li><a href="#step-1y">1</a></li> <li class="active"><a href="#step-2y">2</a></li> <li class="active"><a href="#step-3y">3</a></li> <li><a href="#step-4y">4</a></li> </ul> </div> </div> <div class="card-body"> <form method="post" action="?InstallDB"> <h6><b>1. MySQL - Configuração do Banco de Dados</b></h6><hr> <div class="form-group row"> <label class="col-sm-3 control-label">MySQL Host:</label> <div class="col-sm-9"> <input class="form-control" name="dbhost" value="localhost" required> </div> </div> <div class="form-group row"> <label class="col-sm-3 control-label">Usuário MySQL:</label> <div class="col-sm-9"> <input class="form-control" name="dbuser" required> </div> </div> <div class="form-group row"> <label class="col-sm-3 control-label">Senha MySQL:</label> <div class="col-sm-9"> <input class="form-control" name="dbpass"> </div> </div> <div class="form-group row"> <label class="col-sm-3 control-label">Nome do Banco MySQL:</label> <div class="col-sm-9"> <input class="form-control" name="dbname" required> </div> </div> <h6><b>2. Configuração Comum</b></h6><hr> <div class="form-group row"> <label class="col-sm-3 control-label">Nome do Site:</label> <div class="col-sm-9"> <input class="form-control" name="nomesite" required> </div> </div> <div class="form-group row"> <label class="col-sm-3 control-label">URL do Site:</label> <div class="col-sm-9"> <input class="form-control" name="urlsite" value="{$urlsite}" required> </div> </div> <div class="form-group row"> <label class="col-sm-3 control-label">URL de Instalação:</label> <div class="col-sm-9"> <input class="form-control" name="siteurl" value="{$siteurl}" required> </div> </div> <div class="form-group row"> <label class="col-sm-3 control-label">Extensão:</label> <div class="col-sm-9"> <select class="form-control" name="extensao" required> <option value=""> Selecionar Extensão </option> <option value="1"> MYSQLI </option> <option value="2"> PDO </option> </select> </div> </div> <div class="form-group row"> <label class="col-sm-3 control-label">Define TimeZone:</label> <div class="col-sm-9"> <select class="form-control" name="timezone" id="timezone"> HTML; foreach ($timezones as $timezone) : echo '<option value="'.$timezone.'" '.$timezone === $current_timezone ? 'selected' : ''.'> '.$timezone.' </option>'; endforeach; $MeuHtml .= <<<HTML </select> </div> </div> <div class="form-group row"> <label class="col-sm-3 control-label">E-mail:</label> <div class="col-sm-9"> <input class="form-control" name="email" required> <em>Mesmo e-mail cadastrado em nosso Site.</em> </div> </div> <h6><b>3. Configuração do Administrador</b></h6><hr> <div class="form-group row"> <label class="col-sm-3 control-label">Nome do Usuário:</label> <div class="col-sm-9"> <input class="form-control" name="usuario" required> </div> </div> <div class="form-group row"> <label class="col-sm-3 control-label">Login:</label> <div class="col-sm-9"> <input class="form-control" name="login" required> </div> </div> <div class="form-group row"> <label class="col-sm-3 control-label">Senha:</label> <div class="col-sm-9"> <input class="form-control" type="password" name="senha" required> </div> </div> <div class="form-group row"> <label class="col-sm-3 control-label">Senha[confimação]:</label> <div class="col-sm-9"> <input class="form-control" type="password" name="senhaconfirm" required> </div> </div> <center> <a class="btn btn-primary" href="javascript:history.back()">Voltar</a> <button class="btn btn-primary">Próximo</button> </center> </form> </div> </div> HTML; } elseif (isset($_GET['step']) && $_GET['step'] == '4') { $MeuHtml .= <<<HTML <div class="card no-b"> <div class="card-header pb-0"> <div class="stepper sw-main sw-theme-circles" id="smartwizard" data-options='{ "theme":"sw-theme-circles", "transitionEffect":"fade" }'> <ul class="nav step-anchor"> <li><a href="#step-1y">1</a></li> <li class="active"><a href="#step-2y">2</a></li> <li class="active"><a href="#step-3y">3</a></li> <li class="active"><a href="#step-4y">4</a></li> </ul> </div> </div> <div class="card-body"> <div> <h4><b>Instalação realizada com sucesso!</b></h4> <p>Agora você poderá utilizar o seu {$projeto}, em caso de dúvidas entre em contato com o suporte: <b>{$emailautor}</b></p> </div> <center> <form action="{$URL}?step=4" method="post"> <button type="submit" name="realizar_login" class="btn btn-primary">Realizar Login</button> </form> </center> </div> </div> HTML; } if (isset($_POST['realizar_login'])) { // Deletar os arquivos @unlink('setup.php'); @unlink($URL); @unlink('termos.php'); @unlink('database/BD.sql'); @unlink('controller/setup.php'); // Redirecionar para a página de login ou outra página desejada header('Location: login.php?finish'); exit; } $MeuHtml .= <<<HTML <div class="box-footer"> <center> Todos os Direitos Reservados {$autor} </center> </div> </div> </div> </div> </div> </main> </div> <script src="{$urlApi}api/allinstall/assets/js/app.js"></script> </body> </html> HTML; echo $MeuHtml;  
    • Por Jack Oliveira
      Ola pessoal, boa noite a todos
       
      Bom é o seguinte tenho um codigo html onde selecione um modelo de site para poder criar na base selecionada, ele criar ate então, mas ele esta pegando somente o index.html
      Mas quero que ele salva junto ao novo projeto o css, js, img, images, assets e fonts, quando faço os ajuste para que pega tudo isso ele me da erro ao salvar 
      Vou mostra parte do html onde faz a seleção dos modelos
       
      <!-- new page modal--> <div class="modal fade" id="new-page-modal" tabindex="-1" role="dialog"> <div class="modal-dialog" role="document"> <form id="newPageForm" method="POST" action="save.php"> <div class="modal-content"> <div class="modal-header"> <h6 class="modal-title text-primary fw-normal"><i class="la la-lg la-file"></i> Nova página</h6> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"> </button> </div> <div class="modal-body text"> <div class="mb-3 row" data-key="type"> <label class="col-sm-3 col-form-label"> Modelo <abbr title="O conteúdo deste modelo será usado como ponto de partida para o novo modelo"> <i class="la la-lg la-question-circle text-primary"></i> </abbr> </label> <div class="col-sm-9 input"> <div> <select class="form-select" name="startTemplateUrl"> <option value="themes/modelo-branco/branco-template.html">Modelo em branco</option> <option value="themes/modelo1/index.html">Modelo 1 de L2</option> <option value="themes/modelo2/index.html">Modelo 3 de L2</option> <option value="themes/modelo3/index.html">Modelo 3 de L2 </option> </select> </div> </div> </div> <div class="mb-3 row" data-key="href"> <label class="col-sm-3 col-form-label">Nome da página</label> <div class="col-sm-9 input"> <div> <input name="title" type="text" value="Minha página" class="form-control" placeholder="Minha página" required> </div> </div> </div> <div class="mb-3 row" data-key="href"> <label class="col-sm-3 col-form-label">Nome do arquivo</label> <div class="col-sm-9 input"> <div> <input name="file" type="text" value="my-page.html" class="form-control" placeholder="index.html" required> </div> </div> </div> <div class="mb-3 row" data-key="href"> <label class="col-sm-3 col-form-label">Salvar na pasta</label> <div class="col-sm-9 input"> <div> <input name="folder" type="text" value="my-pages" class="form-control" placeholder="/" required> </div> </div> </div> </div> <div class="modal-footer"> <button class="btn btn-secondary btn-lg" type="reset" data-bs-dismiss="modal"><i class="la la-times"></i> Cancelar</button> <button class="btn btn-primary btn-lg" type="submit"><i class="la la-check"></i> Criar página</button> </div> </div> </form> </div> </div> A ideia aqui é salvar tudo que tiver depois do themes/demo1/
      quando ele salva so salva 
      my-pasta/index.html
      e quando for salva ele salva dentro de um pasta Projetos/MeuSite1
      Projetos/MeuSite2  e assim vai
      Este é o save.php
       
      <?php define('MAX_FILE_LIMIT', 1024 * 1024 * 2);//Tamanho máximo de arquivo HTML de 2 megabytes define('ALLOW_PHP', false);//verifique se o html salvo contém tag php e não salve se não for permitido define('ALLOWED_OEMBED_DOMAINS', [ 'https://www.youtube.com/', 'https://www.vimeo.com/', 'https://www.twitter.com/' ]);//carregar URLs apenas de sites permitidos para oembed function sanitizeFileName($file, $allowedExtension = 'html') { $basename = basename($file); $disallow = ['.htaccess', 'passwd']; if (in_array($basename, $disallow)) { showError('Nome de arquivo não permitido!'); return ''; } //sanitize, remova o ponto duplo .. e remova os parâmetros get, se houver $file = preg_replace('@\?.*$@' , '', preg_replace('@\.{2,}@' , '', preg_replace('@[^\/\\a-zA-Z0-9\-\._]@', '', $file))); if ($file) { $file = __DIR__ . DIRECTORY_SEPARATOR . $file; } else { return ''; } //permitir apenas extensão .html if ($allowedExtension) { $file = preg_replace('/\.[^.]+$/', '', $file) . ".$allowedExtension"; } return $file; } function showError($error) { header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); die($error); } function validOembedUrl($url) { foreach (ALLOWED_OEMBED_DOMAINS as $domain) { if (strpos($url, $domain) === 0) { return true; } } return false; } $html = ''; $file = ''; $action = ''; if (isset($_POST['startTemplateUrl']) && !empty($_POST['startTemplateUrl'])) { $startTemplateUrl = sanitizeFileName($_POST['startTemplateUrl']); $html = ''; if ($startTemplateUrl) { $html = file_get_contents($startTemplateUrl); } } else if (isset($_POST['html'])){ $html = substr($_POST['html'], 0, MAX_FILE_LIMIT); if (!ALLOW_PHP) { //if (strpos($html, '<?php') !== false) { if (preg_match('@<\?php|<\? |<\?=|<\s*script\s*language\s*=\s*"\s*php\s*"\s*>@', $html)) { showError('PHP não permitido!'); } } } if (isset($_POST['file'])) { $file = sanitizeFileName($_POST['file']); } if (isset($_GET['action'])) { $action = htmlspecialchars(strip_tags($_GET['action'])); } if ($action) { //ações do gerenciador de arquivos, excluir e renomear switch ($action) { case 'rename': $newfile = sanitizeFileName($_POST['newfile']); if ($file && $newfile) { if (rename($file, $newfile)) { echo "Arquivo '$file' renomeado para '$newfile'"; } else { showError("Erro ao renomear arquivo '$file' renomeado para '$newfile'"); } } break; case 'delete': if ($file) { if (unlink($file)) { echo "Arquivo '$file' excluído"; } else { showError("Erro ao excluir arquivo '$file'"); } } break; case 'saveReusable': //bloco ou seção $type = $_POST['type'] ?? false; $name = $_POST['name'] ?? false; $html = $_POST['html'] ?? false; if ($type && $name && $html) { $file = sanitizeFileName("$type/$name"); if ($file) { $dir = dirname($file); if (!is_dir($dir)) { echo "$dir pasta não existe\n"; if (mkdir($dir, 0777, true)) { echo "$dir pasta foi criada\n"; } else { showError("Erro ao criar pasta '$dir'\n"); } } if (file_put_contents($file, $html)) { echo "Arquivo salvo '$file'"; } else { showError("Erro ao salvar arquivo '$file'\nAs possíveis causas são falta de permissão de gravação ou caminho de arquivo incorreto!"); } } else { showError('Nome de arquivo inválido!'); } } else { showError("Faltam dados de elementos reutilizáveis!\n"); } break; case 'oembedProxy': $url = $_GET['url'] ?? ''; if (validOembedUrl($url)) { header('Content-Type: application/json'); echo file_get_contents($url); } else { showError('URL inválida!'); } break; default: showError("Ação inválida '$action'!"); } } else { //salvar pagina if ($html) { if ($file) { $dir = dirname($file); if (!is_dir($dir)) { echo "$dir pasta não existe\n"; if (mkdir($dir, 0777, true)) { echo "$dir pasta foi criada\n"; } else { showError("Erro ao criar pasta '$dir'\n"); } } if (file_put_contents($file, $html)) { echo "Arquivo salvo '$file'"; } else { showError("Erro ao salvar arquivo '$file'\nAs possíveis causas são falta de permissão de gravação ou caminho de arquivo incorreto!"); } } else { showError('O nome do arquivo está vazio!'); } } else { showError('O conteúdo HTML está vazio!'); } } Espero que possam entender o que preciso aqui....  fico no aguardo!  quando eu tento mudar a forma de salva no php, ele me da erro de que não foi salvo, e volta ao orginal como esta ai acima ele salva, talvez eu esteja escapando alguma coisa que não estou vendo.... 
    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.