Вход

Просмотр полной версии : активация кнопки при проверке google капча


cinema4d
25.01.2018, 17:04
Подскажите, как активировать строку <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
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/recaptcha/docs/display#js_param

cinema4d
26.01.2018, 17:29
cinema4d, смотрите раздел "g-recaptcha tag attributes and grecaptcha.render parameters".
Вам нужен атрибут "data-callback".
https://developers.google.com/recaptcha/docs/display#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
В документации, насколько помню, написано, что 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
не знаю как активировать кнопку
Вы её активировать хотите или наоборот?

Строка "$('#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>