Как настроить recaptcha с помощью формы, которая использует действие php_self

мой сайт выглядит так.

<?php
include 'dbd.php';     //DB Login details
?>
<!DOCTYPE html>
<html>
<head>
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>

<body>

<?php
$showFormular = true;

if (isset($_POST['submit'])) {
$error = false;

if (!$error) {
$statement = $pdo->prepare("INSERT INTO table (email, name) VALUES (:email, :name,)");
$result    = $statement->execute(array(
'email' => $email,
'name' => $name
));

if ($result) {
echo "Your Registration was Successful";
$showFormular = false;
} else {
echo 'Could not register your Account';
}

}
}

if ($showFormular) {
?>

<form action="<?php echo ($_SERVER['PHP_SELF']); ?>" method="post">

<input placeholder="Your Forum Name Here" name="name" required>
<input placeholder="Your Forum Email Here" name="email" required>
<div class="g-recaptcha" data-sitekey="public key"></div>

<input name="submit" type="submit">
</form>

<?php
}
?>

</body>
</html>

Проблема в том, что я не знаю, как реализовать проверку ReCaptcha на стороне сервера. Я попробовал это с помощью следующего метода, но там я получаю, очевидно, ошибку, что функция пуста, потому что ее выполнение выполняется напрямую.

$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'https://www.google.com/recaptcha/api/siteverify',
CURLOPT_POST =>1,
CURLOPT_POSTFIELDS => [
'secret' => 'privat key',
'response' => $_POST['g-recaptcha-response'],
],
]);

Надеюсь, я объяснил это достаточно хорошо, чтобы кто-то мне помог

1

Решение

Почему вы пытаетесь использовать команду curl? Вы можете сделать это напрямую с помощью PHP-кода.

Прежде всего, скачайте эту библиотеку php reCaptcha и импортируйте ваш проект: reCaptcha gitHub

Во-вторых, после того, как вы выполните какие-либо действия, вызовите свой php и внедрите это в свой php-код.

require_once('your-imported-autoload.php-path'); ex:Assets/reCaptcha/autoload.php

$privatekey = "-your private key-";

$recaptcha = new \ReCaptcha\ReCaptcha($privatekey);

$resp = $recaptcha->verify($_POST['g-recaptcha-response'],

$_SERVER['REMOTE_ADDR']);

if (!$resp->isSuccess()) {

// What happens when the CAPTCHA was entered incorrectly
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");

} else {
// Your code here to handle a successful verification

}

Наконец, для cURL вы пытаетесь подключиться через SSL и должны справиться с этим

curl_setopt($verify, CURLOPT_SSL_VERIFYPEER, false);
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector