How can I save my data in my sql server manager with php through a registration by voting

0

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
    
asked by jonathan vargas 23.11.2018 в 02:00
source

0 answers