рекапча только в php без jquery или ajax

#php #ajax #recaptcha

Вопрос:

У меня возникли проблемы с проверкой, проверена ли recaptcha или нет authController.php. В signup.php страница, когда пользователь отправляет форму, метод формы-post и действие = authController.php

Моя страница регистрации отлично работает без рекапчи. Предполагая, что я правильно определяю div recaptcha вместе с допустимым секретным ключом на signup.php чтобы мне не нужно было помещать сюда ненужные вещи, мой ЕДИНСТВЕННЫЙ вопрос в том, как мне проверить СООБЩЕНИЕ recaptha в authController.php. Что происходит прямо сейчас, так это то, что если я проверю или не проверю рекапчу, когда форма будет отправлена, она вернется с сообщением, что требуется рекапча. Если я сообщу код, то, очевидно, регистрация сработает.

После отправки формы регистрации я возвращаюсь к форме регистрации ДАЖЕ в случае успеха и меняю кнопку РЕГИСТРАЦИИ на электронную почту, ОТПРАВЛЕННУЮ зеленым цветом, и саму кнопку отключения. Сказав это, я думаю, что происходит то, что, когда страница перезагружается, она теряет галочку, так как я использую PHP. Откуда я знаю, что после отправки проверка больше не проверяется, но я думаю, что должен быть способ использовать ЧИСТЫЙ php. Также затем, как вас Зовут, Фамилия … все они признаются после отправки. Теперь я немного расстраиваюсь из-за этого. Вот как я проверяю, была ли проверена рекапча или нет authController.php файл.

     '''
    if(empty($_POST['g-recaptcha-response']))
    {
      $errors[captcha_error'] = "Captcha is required";
    }
    else
    {
        $secretKey = "mykey";
        $url = 'https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'amp;response='.$_POST['g-recaptcha-response'];
        $response = file_get_contents($url);
        $response_data = json_decode($response);
        
        if($response_data->success)
            $errors['captcha_error'] = null;
    }
    '''
 

ошибки — это массив, определенный выше, синтаксис правильный. На signup.php страница, я проверяю, установлен ли массив ошибок captcha_error или равен НУЛЮ. Вот как я узнаю, был ли флажок установлен или нет. Если мне ПРИДЕТСЯ использовать ajax с использованием $data и успеха, то как, пожалуйста. Пожалуйста, помните, что я использую ЧИСТЫЙ php, а не jquery ИЛИ AJAX (хотя я думаю, что в конечном итоге я могу использовать его, так как ajax не будет перезагружать всю страницу, и поэтому я НЕ потеряю галочку, и, возможно, это моя проблема), но PHP предпочтительнее. Спасибо

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

1. Что-то должно произойти в javascript, чтобы добавить g-recaptcha-ответ в форму.

Ответ №1:

Я сделал очень простую страницу регистрации под названием experiment.php с минимальным содержанием, и это все еще не работает. Мне все еще вторят НЕУДАЧИ. Я смотрел видео на YouTube о том, как использовать recaptcha с PHP. Я удалил и переустановил recaptcha около 9 раз, теперь думаю, может быть, у меня что-то не так с настройками. Кстати, используя recaptcha v2. Наконец, я поискал в Google, и в итоге я использовал их демонстрационные ключи и отобразил предупреждение (что нормально, так как они предназначены только для эксперимента), и все еще не работает. Если кто-нибудь из вас может использовать мой код ниже и заставить его работать, я буду признателен, пожалуйста. Вы более чем можете поменять ключи на свои ключи и посмотреть, сработает ли это для вас с вашей стороны. В настоящее время ниже используются демо-ключи Google. 3 картинки, на которые нужно нажать, всплывут, на них появится зеленая отметка, но после отправки будет написано «СБОЙ».

Я просто хочу посмотреть, не ошиблись ли мои ключи ИЛИ что-то не так с моей кодировкой???

Кстати, на моем сайте recaptcha также написано: Мы обнаружили, что ваш сайт не проверяет решения reCAPTCHA. Это необходимо для правильного использования reCAPTCHA на вашем сайте. Пожалуйста, посетите наш сайт разработчика для получения дополнительной информации. Я погуглил, но бесполезно, если это сообщение означает, что мои настройки неверны, пожалуйста, намекните мне.

Если мое кодирование неверно, то понятно, ИНАЧЕ я действительно удивляюсь, как они превратились в индустрию стоимостью 136 миллиардов долларов. Очень, очень расстроен этим делом с рекапчей.

Вот ссылка на видео, за которым я следил: https://www.youtube.com/watch?v=xyOu0b6R3m0

     '''
       <?php 
         if(isset($_POST["submit"]))
         {
             $e = $_POST['myemail'];
             $secretKey = '66LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe';
             $responseKey = $_POST['g-recaptcha-response'];
             $url='https://www.google.com/recaptcha/api/siteverify?secret=$secretKeyamp;response=$responseKey';
             $response = file_get_contents($url); 
             $response = json_decode($response);
        if($response->success)
              echo "success";
        else
              echo "failure";
       }
       ?>
        <!DOCTYPE html>
       <style>
  .success {
      background-color: lightseagreen;
      border: none;
      border-radius: 20px;
      color: white;
      padding: 15px 32px;
      text-align: center;
      text-decoration: none;
      display: inline-block;
      font-size: 22px;
      margin: 4px 2px;
      cursor: pointer;
      width: 100%;
 }

.register {
  background-color: white;
  border: none;
  border-radius: 20px;
  border: 2px solid lightseagreen;
  color: green;
  padding: 15px 32px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 22px;
   margin: 4px 2px;
   cursor: pointer;
   width: 100%;
  }

</style>
<html lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<title> Registration </title>
<link rel="stylesheet" href="style2.css">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 </head>
 <body>
 <div class="container" style = "transform:scale(.8);">
 <div class="title">Registration</div><br>
 <div>
  <form action="experiment.php" method = "post">

    <div class="user-details">
      <div class="input-box">
        <span class="details">Email</span>
        <input type="email" name = "myemail" required>
      </div>
     </div>
    <div class="g-recaptcha" data- 
    sitekey="6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"></div>
    <input type="submit" name="submit" value="Register">
  </div>
  </form>
  </div>
  </div>
  <script src="https://www.google.com/recaptcha/api.js"async defer></script>
  </body>
  </html>
 

»’

Ответ №2:

Связавшись со своим хостингом примерно в тот момент, когда я решил отказаться, я пришел к выводу, что «allow_url_fopen» не был отключен в моих настройках php. Так что это был не мой код. Это сработало как заклинание после того, как опция была проверена. Не знаю, почему он был снят по умолчанию в первую очередь, и нет видео на YouTube, чтобы убедиться в этом.

Вздох….

Надеюсь, это поможет другим людям, которые находятся в такой же ситуации