Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   активация кнопки при проверке google капча (https://javascript.ru/forum/misc/72388-aktivaciya-knopki-pri-proverke-google-kapcha.html)

cinema4d 25.01.2018 17:04

активация кнопки при проверке google капча
 
Подскажите, как активировать строку <input type="submit" value="<?php echo $button_continue; ?>" class="button" /> кнопку продолжить, если данные с капчи google = true ? не перезагружая страницу

j0hnik 25.01.2018 18:58

setInterval(function(){
	if (google = true) document.querySelector('.button').click()
},1000);

cinema4d 25.01.2018 19:48

Цитата:

Сообщение от j0hnik (Сообщение 476216)
setInterval(function(){
	if (google = true) document.querySelector('.button').click()
},1000);

огромное спасибо, но если можно еще вопрос? как перехватить ответ гугля? то есть как сработает что нажата капча и возвращает значение

из обработчика php? я так понимаю без перезагрузки страницы


я в php еще понимаю а в аяксах явах и джейсон дуб

j0hnik 25.01.2018 21:45

гугл капчей не пользовался, нужно читать документацию

cinema4d 26.01.2018 15:51

.button - это класс кнопки?

Nexus 26.01.2018 15:59

cinema4d, смотрите раздел "g-recaptcha tag attributes and grecaptcha.render parameters".
Вам нужен атрибут "data-callback".
https://developers.google.com/recapt...splay#js_param

cinema4d 26.01.2018 17:29

Цитата:

Сообщение от Nexus (Сообщение 476299)
cinema4d, смотрите раздел "g-recaptcha tag attributes and grecaptcha.render parameters".
Вам нужен атрибут "data-callback".
https://developers.google.com/recapt...splay#js_param

спс я почитаю, не ожидал увидеть комментарий)

я тут слепил костыль из того что было если не сложно посмотрите, при проверке и нажатии хочу активировать вторую кнопку id="button"

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
        <script src="https://www.google.com/recaptcha/api.js"></script>
    </head>
    <body>

        <div class="container">
            <form class="form-horizontal">
                <div class="form-group">
                    <label for="login" class="col-sm-3 control-label">Ваш логин</label>
                    <div class="col-sm-9">
                        <input type="text" name="login" class="form-control">
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-offset-3 col-sm-9">
                        <div class="g-recaptcha" data-sitekey="AAAAA"></div> / скрыл реальный код
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-offset-3 col-sm-9">
                        
                        
                        <button type="submit" class="btn btn-primary">Отправить</button>
                        
                        
                        <button type="submit" id="button" disabled="disabled" class="btn btn-primary">Отправить</button>
                        
                        
                    </div>

                </div>

            </form>
        </div>



        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

        <script type="text/javascript">
            $("form").submit(function(e){
                e.preventDefault();

                var login = $("input").val();

                $.ajax({
                    url: 'handler.php',
                    type: "post",
                    data: "login=" + login + "&g-recaptcha-response=" + grecaptcha.getResponse(),
                    success: function(data) {
                        if(data === 'ok') {
                            $('#button').attr('disabled','disable');
                        } else {
                            console.log(data);
                        }
                    }
                })
            });
        </script>


    </body>
</html>


<?php

if($_POST['g-recaptcha-response']) {
  $captcha = $_POST['g-recaptcha-response'];
  $secret = "AAAA"; // скрыл реальный код

  $json = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=". $secret . "&response=" . $captcha), true);

  if($json['success']) {
      echo "ok";
  } else {
      echo "recaptcha error";
  }
}  else {
    echo "Вы не ввели значение recaptcha";
}

 ?>

Nexus 26.01.2018 17:44

cinema4d, я думаю и этого достаточно.
<div class="g-recaptcha" data-sitekey="AAAAA" data-callback="someFunctionName"></div>
<script>function someFunctionName(){
    $('#button').removeAttr('disabled');
}</script>

В документации, насколько помню, написано, что callback будет вызван только после успеха.

upd. непонятно зачем так извращаться с активацией сабмит-кнопки.
Вставили на страницу рекапчу, на сервере перед проверкой данных проверили капчу.
Если капча "верна", то продолжаем работу, нет, что-нибудь да делаем.
Зачем делать дополнительную проверку на клиенте, если боту она до лампочки?

cinema4d 26.01.2018 18:44

я так понимаю добавления data-callback ?

<div class="g-recaptcha" data-sitekey="6Lcv7BoUAAAAAHpmHEEYxvuNUbGwdtWnbe_J1hqL" data-callback="onSuccess">

cinema4d 26.01.2018 19:10

Цитата:

Сообщение от Nexus
В документации, насколько помню, написано, что callback будет вызван только после успеха.

вот работает, но не знаю как активировать кнопку

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
        <script src="https://www.google.com/recaptcha/api.js"></script>
    </head>
    <body>

        <div class="container">
            <form class="form-horizontal">
                <div class="form-group">
                    <label class="col-sm-3 control-label">Ваш логин</label>
                    <div class="col-sm-9">
                        <input type="text" name="login" class="form-control">
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-offset-3 col-sm-9">
                        <div class="g-recaptcha" data-sitekey="6Lcv7BoUAAAAAHpmHEEYxvuNUbGwdtWnbe_J1hqL" data-callback="onSuccess"></div>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-offset-3 col-sm-9">
                        
                        
                        <button type="submit" class="btn btn-primary">Отправить</button>
                        
                        
                        <button type="submit" id="button"  disabled="disabled" class="btn btn-primary">Отправить</button>
                        
                        
                    </div>

                </div>

            </form>
        </div>



        

        <script>
var onSuccess = function(response) 

                    {
                        alert('Hello World!');
                        
                        $('#button').attr('disabled','disable');
                        
                        
                    };
                    
        </script>


    </body>
</html>

laimas 26.01.2018 19:17

Сервис гугла помогает в взломе своего же детища https://habrahabr.ru/company/pentestit/blog/341322/

Nexus 26.01.2018 20:03

Цитата:

Сообщение от cinema4d
не знаю как активировать кнопку

Вы её активировать хотите или наоборот?

Строка "$('#button').attr('disabled','disable');" делает кнопку недоступной.
Смотрите комментарий №8.

cinema4d 27.01.2018 15:23

да активировать, извините не видел второй страницы

cinema4d 27.01.2018 16:57

я не понимаю, тупой я)

cinema4d 29.01.2018 09:47

<script>
var onSuccess = function(response) 

                    {
                        //alert('Hello World!');
                        
                        
                        $('#button').removeAttr('disabled');

                        
                    };
                    
        </script>


разве не так должно быть? removeAttr ('disabled')

<button type="submit" id="button" disabled="disabled" class="btn btn-primary">Отправить</button>

cinema4d 29.01.2018 09:52

сорри за то что выносил мозг!! банально не подключил

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>

j0hnik 29.01.2018 21:45

вот вам версия новей
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>


Часовой пояс GMT +3, время: 01:37.