Как добавить recaptcha в форму входа, используя язык PHP? - PullRequest
0 голосов
/ 04 октября 2019

Я хочу добавить recaptcha в форму входа, используя язык PHP. Я получил ключ сайта и секретный ключ от Google Reaptcha, но они также не могут дать мне доступ к функции рекапчи. Я пытаюсь найти в Интернете, чтобы найти мою проблему, также не работает.

Ниже мой код переднего конца:

  <html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title><?php print $title; ?></title>
    <link rel="shortcut icon" href="<?php print $icon; ?>" />

<!-- Bootstrap -->
<link rel="stylesheet" href="bootstrap/dist/assets/css/bootstrap.min.css">
<link rel="stylesheet" href="bootstrap/dist/assets/css/animate.min.css">

<!-- Metis core stylesheet -->
<link rel="stylesheet" href="bootstrap/dist/assets/css/main.min.css">

    <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
    <script type="text/javascript" src="js/function.js"></script>
    <script type="text/javascript" src="js/custom.js"></script>
    <script type="text/javascript" src="js/login_new_2.js"></script>
     <script src='https://www.google.com/recaptcha/api.js'></script>
</head>

<body class="login">
<div class="form-signin">
  <div class="text-center">
    <img src='<?php echo $logo2; ?>' />
  </div>
  <hr>
  <div class="tab-content">
    <div id="login" class="tab-pane active">
        <p class="text-muted text-center">
          Enter your username and password
        </p>
         <input type="text" placeholder="Username" id="username" onfocus="if (!this._haschanged) {
                                                                    this.value = ''
                                                                }
                                                                ;
                                                                this._haschanged = true;" value="<?php print $_GET['u']; ?>" class="form-control top" />
        <input type="password" id="password" onkeypress="detect_enter(event, login, '<?php echo $link; ?>')" value="<?php print $_GET['p']; ?>" placeholder="Password" onfocus="if (!this._haschanged) {
                                                                    this.value = ''
                                                                }
                                                                ;
                                                                this._haschanged = true;" class="form-control bottom" />
        <div class="checkbox">
          <label>
            <input type="checkbox" id="remember_me" /><span>&nbsp;Remember Me</span>
          </label>
        </div>
        <button class="btn btn-lg btn-primary btn-block" onclick="login('<?php echo $link; ?>')" id="login_btn" >Sign in</button>
        <br>
         <div class="g-recaptcha" data-sitekey="6LdT17sUAAAAADMTvulKyO9UZl7wsfhK4sG5nEmg"></div>

    </div>
  </div>
  <hr>
  <div class="text-center">
    <div id="login_error"></div>
  </div>
</div>
</body>
</html>

Ниже мой код внутреннего кода:

  <?php

  $remember_me = $_POST['remember_me'];
  $cookie_length = ($remember_me == 'true' ? (time() + 86400 * 30) : 0);
  $sql = 'SELECT ' . convert_db_key('id') . ' FROM ' . convert_db_key('users');
  $sql .= ' WHERE ' . convert_db_key('username') . '=' . convert_db_value($_POST["username"]) . ' AND ' . convert_db_key('is_active') . '=1';
  $row_select = db_conn_select($sql);
  $num_rows = count($row_select);


  $secret = '6LdT17sUAAAAAC-_LeQ59-BGjX34JEv3Prvid4dY';
  $response = $_POST["g-recaptcha-response"];
  $url = 'https://www.google.com/recaptcha/api/siteverify';
  $data = array(
  'secret' => '6LdT17sUAAAAAC-_LeQ59-BGjX34JEv3Prvid4dY',
  'response' => $_POST["g-recaptcha-response"]
  );
     $options = array(
     'http' => array(
     'method' => 'POST',
     'content' => http_build_query($data)
        )
    );
      $context = stream_context_create($options);
       $verify = 
      file_get_contents("https://www.google.com/recaprcha/api/siteverify?secret={$secret}$response={$response}");

 if ($num_rows > 0) {

     $pwd = md5($_POST["password"]);
    $sql1 = 'SELECT ' . convert_db_key('id') . ' FROM ' . convert_db_key('users');
   $sql1 .= ' WHERE ' . convert_db_key('username') . '=' . convert_db_value($_POST["username"]) . ' AND ' . convert_db_key('password') . '=' . convert_db_value($pwd);
   $sql1 .= ' AND ' . convert_db_key('is_active') . '=1';
   $row_select_1 = db_conn_select($sql1);
   $num_rows1 = count($row_select_1);
    $row1 = $row_select_1[0];
    if ($num_rows1 > 0) {
    $md5_id = md5($row1["id"] . rand_string(25));
    $auth = rand_string(25);
    setcookie('_' . 'user_tmp_id', $md5_id, $cookie_length, '/');
    setcookie('_' . 'user_tmp_auth', $auth, $cookie_length, '/');
    setcookie('_' . 'cookie_length', $cookie_length, $cookie_length, '/');

    $sql3 = 'UPDATE ' . convert_db_key('users') . ' SET ' . convert_db_key('auth') . '=' . convert_db_value($auth) . ',' . convert_db_key('md5_auth') . '=' . convert_db_value($md5_id);
    $sql3 .= ' WHERE ' . convert_db_key('id') . '=' . convert_db_value($row1['id']) . ' AND ' . convert_db_key('is_active') . '=1';
    $row_update = db_conn_update($sql3);

    $result_arr['result'] = $row_update['query'];
} else {
    $result_arr['result'] = false;
}
  } else {
$result_arr['result'] = false;
  }

 echo json_encode($result_arr);
 ?>

Они показывают мне вывод, как показано на рисунке: enter image description here

Они не могут дать мне войти и не могут повторить. Надеюсь, кто-нибудь может помочь мне решить эту проблему. Спасибо.

1 Ответ

0 голосов
/ 04 октября 2019

Я перевел красный текст через Google Translate. Кажется, у вас есть проблема с доменом. Указанный вами токен недействителен. Добавьте свой домен в список доменов на панели Google Recaptcha. Если вы находитесь на localhost, пожалуйста, прочитайте ответ на этот вопрос .

...