Well as the title says, I have a problem which is the following, I have a file with codes in which I would have to save the data of the person in my sql server manager who votes in a forum. when they press to recieve ward I jump first You must vote in HopZone to receive the Reward, in which I vote the server but I do not register the vote!
<?php
if(isset($_POST['Enviar']) )
{
$formok=true;
$variable=true;
$IP_Player = $_SERVER['REMOTE_ADDR'];
$name = htmlspecialchars($_POST['usuario']);
$personaje = htmlspecialchars($_POST['personaje']);
$reward = htmlspecialchars($_POST['reward']);
$captcha=$_POST['g-recaptcha-response'];
$secretKey = $RecaptchaSecretKey;
$ip = $_SERVER['REMOTE_ADDR'];
$secretKey = urlencode($secretKey);
$captcha = urlencode($captcha);
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,"https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$captcha&remoteip=$ip");
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl_handle);
curl_close($curl_handle);
$responseKeys = json_decode($response,true);
if(intval($responseKeys["success"]) !== 1)
{
$formok = false;
$variable = false;
echo '<center><ul id="errors" class="visible"><li>Validacion Humana no Valida</li></ul></center>';
}
if($variable)
{
if(antiinjection($name))
{
$formok = false;
$variable = false;
echo '<center><ul id="errors" class="visible"><li>La Cuenta contiene caracteres invalidos</li></ul></center>';
}
if(antiinjection($personajel))
{
$formok = false;
$variable = false;
echo '<center><ul id="errors" class="visible"><li>El Personaje contiene caracteres invalidos</li></ul></center>';
}
if(strlen($name) < 4 || strlen($name) > 16 )
{
$formok = false;
$variable = false;
echo '<center><ul id="errors" class="visible"><li>El nombre de Usuario debe contener minimo 4 caracteres y maximo 16 caracteres</li></ul></center>';
}
if(strlen($name) < 1 || strlen($name) > 16 )
{
$formok = false;
$variable = false;
echo '<center><ul id="errors" class="visible"><li>El nombre del Personaje debe contener minimo 1 caracteres y maximo 16 caracteres</li></ul></center>';
}
if($reward<1 && $reward>4)
{
$formok = false;
$variable = false;
echo '<center><ul id="errors" class="visible"><li>Debes seleccionar tu Reward</li></ul></center>';
}
}
if ($formok)
{
$con = mssql_connect($SqlServerIP, $SqlServerUser, $SqlServerPass) or die("Error en la conexión a MsSql");
mssql_select_db($SqlServerDB, $con);
$datetime_variable = new DateTime();
$horavotosdiff = @date("d/m/Y H:i:s", $datetime_variable);
$nuevafecha = strtotime ('-1 hour' , strtotime ($horavotosdiff ) ) ;
$sql = "(SELECT fecha FROM VoteReward WHERE ip = '$IP_Player' AND fecha > DATEADD(hh, -12, getDate()))";
$resultado = mssql_query($sql,$con);
if(mssql_num_rows($resultado)>0)
{
$row=mssql_fetch_array($resultado);
$fecha_ultima = $row['fecha'];
$variable = false;
echo '<center><ul id="errors" class="visible"><li>Ya se ha entregado el reward anteriormente, puedes votar solo una vez cada 12 horas.<br><br>Tu ultimo voto fue '.$fecha_ultima.' <br> Proximo voto a partir de '.$nuevafecha_ultima.'</li></ul></center>';
}
mssql_close($con);
}
if ($variable)
{
$con = mssql_connect($SqlServerIP, $SqlServerUser, $SqlServerPass) or die("Error en la conexión a MsSql");
mssql_select_db($SqlServerDB, $con);
$sql = "(SELECT account_name, char_id FROM user_data WHERE account_name = '$name' AND char_name = '$personaje')";
$resultado = mssql_query($sql,$con);
if(mssql_num_rows($resultado)>0)
{
$row=mssql_fetch_array($resultado);
$char_id = $row['char_id'];
}
else
{
$variable = false;
echo '<center><ul id="errors" class="visible"><li>Cuenta o Personaje erroneo.</li></ul></center>';
}
mssql_close($con);
}
if ($variable)
{
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,"http://api.hopzone.net/lineage2/vote?token=$HopZoneToken&ip_address=$IP_Player");
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl_handle);
curl_close($curl_handle);
list($apiver, $voted, $hopzoneServerTime, $status_code) = split(",", $data, 5);
$voto = split(":", $voted);
if ($voto[1] == "true")
{
$con = mssql_connect($SqlServerIP, $SqlServerUser, $SqlServerPass) or die("Error en la conexión a MsSql");
mssql_select_db($SqlServerDB, $con);
$sql = "INSERT INTO VoteReward (fecha,ip,cuenta,personaje,reward) VALUES (GETDATE(), '$IP_Player', '$name', '$personaje', '$reward')";
mssql_query($sql);
mssql_close($con);
kick_char($char_id);
switch ($reward)
{
case 1: //ID //CANTIDAD
AdditemPacket1($char_id, "57", "15000000"); #Adenas
break;
case 2:
AdditemPacket1($char_id, "5575", "5000000"); #Ancient Adena
break;
case 3: //ID //CANTIDAD
AdditemPacket1($char_id, "5570", "1"); #Reward Coin
break;
}
echo '<p id="success" class="visible">¡Tu Reward fue entragado con Exito!<br>Puedes votar nuevamente dentro de 12 Horas.</p>';
}
else
{
$variable = false;
echo '<center><ul id="errors" class="visible"><li>Primero debes votar en HopZone para recibir el Reward</li></ul></center>';
}
}
}
function antiinjection($str)
{
$allowedchars = "abcdefghijklmnopqrstuvwxyz1234567890?!.@_-*";
$str=strtolower($str);
if (strspn($str, $allowedchars) != strlen($str))
{
$str = NULL;
return true;
}
return false;
}
function AdditemPacket1($char_id,$item,$cantidad)
{
global $cached_errors;
global $cached_ip,$cached_port;
$cachedsocket=@fsockopen('127.0.0.1','2012',$errno,$errstr,1) or die($notconnected);
$buf=pack("cVVVVVVVVV",55,$char_id,0,$item,$cantidad,0,0,0,0,1).tounicode("admin");
fwrite($cachedsocket,pack("s",(strlen($buf)+2)).$buf);
$len=unpack("v",fread($cachedsocket,2));
$rid=unpack("c",fread($cachedsocket,1));
for($i=0;$i<(($len[1]-4)/4);$i++){
$read=unpack("i",fread($cachedsocket,4));
$rs.=$read[1];
}
fclose($cachedsocket);
return;
}
function kick_char($char_id)
{
global $cached_errors;
global $cached_ip,$cached_port;
$buf=pack("cV",5,$char_id).tounicode("admin");
$cachedsocket=fsockopen('127.0.0.1','2012',$errno,$errstr,1) or die("no conecto");
fwrite($cachedsocket,pack("s",(strlen($buf)+2)).$buf);
$len=unpack("v",fread($cachedsocket,2));
$rid=unpack("c",fread($cachedsocket,1));
for($i=0;$i<(($len[1]-4)/4);$i++){
$read=unpack("i",fread($cachedsocket,4));
$rs.=$read[1];
}
fclose($cachedsocket);
sleep(1);
return;
}
function tounicode($string)
{
$rs="";
for($i=0;$i<strlen($string);$i++) $rs.=$string[$i].chr(0);
return($rs.chr(0).chr(0));
}
?>
and this is the sql
USE [lin2world]
GO
/****** Object: Table [dbo].[VoteReward] Script Date: 02/10/2017 14:53:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[VoteReward](
[fecha] [datetime] NULL,
[ip] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[cuenta] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[personaje] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[reward] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[id] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_VoteReward] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF