0

I want to add recaptcha in the login form using with PHP language. I have get site key and secret key from the google recaptcha, but they alson cannot give me to access recaptcha function. I try to find online to search my problem, also didn't work.

Below is my front end code:

  <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>

Below is my backend code:

  <?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);
 ?>

They show me the output like below the picture: enter image description here

They cannot give me to sign in and can't recaptcha.Hope anyone can help me solve this problem. Thanks.

3
  • Your $secret is probably incorrect. Either it is a typo or it is of a different domain name. There is a space within your $secret string. Is it just added when copying here or is it in your real code? I don't there should be any space in a normal secret key. Commented Oct 4, 2019 at 4:43
  • That mean without space right? Commented Oct 4, 2019 at 4:53
  • Yes. Please remove all space in your API secret key and try again. Commented Oct 4, 2019 at 4:58

1 Answer 1

1

I have translated red text via Google Translate. It seems you have a domain problem. The token you provided is not valid. Add your domain to domain list on Google Recaptcha panel. If you are on localhost please read the answer of this question.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.