Autor | Zpráva | ||
---|---|---|---|
kacerek99 Profil |
#1 · Zasláno: 17. 7. 2014, 13:24:27
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 |
#2 · Zasláno: 17. 7. 2014, 14:22:36
a co zkusit nna začátek dát
$player = trim($player);
|
||
kacerek99 Profil |
#3 · Zasláno: 17. 7. 2014, 15:15:58
Mockrát děkuji vše už naprosto funguje :-) problém vyřešen :-)
|
||
Časová prodleva: 10 let
|
0