невозможно разместить капчу там, где она должна быть, используя php

#php #html

#php #HTML

Вопрос:

Почему окно Google recaptcha отображается в верхней части полей, оно должно появляться между вводами и кнопкой подтверждения. Взгляните на этот SS прямо здесь: https://i.imgur.com/65hlNfR.jpg .

 <?php
$public_key="";
$private_key="";
$url="https://www.google.com/recaptcha/api/siteverify";
if(array_key_exists('submit_form',$_POST))
{
$response_key=$_POST['g-recaptcha-response'];
$response=file_get_contents($url.'?secret='.$private_key.'amp;response'.$response_key.'amp;remoteip='.$_SERVER['REMOTE_ADDR']);
$response=json_decode($response);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Authentification</title>
</head>
<body>
<form method="post" action="auth.php">
<center>
<fieldset style="width:300px;">
<legend align='center'><h1>Connexion</h1></legend>
<table>
<tr>
<td><b>Email: </b></td>
<td><input type="email" name="email" required=""></td>
</tr>
<tr>
<td><b>Mot de passe: </b></td>
<td><input type="password" name="password" required=""></td>
<tr>
<div class="g-recaptcha" data-sitekey="<?php print $public_key; ?>"></div>
<script src="https://www.google.com/recaptcha/api.js"></script>
<td><input type="submit" name="submit_form" value="Se Connecter"></td>
<td><a href="ajout.php"><button type="button">S'inscrire</button></a></td>
</tr>
</table>
</fieldset>
</center>
</form>
</body>
</html>
 

Ответ №1:

Вы должны поместить td перед тегом div

Пожалуйста, попробуйте следующее:

 <?php
$public_key="";
$private_key="";
$url="https://www.google.com/recaptcha/api/siteverify";
if(array_key_exists('submit_form',$_POST))
{
$response_key=$_POST['g-recaptcha-response'];
$response=file_get_contents($url.'?secret='.$private_key.'amp;response'.$response_key.'amp;remoteip='.$_SERVER['REMOTE_ADDR']);
$response=json_decode($response);
}
?>


<!DOCTYPE html>
<html>
<head>
<title>Authentification</title>
</head>
<body>
<form method="post" action="auth.php">
<center>
<fieldset style="width:300px;">
<legend align='center'><h1>Connexion</h1></legend>
<table>
<tr>
<td><b>Email: </b></td>
<td><input type="email" name="email" required=""></td>
</tr>
<tr>
<td><b>Mot de passe: </b></td>
<td><input type="password" name="password" required=""></td>
<tr>
<td colspan=2>
<div class="g-recaptcha" data-sitekey="<?php print $public_key; ?>"></div>
<script src="https://www.google.com/recaptcha/api.js"></script>
<tr><td>
<input type="submit" name="submit_form" value="Se Connecter"></td>
<td><a href="ajout.php"><button type="button">S'inscrire</button></a></td>
</tr>
</table>
</fieldset>
</center>
</form>
</body>
</html>
 

Комментарии:

1. как сделать капчу обязательной? Как пользователь обязан обойти его для подключения, я попробовал required=»» и это не сработало

2. Пожалуйста, добавьте часть на стороне сервера в свой «auth.php «. Пожалуйста, это developers.google.com/recaptcha/old/docs/php (На стороне сервера (как проверить, правильно ли пользователь ввел ответ)

3. Как? Кстати, я уже получил оттуда свой recaptcha, поэтому я думаю, что он уже добавлен

4. Пожалуйста, перейдите по приведенной выше ссылке как в вашем клиенте (часть html), так и на сервере (часть php), и это будет работать. HTML-часть покажет recptcha, и поэтому пользователь должен ввести правильную captcha, если он / она вводит неверно, 2-я часть (серверная php-часть) обнаружит это, и вам следует отклонить вход в систему

5. Спасибо, но я уже протестировал его, и он работал нормально, когда я правильно выполнил задание, его обошли, и когда я специально допустил ошибки, он обновил изображение задания, поэтому я не думаю, что это мой вопрос, я хочу обязать пользователя установить флажок recaptcha, прежде чем нажимать Connect