Подключение google recaptcha

127
10 декабря 2020, 00:50

Есть форма на странице index.php В форме данные для ввода (логин и пароль) и recaptcha

<form action="req.php" method="post"> 
		<p><input type="text" name="login" placeholder="Логин"></p> 
    <p><input type="text" name="password" placeholder="Пароль"></p> 
		<div class="g-recaptcha" data-sitekey="6Leq86IUAAAAAP1NPJ4hmJNdUk9zEyyasw0_lYYe"></div> 
		<p><input type="submit" name="enter" value="Отправить"></p> 
	</form>

А работает все так Если рекапча не заполнена или заполнена не верна то на странице req.php выводится ошибка А если капча пройдена верно то на странице req.php выводится логин и пароль

А мне нужно чтобы ошибки о не правильном заполнении капчи выводились на той же странице где и сама форма

reg.php if ( $_POST['enter'] ) {

if ( !$_POST['g-recaptcha-response'] )
    exit('Заполните капчу');
$url = 'https://www.google.com/recaptcha/api/siteverify';
$key = '6Leq86IUAAAAAJHXh7awOmtDbLlejXQCxTFOyxKI';
$query = $url.'?secret='.$key.'&response='.$_POST['g-recaptcha-response'].'&remoteip='.$_SERVER['REMOTE_ADDR'];
$data = json_decode(file_get_contents($query));
if ( $data->success == false){
    exit('Капча введена неверно');
} else {
exit("Логин: $_POST[login]");

} }

Я пока что новичок в php.Прошу строго не судить

Answer 1

Пусть форма авторизации это login.php имеет следующий вид:

<?
if ( $_POST['enter'] ) {
    session_start();
    $_SESSION['auth'] = false;
    if ( !$_POST['g-recaptcha-response'] )
        exit('Заполните капчу');
    $url = 'https://www.google.com/recaptcha/api/siteverify';
    $key = '6Leq86IUAAAAAJHXh7awOmtDbLlejXQCxTFOyxKI';
    $query = $url.'?secret='.$key.'&response='.$_POST['g-recaptcha-response'].'&remoteip='.$_SERVER['REMOTE_ADDR'];
    $data = json_decode(file_get_contents($query));
    if ( $data->success == false){
        exit('Капча введена неверно');
    } else {
        $_SESSION['auth'] = true;
        $_SESSION['login'] = $_POST[login];
        header("Location: /req.php");
    }
}
?>
<form action="" method="post">
    <p><input type="text" name="login" placeholder="Логин"></p>
    <p><input type="text" name="password" placeholder="Пароль"></p>
    <div class="g-recaptcha" data-sitekey="6Leq86IUAAAAAP1NPJ4hmJNdUk9zEyyasw0_lYYe"></div>
    <p><input type="submit" name="enter" value="Отправить"></p>
</form>

Соответственно и в файле req.php поменять вывод:

<?
session_start();
if ($_SESSION['auth'])
    exit("Login is {$_SESSION['login']}");

Как то так

update: Перепутал location написал вместо header;

P.S.: session_start должна быть до вывода, так же как и header

READ ALSO
Yii2 как правильно написать запрос с Inner join?

Yii2 как правильно написать запрос с Inner join?

По сути я хочу написать запрос

100
Mysql pdo - не информативный errorInfo

Mysql pdo - не информативный errorInfo

Выполняю запрос:

109
Spring Security Principal null

Spring Security Principal null

метод контроллера:

182
Не работает лямбда выражение в Collectors.toMap()

Не работает лямбда выражение в Collectors.toMap()

Пытаюсь собрать мапу с помощью стрима, падает ClassCastExceptionВ общем, есть класс Person:

128