Я хочу добавить «капчу» на мою страницу входа в систему.
Визуально это работает, независимо от того, подтверждено это или нет, оно ничего не меняет, мы можем подключиться.
Даже еслипользователь не проверяет капчу, он может войти в систему, если учетные данные в порядке. Я не нахожу проблему, у вас есть идея?
Заранее спасибо.
Контроллер:
/**
* @Route("/connexion", name ="security_login")
* @param AuthenticationUtils $utils
* @return Response
*/
public function login(AuthenticationUtils $utils)
{
if (isset($_POST['submitpost'])) {
if (isset($_POST ['g-recaptcha-response'])) {
$secret = 'XXXXXXXXXX';
$recaptcha = new \ReCaptcha\ReCaptcha($secret);
$resp = $recaptcha->setExpectedHostname(' recaptcha-demo.appspot.com ')
->verify($_POST['g-recaptcha-response']);
if ($resp->isSuccess()) {
echo 'captcha ok ';
} else {
$errors = $resp->getErrorCodes();
echo 'captcha non ok ';
var_dump($errors);
}
}else{
var_dump('Captcha non rempli');
}
}
$error = $utils->getLastAuthenticationError();
$username = $utils->getLastUsername();
return $this->render('security/login.html.twig', [
'hasError' => $error !== null,
'username' => $username,
]);
}
Веточка:
{% extends 'base.html.twig' %}
{% block body %}
<head>
<title>reCAPTCHA demo: Simple page</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<h1>Axoblog</h1>
<form action ="{{ path ('security_login') }}" method="post">
<div class="form-group">
{% if hasError %}
<div class="alert alert-danger">error</div>
{% endif %}
<input type="text" placeholder="Adresse email" required value="{{ username }}" name="_username" id="email"
class="form-control" >
</div>
<div class="form-group">
<input placeholder="Mot de passe " required name ="_password"
type ="password" class="form-control">
</div>
<div class="g-recaptcha" data-sitekey="XXXXXXXXXXXXXXX"></div>
<div class="form-group">
<button type="submit" name="submitpost" class="btn btn-success" style="background:#333645">Connexion</button>
</div>
</form>
{% endblock %}