Nejste přihlášeni
Stránky 1
Vyprázdnit mezipaměť jsem také zkoušel a bezúspěšně.
I v prohlížeči Google Chrome by instalace systému měla být funkční (otestováno).
Mohl bych se zeptat, jakou využíváte verzi Chromu?
Vlastním nejnovější verzi (31.0.1650.63 m) a stránku se mi nedaří zobrazit. Při zadání adresy a potvrzení se karta prohlížeče tváří, že stránku načetla, ale stránka se nezobrazí. Vizuálně tam zůstane nový panel bez možnosti jakékoliv interakce a po delší době to někdy ohlásí, že stránka nereaguje.
U jiných stránek (dokonce i těch, které také využívají XenForo) tento problém nemám. Rozšíření nepoužívám žádná.
Zkoušel jsem odstranit historii, cookies, přeinstalovat Chrome (i přes CCleaner) a problém stále přetrvává. Chtěl bych se zeptat, jestli Vás napadá nějaká příčina a případně i řešení toho problému.
Problém vyřešen.
Nakonec se jednalo a naprostou banalitu - prohlížeč. V Chromu, který využívám, instalace nefunguje, ale na Firefoxu ano.
Omlouvám se za zdržování a prosím lock.
Problém je ten, že po přesměrování na další stranu vidím stále stejnou obrazovku (http://imgup.cz/images/2013/12/31/nZzvR.png) a nemůžu na ní cokoli dělat.
Zdravím,
rád bych se zeptal, zda-li nemá někdo ze zde přítomných uživatelé nějaké zkušenosti (případně informace) o funkčnosti XenFora zde na Endoře. Dnes jsem přes FTP nahrál všechna data do adresáře webu a najel na instalaci, kde se vyskytl problém.
Po načtení stránky (xxxxxxx.xx/install/index.php?install/) mi XenForo ohlásilo, že hosting splňuje všechny potřebné podmínky (konfigurace) pro instalaci. Klikl jsem tedy na tlačítko Begin Installation a následně mě to přesměrovalo na další stránku (xxxxxxx.xx/install/index.php?install/step/1). Na další stránce již nešlo pokračovat v instalaci, jelikož tam nebyla možná žádná interakce s webem a na obrazovce jsem měl stále vizuálně první stránku (xxxxxxx.xx/install/index.php?install/).
Zkoušel jsem hledat, zda-li se někdo nesetkal s podobným problémem a nedošel k řešení, avšak bezúspěšně. Proto se obracím na vás a prosím vás o radu, jak tento problém vyřešit.
Příloha
Instalace
Potřeba je rcon.lib v ftp a povolená funkce fsockopen().
Taky jsem si všiml že u některých buňek se zobrazuje správně délka hraní hráče a počet zabití.
Tak jsem to upravil jak jsi mi to napsal, ale pořád se to nějak divně zobrazuje (viz. odkaz nahoře).
Já bych to řekl asi takto: rcon.lib komunikuje se serverem a ten kod na webu z něho vypisuje informace.
Pod rcon.lib se skývá tohle:
<?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, 10);
stream_set_timeout($fp, 1);
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";
//$command = "\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00";
$command = "\xFF\xFF\xFF\xFFTSource Engine Query\0\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"] = $buffer[0];
$result["name"] = $buffer[1];
$result["map"] = $buffer[2];
$result["mod"] = $buffer[3];
$result["game"] = $buffer[4];
if (trim($buffer[5]) == "") {
$result["activeplayers"] = "0";
$result["maxplayers"] = ord($buffer[6][0]);
} else {
$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\xFFU\x00";
$buffer = $this->Communicate($command);
//If no connection is open
if(trim($buffer) == "")
{
// second try with different command for the rest of the servers
if($this->challenge_number == "")
$this->getChallengeNumber();
$command = "\xff\xff\xff\xff\x55".$this->challenge_number;
$buffer = $this->Communicate($command);
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 - 1);
//frag count
$result[$i]["frag"] = ord($buffer[$tmp + 1]) +
(ord($buffer[$tmp + 2]) << 8) +
(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\xFFV\x00";
$buffer = $this->Communicate($command);
//If no connection is open
if(trim($buffer) == "")
{
// second try with different command for the rest of the servers
if($this->challenge_number == "")
$this->getChallengeNumber();
$command = "\xff\xff\xff\xff\x56".$this->challenge_number;
$buffer = $this->Communicate($command);
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);
if ($status["unread_bytes"] > 0) {
$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)
// Get challenge number using A2S_SERVERQUERY_GETCHALLENGE for use with A2S_PLAYERS and A2S_RULES
function getChallengeNumber()
{
//send request of challenge number
$challenge = "\xff\xff\xff\xff\x57";
$buffer = $this->Communicate($challenge);
//If no connection is open
if(trim($buffer) == "")
{
$this->connected = false;
return false;
}
$this->challenge_number = $buffer;
} // function getChallengeNumber()
}
?>
Dobrý den, neumím dokonale php, ale sepsal jsem si kod, který mi vypisuje údaje ze serveru. Bohužel je tu ale. To ale je, že se to nějak divně zobrazuje a v každé buňce tabulky se zobrazují jména všech hráčů a nějaké divné znaky. Chtěl bych se zeptat jestli v kodu vydíte nějakou chybu, které by to způsobovala.
Ukázka: http://igp.php5.cz/igpclassic.php
Kod:
<?php
require("rcon.lib.php");
$server_ip = "81.0.217.176";
$server_port = "27629";
$rcon = new Rcon();
$rcon->connect($server_ip, $server_port);
$server = $rcon->Info();
$player = $rcon->Players();
?>
<html>
<head>
</head>
<body>
<body bgcolor="#212121">
<font color="ffffff">
IP: <?php echo $server_ip; ?>:<?php echo $server_port; ?><br>
Mapa: <?php echo $server["map"]; ?><br>
Hráči: <?php echo $server["activeplayers"] ?>/<?php echo $server["maxplayers"] ?><br>
<br>
<table class="aligncenter" border="0" cellspacing="0" cellpadding="0" width="550"><colgroup> <col width="450"></col> <col width="60"></col> <col width="40"></col> </colgroup><tbody>
<tr bgcolor="191919">
<td width="390" align="left"><span style="color: #888888;">Online hráči</span></td>
<td width="100" align="left"><span style="color: #888888;">Doba hraní</span></td>
<td width="60" align="left"><span style="color: #888888;">Skore</span></td>
</tr>
<?php
for ($i = 1; $i <= $server["activeplayers"]; $i++) {
if (isset($player[$i])) {
?>
<tr bgcolor="2c2c2c">
<td width="390" align="left"><span style="color: #888888;"><?php echo htmlentities($player[$i]["name"]); ?></span></td>
<td width="100" align="left"><span style="color: #888888;"><?php echo $player[$i]["time"]; ?></span></td>
<td width="60" align="left"><span style="color: #888888;"><?php echo $player[$i]["frag"]; ?></span></td>
</tr>
</tbody>
<?php
}
}
?>
</table>
</font>
</body>
</html>
PHP podporuje, zkusím to přes ten script a také zkusím kontaktovat gametracker. Taky bych se chtěl zeptat jestli neznáte nějakou ukázku takového scriptu? Nevím jestli myslíte ten, který zde nefunguje s "fsockopen()" nebo jiný.
Děkuji za pomoc
Dobrý den
Hledal sem na foru a dočetl jsem se, že je zakázána komunikace s UDP porty. Chtěl bych se zeptat jestli neznáte způsob (kromě gametracker) jak by se dal vytvořit v php status server? Jedná se konkrétně o Counter Strike 1.6 server. Potřebuji jenom status online / offline.
Kdyby to šlo udělat pouze přes Gametracker, chtěl bych se zeptat jestli by šlo udělat pouze online / offline, nepotřebuji výpis hráčů, atd.
Děkuji za odpověď
Díky, kod sem si prohlížel, ale tohle sem přehlídnul, díky.
Dobrý den, používám plugin WP - Server status, ale je tam možnost přidat pouze 2 servery, v php se moc nevyznám, proto se chci zeptat jestli někdo neví jak by šel přidat i 3. server.
Díky za odpověď
Díky, zkusím to.
//Edit: Díky, funguje to.
Dobrý den, chci se zeptat jestli někdo nevíte jak zrušit zobrazování komentářů u stránek, ale chci aby u příspěvků zůstaly. Jediné co mě napadá to nějak smazat z kódu, ale nevím jak.
Předem díky za odpověď
Stránky 1