Просмотр полной версии : активация кнопки при проверке google капча
cinema4d
25.01.2018, 17:04
Подскажите, как активировать строку <input type="submit" value="<?php echo $button_continue; ?>" class="button" /> кнопку продолжить, если данные с капчи google = true ? не перезагружая страницу
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 еще понимаю а в аяксах явах и джейсон дуб
гугл капчей не пользовался, нужно читать документацию
cinema4d
26.01.2018, 15:51
.button - это класс кнопки?
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";
}
?>
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>
Сервис гугла помогает в взломе своего же детища https://habrahabr.ru/company/pentestit/blog/341322/
не знаю как активировать кнопку
Вы её активировать хотите или наоборот?
Строка "$('#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>
вот вам версия новей
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot