Я хочу добавить 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> 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);
?>
Они показывают мне вывод, как показано на рисунке:
Они не могут дать мне войти и не могут повторить. Надеюсь, кто-нибудь может помочь мне решить эту проблему. Спасибо.