Autor Zpráva
kacerek99
Profil
Pěkné slunečné odpoledne všem :-) Mam menší problém s php scriptem pro mobilní platby...
Má fungovat následně-- přijde sms--mobilní platby zavolají script a předají mu informace.... a script nick předá pomoci Rcon Minecraft Serveru...
To vše v podstatě perfektně funguje až na menší chybu script předá nick s třemi mezerami před ním...a tak je mi script k ničemu
1 mezeru pochopitelně dávám já takže zřejmě někde v scriptu jsou 2 mezery které by tam neměli být...a já je nemohu najít a prosím vás o pomoc... mockrát vám děkuji za jakoukoliv připomínku ke scriptu....
PS: PHP zatím moc nerozumím a script není mé tvorby...

zavolanivip.php
Vas pozadavek byl zpracovan!
<?php
///////////////
// NASTAVENÍ //
///////////////
$server = "ip";
$port = "port";
$heslo = "heslo";
//////////////////////////////
// VYTAŽENÍ INFORMACÍ Z SMS //
//////////////////////////////
$price = $_GET['shortcode'];
$price = str_replace("90333"," ",$price);
$player = $_GET['sms'];
$player = str_replace("PM FRICRAFT"," ",$player); //Keyword nahradtě vaším keywordem,př: SCC

$commands = array();
//////////////////////////////
// JEDNOTLIVÉ CENOVÉ HLADINY//
//////////////////////////////
switch($price) {

  case 99:  //cena 99kc
    $commands[] = "say Heureeeeka 99";//sem si dejte vas prikaz bez lomitka
    $commands[] = "say a jine";
  break;

  case 79:  //cena 79kc
     $commands[] = "givevip ".$player." vip 31";//mesic vip
     $commands[] = "say Hrac ".$player."   si zakoupil VIP na dobu 31 dnu, Dekujeme.";
  break;

  case 50:  //cena 50kc
   $commands[] = "givevip ".$player." vip 14";//14dni vip
   $commands[] = "say Hrac ".$player." si zakoupil VIP na dobu 14 dnu, Dekujeme.";
  break;

  case 30.000:  //cena 30kc
     $commands[] = "givevip ".$player." vip 7";//tyden vip
     $commands[] = "say Hrac ".$player."   si zakoupil VIP na dobu 7dnu, Dekujeme.";
  break;



}

include_once("rcon.php");
$r = new rcon($server,$port,$heslo);
if($r->Auth())
{
   foreach($commands as $command)
    $r->rconCommand($command);
}

?>

rcon.php
<?php
/*
RCON remote console class, modified for minecraft compability by Tehbeard.

!!!YOU MUST CONFIGURE RCON ON YOUR MINECRAFT SERVER FOR THIS TO WORK
AT TIME OF WRITING ONLY 1.9pr4+ HAVE BUILTIN RCON SUPPORT!!!

Example Code:
============
include_once("rcon.class.php"); //Include this file
$r = new rcon("127.0.0.1",25575,"foobar"); //create rcon object for server on the rcon port with a specific password
if($r->Auth()){ //Connect and attempt to authenticate
{
  $r->rconCommand("say Saving in 10 seconds!"); //send a command
  sleep(10);
  $r->rconCommand("save-all"); //send a command
  $r->rconCommand("say Save complete!");//send a command
  echo $r->rconCommand("list");//send a command, echo returned value
}
============



Based upon the following work:
[<<<
    Basic CS:S Rcon class by Freman.  (V1.00)
    ----------------------------------------------
    Ok, it's a completely working class now with with multi-packet responses

    Contact: printf("%s%s%s%s%s%s%s%s%s%d%s%s%s","rc","on",chr(46),"cl","ass",chr(64),"pri","ya",chr(46),2,"y",chr(46),"net")

    Behaviour I've noticed:
        rcon is not returning the packet id.
>>>]
*/

define("SERVERDATA_EXECCOMMAND",2);
define("SERVERDATA_AUTH",3);

class RCon {
    var $Password;
    var $Host;
    var $Port = 27015;
    var $_Sock = null;
    var $_Id = 0;

    function RCon ($Host,$Port,$Password) {
        $this->Password = $Password;
        $this->Host = $Host;
        $this->Port = $Port;
        $this->_Sock = @fsockopen($this->Host,$this->Port, $errno, $errstr, 30) or
                die("Unable to open socket: $errstr ($errno)\n");
        $this->_Set_Timeout($this->_Sock,2,500);
        }

    function Auth () {
        $PackID = $this->_Write(SERVERDATA_AUTH,$this->Password);

        // Real response (id: -1 = failure)
        $ret = $this->_PacketRead();
        //var_dump($ret);
        if ($ret[0]['ID'] == -1) {
            return false;
        }
        return true;
    }

    function _Set_Timeout(&$res,$s,$m=0) {
        if (version_compare(phpversion(),'4.3.0','<')) {
            return socket_set_timeout($res,$s,$m);
        }
        return stream_set_timeout($res,$s,$m);
    }

    function _Write($cmd, $s1='', $s2='') {
        // Get and increment the packet id
        $id = ++$this->_Id;

        // Put our packet together
        $data = pack("VV",$id,$cmd).$s1.chr(0).$s2.chr(0);

        // Prefix the packet size
        $data = pack("V",strlen($data)).$data;

        // Send packet
        fwrite($this->_Sock,$data,strlen($data));

        // In case we want it later we'll return the packet id
        return $id;
    }

    function _PacketRead() {
        //Declare the return array
        $retarray = array();
        //Fetch the packet size
        while ($size = @fread($this->_Sock,4)) {
            $size = unpack('V1Size',$size);
            //Work around valve breaking the protocol
            if ($size["Size"] > 4096) {
                //pad with 8 nulls
                $packet = "\x00\x00\x00\x00\x00\x00\x00\x00".fread($this->_Sock,4096);
            } else {
                //Read the packet back
                $packet = fread($this->_Sock,$size["Size"]);
            }
            array_push($retarray,unpack("V1ID/V1Response/a*S1/a*S2",$packet));
        }
        return $retarray;
    }

    function Read() {
        $Packets = $this->_PacketRead();

        foreach($Packets as $pack) {
            if (isset($ret[$pack['ID']])) {
                $ret[$pack['ID']]['S1'] .= $pack['S1'];
                $ret[$pack['ID']]['S2'] .= $pack['S1'];
            } else {
                $ret[$pack['ID']] = array(
                    'Response' => $pack['Response'],
                    'S1' => $pack['S1'],
                    'S2' =>    $pack['S2'],
                );
            }
        }
        return $ret;
    }

    function sendCommand($Command) {
        //$Command = '"'.trim(str_replace(' ','" "', $Command)).'"';
        //$Command="stop";
        $this->_Write(SERVERDATA_EXECCOMMAND,$Command,'');
    }

    function rconCommand($Command) {
        $this->sendcommand($Command);

        $ret = $this->Read();

        //ATM: Source servers don't return the request id, but if they fix this the code below should read as
        // return $ret[$this->_Id]['S1'];
        return $ret[$this->_Id]['S1'];
    }
}
?>
Micruss
Profil
a co zkusit nna začátek dát $player = trim($player);
kacerek99
Profil
Mockrát děkuji vše už naprosto funguje :-) problém vyřešen :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: