dezkit Posted January 7, 2010 Share Posted January 7, 2010 hello guys, how do i put this into a string $M=new Rcon(); $M->Connect($row['ip'],$row['port'],$row['rcon']); $M->RconCommand("status"); i am trying to put everything that gets executed by status into a string. how will i do this? thank you/ Quote Link to comment https://forums.phpfreaks.com/topic/187617-how-do-i-put-this-into-a-string/ Share on other sites More sharing options...
Mchl Posted January 7, 2010 Share Posted January 7, 2010 Does Rcon::RconCommand() return any value? If it does: $var = $M->RconCommand("status"); Quote Link to comment https://forums.phpfreaks.com/topic/187617-how-do-i-put-this-into-a-string/#findComment-990530 Share on other sites More sharing options...
dezkit Posted January 7, 2010 Author Share Posted January 7, 2010 it works, thank you! Quote Link to comment https://forums.phpfreaks.com/topic/187617-how-do-i-put-this-into-a-string/#findComment-990536 Share on other sites More sharing options...
dezkit Posted January 7, 2010 Author Share Posted January 7, 2010 alright i have another problem, i keep getting a error for this code: <?php echo "<table border='0' cellspacing='10'>"; echo "<tr> <td>Status</td> <td>IP address</td> <td>Server name</td> <td>Current map</td> <td>Players</td> <td>Connect</td> </tr>"; echo "<tr>"; include 'rcon_hl_net.inc'; while($row = mysql_fetch_array($result)){ // Print out the contents of each row into a table if(fsockopen("udp://".$row['ip'], $row['port'], $errno, $errstr, 2)){ echo "<td align='center'><img src='./yes.gif'></td>"; } else { echo "<td align='center'><img src='./no.gif'></td>"; } $M=new Rcon(); $M->Connect($row['ip'],$row['port'],$row['rcon']); $status = $M->RconCommand("status"); $line = explode("\n", $status); $map = substr($line[3], strpos($line[3], ":") + 1); $players = trim(substr($line[4], strpos($line[4], ":") + 1)); $active = explode(" ", $players); $result["ip"] = trim(substr($line[2], strpos($line[2], ":") + 1)); $result["name"] = trim(substr($line[0], strpos($line[0], ":") + 1)); $result["map"] = trim(substr($map, 0, strpos($map, "at:"))); $result["mod"] = "Counterstrike " . trim(substr($line[1], strpos($line[1], ":") + 1)); $result["game"] = "Halflife"; $result["activeplayers"] = $active[0]; $result["maxplayers"] = substr($active[2], 1); echo "<td>".$result["ip"]."</td>"; echo "<td>".$result["name"]."</td>"; echo "<td>".$result["map"]."</td>"; echo "<td>".$result["activeplayers"]."/".$result["maxplayers"]."</td>"; echo "<td align='center'><a href=\"steam://connect/".$row['ip'].":".$row['port']."\"><img src='steam.png' border='0'></a></td>"; echo "</tr>"; } echo "</table>"; ?> the error: Warning: Cannot use a scalar value as an array in /home/public_html/test.php on line 35 to 41 Quote Link to comment https://forums.phpfreaks.com/topic/187617-how-do-i-put-this-into-a-string/#findComment-990546 Share on other sites More sharing options...
Mchl Posted January 7, 2010 Share Posted January 7, 2010 This code has 37 lines in total Quote Link to comment https://forums.phpfreaks.com/topic/187617-how-do-i-put-this-into-a-string/#findComment-990547 Share on other sites More sharing options...
dezkit Posted January 7, 2010 Author Share Posted January 7, 2010 sorry i had removed my mysql connections, lines 35 - 41 are $result["ip"] = trim(substr($line[2], strpos($line[2], ":") + 1)); $result["name"] = trim(substr($line[0], strpos($line[0], ":") + 1)); $result["map"] = trim(substr($map, 0, strpos($map, "at:"))); $result["mod"] = "Counterstrike " . trim(substr($line[1], strpos($line[1], ":") + 1)); $result["game"] = "Halflife"; $result["activeplayers"] = $active[0]; $result["maxplayers"] = substr($active[2], 1); Quote Link to comment https://forums.phpfreaks.com/topic/187617-how-do-i-put-this-into-a-string/#findComment-990551 Share on other sites More sharing options...
Mchl Posted January 7, 2010 Share Posted January 7, 2010 Put var_dump($result); before these lines. I suspect $result is a variable that is not an array. Quote Link to comment https://forums.phpfreaks.com/topic/187617-how-do-i-put-this-into-a-string/#findComment-990559 Share on other sites More sharing options...
dezkit Posted January 7, 2010 Author Share Posted January 7, 2010 hello, what i have done is i put a "1" at the end of every variable, $result is an array, but now i have another problem, whenever i look at the echo of print_r($result); it is always being limited of the data, is there a way i can make the limit more, either in the include or my php.ini? here is the include: <?php // ************************************************************************ //PHPrcon - PHP script collection to remotely administrate and configure Halflife and HalflifeMod Servers through a webinterface //Copyright (C) 2002 Henrik Beige // //This library is free software; you can redistribute it and/or //modify it under the terms of the GNU Lesser General Public //License as published by the Free Software Foundation; either //version 2.1 of the License, or (at your option) any later version. // //This library is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU //Lesser General Public License for more details. // //You should have received a copy of the GNU Lesser General Public //License along with this library; if not, write to the Free Software //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // ************************************************************************ class Rcon { var $challenge_number; var $connected; var $server_ip; var $server_password; var $server_port; var $socket; //Constructor function Rcon() { $this->challenge_number = 0; $this->connected = true; $this->server_password = ""; $this->server_password = 27015; $this->server_password = ""; } //Open socket to gameserver function Connect($server_ip, $server_port, $server_password = "") { //store server data $this->server_ip = gethostbyname($server_ip); $this->server_port = $server_port; $this->server_password = $server_password; //open connection to gameserver $fp = fsockopen("udp://" . $this->server_ip, $this->server_port, &$errno, &$errstr, 5); if($fp) $this->connected = true; else { $this->connected = false; return false; } //store socket $this->socket = $fp; //return success return true; } //function Connect($server_ip, $server_port, $server_password = "") //Close socket to gameserver function Disconnect() { //close socket fclose($this->socket); $connected = false; } //function Disconnect() //Is there an open connection function IsConnected() { return $this->connected; } //function IsConnected() //Get detailed player info via rcon function ServerInfo() { //If there is no open connection return false if(!$this->connected) return $this->connected; //get server information $status = $this->RconCommand("status"); //If there is no open connection return false //If there is bad rcon password return "Bad rcon_password." if(!$status || trim($status) == "Bad rcon_password.") return $status; //format global server info $line = explode("\n", $status); $map = substr($line[3], strpos($line[3], ":") + 1); $players = trim(substr($line[4], strpos($line[4], ":") + 1)); $active = explode(" ", $players); $result["ip"] = trim(substr($line[2], strpos($line[2], ":") + 1)); $result["name"] = trim(substr($line[0], strpos($line[0], ":") + 1)); $result["map"] = trim(substr($map, 0, strpos($map, "at:"))); $result["mod"] = "Counterstrike " . trim(substr($line[1], strpos($line[1], ":") + 1)); $result["game"] = "Halflife"; $result["activeplayers"] = $active[0]; $result["maxplayers"] = substr($active[2], 1); //format player info for($i = 1; $i <= $result["activeplayers"]; $i++) { //get possible player line $tmp = $line[$i + 6]; //break if no more players are left if(substr_count($tmp, "#") <= 0) break; //name $begin = strpos($tmp, "\"") + 1; $end = strrpos($tmp, "\""); $result[$i]["name"] = substr($tmp, $begin, $end - $begin); $tmp = trim(substr($tmp, $end + 1)); //ID $end = strpos($tmp, " "); $result[$i]["id"] = substr($tmp, 0, $end); $tmp = trim(substr($tmp, $end)); //WonID $end = strpos($tmp, " "); $result[$i]["wonid"] = substr($tmp, 0, $end); $tmp = trim(substr($tmp, $end)); //Frag $end = strpos($tmp, " "); $result[$i]["frag"] = substr($tmp, 0, $end); $tmp = trim(substr($tmp, $end)); //Time $end = strpos($tmp, " "); $result[$i]["time"] = substr($tmp, 0, $end); $tmp = trim(substr($tmp, $end)); //Ping $end = strpos($tmp, " "); $result[$i]["ping"] = substr($tmp, 0, $end); $tmp = trim(substr($tmp, $end)); //Loss $tmp = trim(substr($tmp, $end)); //Adress $result[$i]["adress"] = $tmp; } //for($i = 1; $i < $result["activeplayers"]; $i++) //return formatted result return $result; } //function ServerInfo() //Get all maps in all directories function ServerMaps($pagenumber = 0) { //If there is no open connection return false if(!$this->connected) return $this->connected; //Get list of maps $maps = $this->RconCommand("maps *", $pagenumber); //If there is no open connection return false //If there is bad rcon password return "Bad rcon_password." if(!$maps || trim($maps) == "Bad rcon_password.") return $maps; //Split Maplist in rows $line = explode("\n", $maps); $count = sizeof($line) - 4; //format maps for($i = 0; $i <= $count; $i++) { $text = $line[$i]; //at directory output sorted map list if(strstr($text, "Dir:")) { //reset counter $mapcount = 0; //parse directory name $directory = strstr($text, " "); } //if(strstr($text, "Dir:")) else if(strstr($text, "(fs)")) { //parse mappath $mappath = strstr($text, " "); //parse mapname //if no "/" is included in the "maps * " result if(!($tmpmap = strrchr($mappath, "/"))) $tmpmap = $mappath; //parse mapname without suffix (.bsp) $result[$directory][$i] = substr($tmpmap, 1, strpos($tmpmap, ".") - 1); } //else if(strstr($text, "(fs)")) } //for($i = 1; $i <= $count; $i++) //return formatted result return $result; } //function ServerMaps() //Get server info via info protocoll function Info() { //If there is no open connection return false if(!$this->connected) return $this->connected; //send info command $command = "\xff\xff\xff\xffinfo\x00"; $buffer = $this->Communicate($command); //If no connection is open if(trim($buffer) == "") { $this->connected = false; return false; } //build info array $buffer = explode("\x00", $buffer); $result["ip"] = substr($buffer[0], 5); $result["name"] = $buffer[1]; $result["map"] = $buffer[2]; $result["mod"] = $buffer[3]; $result["game"] = $buffer[4]; $result["activeplayers"] = (strlen($buffer[5]) > 1)?ord($buffer[5][0]):"0"; $result["maxplayers"] = (strlen($buffer[5]) > 1)?ord($buffer[5][1]):"0"; //return formatted result return $result; } //function Info() //Get players via info protocoll function Players() { //If there is no open connection return false if(!$this->connected) return $this->connected; //send players command $command = "\xff\xff\xff\xffplayers\x00"; $buffer = $this->Communicate($command); //If no connection is open if(trim($buffer) == "") { $this->connected = false; return false; } //get number of online players $buffer = substr($buffer, 1); //build players array for($i = 1; strlen($buffer) > 0; $i++) { //playername $tmp = strpos($buffer, "\x00"); $result[$i]["name"] = substr($buffer, 1, $tmp); //frag count $result[$i]["frag"] = ord($buffer[$tmp + 1]) + (ord($buffer[$tmp + 2]) << + (ord($buffer[$tmp + 3]) << 16) + (ord($buffer[$tmp + 4]) << 24); //online time $tmptime = @unpack('ftime', substr($buffer, $tmp + 5, 4)); $result[$i]["time"] = date('i:s', round($tmptime['time'], 0) + 82800); $buffer = substr($buffer, $tmp + 9); } //for($i = 1; $i <= $count; $i++) //return formatted result return $result; } //function Players() //Get server rules via info protocoll function ServerRules() { //If there is no open connection return false if(!$this->connected) return $this->connected; //build info command $command = "\xff\xff\xff\xffrules\x00"; $buffer = $this->Communicate($command); //If no connection is open if(trim($buffer) == "") { $this->connected = false; return false; } //seperate rules $buffer = substr($buffer, 2); $buffer = explode("\x00", $buffer); $buffer_count = floor(sizeof($buffer) / 2); //build rules array for($i = 0; $i < $buffer_count; $i++) { $result[$buffer[2 * $i]] = $buffer[2 * $i + 1]; } //sort rules ksort($result); //return formatted result return $result; } //function ServerRules() //Execute rcon command on open socket $fp function RconCommand($command, $pagenumber = 0, $single = true) { //If there is no open connection return false if(!$this->connected) return $this->connected; //get challenge number if($this->challenge_number == "") { //send request of challenge number $challenge = "\xff\xff\xff\xffchallenge rcon\n"; $buffer = $this->Communicate($challenge); //If no connection is open if(trim($buffer) == "") { $this->connected = false; return false; } //get challenge number $buffer = explode(" ", $buffer); $this->challenge_number = trim($buffer[2]); } //build command $command = "\xff\xff\xff\xffrcon $this->challenge_number \"$this->server_password\" $command\n"; //get specified page $result = ""; $buffer = ""; while($pagenumber >= 0) { //send rcon command $buffer .= $this->Communicate($command); //get only one package if($single == true) $result = $buffer; //get more then one package and put them together else $result .= $buffer; //clear command for higher iterations $command = ""; $pagenumber--; } //while($pagenumber >= 0) //return unformatted result return trim($result); } //function RconCommand ($command) //Communication between PHPrcon and the Gameserver function Communicate($command) { //If there is no open connection return false if(!$this->connected) return $this->connected; //write command on socket if($command != "") fputs($this->socket, $command, strlen($command)); //get results from server $buffer = fread ($this->socket, 1); $status = socket_get_status($this->socket); $buffer .= fread($this->socket, $status["unread_bytes"]); //If there is another package waiting if(substr($buffer, 0, 4) == "\xfe\xff\xff\xff") { //get results from server $buffer2 = fread ($this->socket, 1); $status = socket_get_status($this->socket); $buffer2 .= fread($this->socket, $status["unread_bytes"]); //If the second one came first if(strlen($buffer) > strlen($buffer2)) $buffer = substr($buffer, 14) . substr($buffer2, 9); else $buffer = substr($buffer2, 14) . substr($buffer, 9); } //In case there is only one package else $buffer = substr($buffer, 5); //return unformatted result return $buffer; } //function Communicate($buffer) } ?> thank you Quote Link to comment https://forums.phpfreaks.com/topic/187617-how-do-i-put-this-into-a-string/#findComment-990572 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.