Я запутался по поводу php с участием reCAPTCHA - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь сделать очень простой сайт, который включает в себя reCAPTCHA.я получил свой ключ сайта и секретный ключ и следовал 2 учебникам до сих пор, но не повезло

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

вот мой код до сих пор

<!DOCTYPE HTML>
<html> <!-- template-->
<head>
  <title>template</title>

  <script src="lib/jquery-2.1.4.min.js"></script> 
  <script src='https://www.google.com/recaptcha/api.js'></script>


</head> 

<body>

<form action="/verify.php" method="get">
  Number:<br>
  <input type="text" name="firstname"><br>
  <div class="g-recaptcha" data-sitekey="6LcKeGwUAAAAAOdDqu2CzJxZdgYUXEUEPQKZBOtn"></div>
  <input type="submit" value="Submit" />

</form>

</body>
</html>

и вот мой php

<html>
<body>

The number is <?php echo $_GET["number"]; ?><br>

<?php 
  if ($_GET["number"] == 42)
  echo "42 is the right answer!";
?>

</body>
</html>

на данный момент сайт работает нормально.... за исключением того, что я не знаю, как добавить код reCAPTCHA, и документация googles смутила меня, потому что я очень мало знаю о php.

. Любые примеры кода или ссылки на простую документацию приветствуются.это мой первый пост на stackoverflow ... надеюсь, я достаточно хорошо следовал правилам

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Я бы предложил изменить ваш HTML-код следующим образом:

  <form method="post" action="verify.php">
    Number:<br> 
    <input type="text" name="number"><br>
    <?php
      require_once('recaptchalib.php');
      $publickey = "your_public_key"; // you got this from the signup page
      echo recaptcha_get_html($publickey);
    ?>
    <input type="submit" />
  </form>

  <!-- more of your HTML content -->
</body>

и в verify.php добавьте это:

<?php
require_once('recaptchalib.php');
$privatekey = "your_private_key";
$resp = recaptcha_check_answer ($privatekey,
                            $_SERVER["REMOTE_ADDR"],
                            $_POST["recaptcha_challenge_field"],
                            $_POST["recaptcha_response_field"]);

if (!$resp->is_valid) {
  // 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
  if (isset($_POST['number']) && $_POST['number'] == '42') {
    echo "42 is the right answer!";
  }
}
?>
0 голосов
/ 27 августа 2018

это будет ваш verify.php

$post_data = http_build_query(
    array(
        'secret' => CAPTCHA_SECRET, //as provided from google
        'response' => $_POST['g-recaptcha-response'],
        'remoteip' => $_SERVER['REMOTE_ADDR']
    )
);
$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $post_data
    )
);
$context  = stream_context_create($opts);
$response = file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $context);
$result = json_decode($response);
if ($result->success) {
//success,
echo $_GET["firstname"]; //your input field name was 'firstname' not 'number'

}else{
echo 'we think you are a bot';
//fail

}
...