Why am I getting that error on Google reCAPTCHA V2 response?
it's my first time posting here and I'm not good with such stuff as the one I'm posting right now
I have been trying to solve this issue for 2 days by now so I could use some help lol
This error "Please solve the captcha." is showing even if the captcha is verified so it's showing in the both cases (verified/unverified).
Thanks in advance.
PHP Part:
<?php
require_once 'db/setting.php';
require_once 'db/odbc.php';
session_start();
error_reporting(0);
if (isset($_SERVER['HTTPS']) &&
($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$protocol = 'https://';
}
else {
$protocol = 'http://';
}
$currentDomain = $protocol.$_SERVER[HTTP_HOST];
$API["secret_key"] = "xx";
$API["api_key"] = "xx";
$API["callback"] = $currentDomain."/vote-reward-tok.php?return={RETURNEDCODE}";
$API["API_Domain"] = "http://api.top-kal.com";
$secretKey = 'xxx';
$captcha = $_POST['g-recaptcha-response'];
$ip = $_SERVER['REMOTE_ADDR'];
$responseData=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&responseData=".$captcha."&remoteip=".$ip);
$responseKeys = json_decode($responseData,true);
$config["db_username"] = "sa";
$config["db_password"] = "********";
$config["db_database_account"] = "kal_auth";
$config["db_database_player"] = "kal_db";
$config["db_server"] = "NAME\SQLEXPRESS";
$config["db_driver"] = "SQL Server";
$config["Reward_Name"] = "Vote Coin";
$config["MinLvl_Require"] = 30;
$config["Reward_Index"] = 447;
$config["Reward_Amount"] = 10;
$config["Reward_Bound"] = false;
SQL Part
function insertRewards($account_unique_id){
global $config;
$connect = odbc_connect('Driver={'.$config["db_driver"].'};Server='.$config["db_server"].';Database='.$config["db_database_player"].';', $config['db_username'] ,$config['db_password']);
if(!$connect)
return false;
$query = odbc_exec($connect,"SELECT Top 1 [IID] FROM [Item] Where [IID] < 1 order by IID Desc");
if(!$query)
return false;
$data = odbc_fetch_array($query);
if($data && !empty($data) && isset($data["IID"]))
odbc_exec($connect,"INSERT INTO [Item] ([PID],[IID],[Index],[Prefix],[Info],[Num])VALUES ($account_unique_id,".($data["IID"]+1).",".$config["Reward_Index"].",0,".(16+($config["Reward_Bound"] ? 128 : 0)).",".$config["Reward_Amount"].")");
}
function checkCharacters($accountUID){
global $config;
$connect = odbc_connect('Driver={'.$config["db_driver"].'};Server='.$config["db_server"].';Database='.$config["db_database_player"].';', $config['db_username'] ,$config['db_password']);
if(!$connect)
return array("error" => "failed to connect to database players.");
$query = odbc_exec($connect,"SELECT [Level] FROM [Player] WHERE [UID] = $accountUID ORDER BY [Level] DESC");
if(!$query)
return array("error" => "failed to find characters in this account id.");
while($r = odbc_fetch_array($query)){
if($r["Level"] >= $config["MinLvl_Require"])
return array("success" => $accountUID);
}
return array("error" => "You should have one character at least higher than level : ".$config["MinLvl_Require"]." to vote.");
}
function checkAccount($accountID){
global $config;
$connect = odbc_connect('Driver={'.$config["db_driver"].'};Server='.$config["db_server"].';Database='.$config["db_database_account"].';', $config['db_username'] ,$config['db_password']);
if(!$connect)
return array("error" => "failed to connect to database accounts.");
$query = odbc_exec($connect,"SELECT TOP 1 [UID] FROM [Login] WHERE [ID] = '$accountID'");
if(!$query)
return array("error" => "this account id not exists.");
$data = odbc_fetch_array($query);
if(!$data || empty($data) || !isset($data["UID"]))
return array("error" => "this account id not exists.");
if($config["MinLvl_Require"] > 0)
return checkCharacters($data["UID"]);
return array("success" => $data["UID"]);
}
Submitting Function
$response = array("error" => false , "success" => false , 'redirect' => false);
function post_content($query){
$query_array = array();foreach( $query as $key => $key_value )$query_array[] = urlencode( $key ) . '=' . urlencode( $key_value );return implode( '&', $query_array );
}
global $API;
$opts = array('http' => array('method' => 'POST',"header" => "Content-type: application/x-www-form-urlencoded\r\nAuthorization:".base64_encode($API["api_key"].":".$API["secret_key"])."\r\n", "content" => post_content($content)));return stream_context_create($opts);
}
function submit(){
global $API;
if(empty($captcha) || $captcha == '' || !isset($captcha))
return array( "error" => "Please solve the captcha.");
if (empty($_POST['account']) || !ctype_alnum($_POST['account']))
return array( "error" => "Invalid account id.");
$checkAccount = checkAccount($_POST['account']);
if (isset($checkAccount["error"]))
return array("error" => $checkAccount["error"]);
if (isset($checkAccount["success"])){
$account_unique_id = (isset($_SESSION['kal_id'])) ? $_SESSION['kal_id'] : $checkAccount["success"];
$result = json_decode(file_get_contents($API["API_Domain"] . '/api/generate/vote-rewards-token', false, postParams(array('callback' => $API["callback"],'account_unique_id' => $account_unique_id ))) , true);
{
echo '<br><center><h3>Please wait...</h3></center>';
}
if (!empty($result)){
if (isset($result["response"])){
if (isset($result["response"]["error"]))
return array("error" => $result["response"]["error"]);
elseif (isset($result["response"]["success"]))
return array("redirect" => '<script type="text/javascript">setTimeout(function () { window.location.href = "'.$result["response"]["success"].'";}, 500)</script>');
}
}
}
}
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['account'])){
$response = submit();
if (isset($response['redirect']) && $response['redirect']){
echo $response['redirect'];
die;
}
}elseif (isset($_GET['return'])){
$result = json_decode(file_get_contents($API["API_Domain"] . '/api/verify/vote-rewards-token', false, postParams(array('returned_code' => $_GET['return']))) , true);
if (!empty($result)){
if (isset($result["response"])){
if (isset($result["response"]["error"]))
$response['error'] = $result["response"]["error"];
elseif (isset($result["response"]["success"])){
insertRewards($result["response"]["account_unique_id"]);
$response['success'] = '<b>Thank you, Your vote has been recorded and the server rank will be updated soon.<b><br />You will receive your rewards in storage of your account.<p>Your next vote in : <b>' . $result["response"]["NextVote"] . '</b></p>';
}
}
}
}
?>
HTML part:
<head>
<title>Vote Rewards - <?php echo $config['serverName']; ?></title>
<link rel="shortcut icon" href=images/favicon.png">
<link rel="stylesheet" href="css/vote.css">
<link rel="stylesheet" href="css/fontawesome.css">
<link rel="stylesheet" href="css/fontawesomeall.css">
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>
<body>
<form class="vote-form" method="post">
<noscript><div class="isa_error">Javascript is not enabled in your browser! Please enable it or change your browser.</div></noscript>
<?php if(isset($response['error']) && $response['error']){ ?><div class="isa_error"> <?php echo $response['error'] ;?> </div> <?php } ?>
<?php if(isset($response['success']) && $response['success']){ ?><div class="isa_success"> <?php echo $response['success'] ;?> </div>
<?php }else{ ?>
<label>
<span>Account ID :</span>
<input type="text" name="account" maxlength="20" <?php echo (isset($_SESSION['kal_username'])) ? 'readonly value="'.$_SESSION['kal_username'].'"' : ""; ?>" />
</label>
<div class="g-recaptcha" style="margin:0 auto;" data-sitekey="xxx" data-theme="dark"></div>
<label class="label_btn">
<input type="submit" class="button" value="Vote" />
</label>
<?php } ?>
</form>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
</body>
</html>
Sorry if the topic is way too long but I'm desperate =DD