Ik heb pas mijn forum ge-update met het ezportal. Dit werk allemaal heel mooi en de gebruikers zijn er ook tevreden over. Ik zit alleen met een paar kleine dingetjes. Aan de linkerkant zit het blok "board Navigation" met hierin de links: Faq, zoeken, gebruikerslijst en forum. Hieraan wil ik een paar links toevoegen maar dan wel een paar al bestaande PHP pagina's. Ik ben er zelf al even mee bezig geweest maat ben er niet echt uit gekomen.
Het is dus de bedoeling dat je bij "board navigation" op bv Servers klikt en dat dan in EzPortal die pagina geopend wordt met de huidige template.
Ik heb wel gewoon de link <a href="/servers/servers.php">Servers</a><br /> in de portal_body.tpl gezet maar dit geeft niet het juiste resultaat. De pagina wordt alleen geladen zonder de EzPortal er omheen.
Dit is de code van de te implementeren php pagina
Code: Selecteer alles
<?php
include_once("config.php");
//Get server info via info protocoll
function info($server_ip, $server_port)
{
//send info command
$buffer = "\xff\xff\xff\xffinfo\x00";
$buffer = communicate($server_ip, $server_port, $buffer);
//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"] = ord($buffer[5][0]);
$result["maxplayers"] = ord($buffer[5][1]);
if($result["maxplayers"]=="0") $result["maxplayers"]=16;
//return formatted result
return $result;
} //function info()
//Get players via info protocoll
function players($server_ip, $server_port)
{
//send players command
$buffer = "\xff\xff\xff\xffplayers\x00";
$buffer = communicate($server_ip, $server_port, $buffer);
//get number of online players
$count = ord($buffer[5]);
$buffer = substr($buffer, 6);
//build players array
$result[0]["frag"]= $count;
for($i = 1; $i <= $count; $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]) << 8) +
(ord($buffer[$tmp + 3]) << 16) +
(ord($buffer[$tmp + 4]) << 24);
//online time
$tmptime = unpack('fint', substr($buffer, $tmp + 5, 4));
$result[$i]["time"] = date('i:s', round($tmptime[int], 0) + 82800);
$buffer = substr($buffer, $tmp + 9);
} //for($i = 1; $i <= $count; $i++)
//return formatted result
return $result;
} //function players()
function communicate($server_ip, $server_port, $buffer)
{
//open connection to gameserver
$socket = fsockopen("udp://" . $server_ip, $server_port);
if(!$socket)
return false;
// set timeout of 2 seconds .. [BvS]
socket_set_timeout($socket, 2, 0);
//write command on socket
if($buffer != "")
fputs($socket, $buffer, strlen($buffer));
//get results from server
$result = fread ($socket, 1);
$status = socket_get_status($socket);
$result .= fread($socket, $status["unread_bytes"]);
//close socket
fclose($socket);
//return unformatted result
return $result;
} //function comunicate($buffer)
/*
echo "<table border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse;' bordercolor='#111111' width='90%'>";
echo "<tr><td width=128><img src='maps/down.jpg' border=0 width=128></a></td><td align=center>";
echo "This server is DOWN at the moment.</td></tr>";
echo "<tr><td width=128><img src='maps/down.jpg' border=0 width=128></a></td><td align=center>";
echo "This server is DOWN at the moment.</td></tr>";
echo "<tr><td width=128><img src='maps/down.jpg' border=0 width=128></a></td><td align=center>";
echo "This server is DOWN at the moment.</td></tr>";
echo "<tr><td width=128><img src='maps/down.jpg' border=0 width=128></a></td><td align=center>";
echo "This server is DOWN at the moment.</td></tr>";
echo "</table>";
*/
if($n==0)
{
echo "<table border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse;' bordercolor='#111111' width='90%'>";
$serverq= @mysql_query("SELECT * from `site_servers` WHERE 1 ORDER BY `ip`");
while ($server = mysql_fetch_array($serverq)){
$ip = explode(":", $server["ip"]);
$info = info($ip[0],$ip[1]);
if ($info["ip"]== ""){
echo "<tr><td width=128><img src='maps/down.jpg' border=0 width=128></a></td><td align=center>";
echo "<font color=red>".$server["ip"]."</font><br>This server is DOWN at the moment";// , please <a href='mailto:bla@bla.nl'>report</a> this.</td></tr>";
}
else{
$picture = "maps/".$info["map"].".jpg";
echo "<tr><td width=128><a href='index.php?s=servers&n=".$server["ip"]."'>";
if (file_exists($picture)) echo "<img src='$picture' border=0 width=128>";
else echo $info["map"];
echo "</a></td><td align=center>";
echo $info["ip"], "<br>";
echo $info["name"], "<br>";
echo $info["map"], "<br>";
echo $info["activeplayers"], "/",$info["maxplayers"], "<br>";
echo "</td></tr>";
}
}
echo "</table>";
}
else
{
$serverq= @mysql_query("SELECT * from `site_servers` WHERE `ip` = '$n'");
if ($server = mysql_fetch_array($serverq)){
$ip = explode(":", $n);
$info = info($ip[0],$ip[1]);
$players=players($ip[0],$ip[1]);
echo "<table border='1' cellpadding='0' cellspacing='0' style='font-family: Verdana; font-size: 13; border-collapse: collapse;' bordercolor='#111111' width='90%'>";
echo "<tr><td width=128 align=left>";
$picture = "maps/".$info["map"].".jpg";
if (file_exists($picture)) echo "<img src='$picture' border=0 width=128>";
else echo $info["map"];
echo "</a></td><td colspan='2' align=center>",$info["name"],"<br>",$info["map"],"<br>",$info["activeplayers"], "/",$info["maxplayers"],"</td></tr>";
echo "<tr><td width='100%' align=center colspan='3'><font color=red><b>Live Server Info for ",$info["ip"]," ",$info["name"],"</b></font></td></tr>";
echo "<tr><td width='33%'><b>Player Name</b></td><td width='33%'><b>Time</b></td><td width='33%'><b>Frags</b></td></tr>";
for($i=1;$i <= $info["activeplayers"]; $i++)
{
if($players[$i]["name"]=="") echo "<tr><td width='33%'><i>Connecting Player</i></td><td width='33%'></td><td width='33%'></td></tr>";
else
{
echo "<tr>";
echo "<td width='33%'>",$players[$i]["name"],"</td><td width='33%'>",$players[$i]["time"],"</td><td width='33%'>",$players[$i]["frag"],"</td>";
echo "</tr>";
}
}
echo "<tr><td>Maps in mapcycle:</td><td width='100%' align=left colspan='2'>";
echo $server["mapcycle"];
}
echo "</td></tr></table>";
}
?>
Mijn vraag is dus hoe ik het voor elkaar kan krijgen om deze pagina's in EzPortal te implementeren.
Ik weet dat dit niet een EzPortal forum is maar het behoort wel tot PHPBB en mijn ervaringen op dit forum zijn zo goed dat ik het jullie wel toevertrouw.
Groet,
The Deaken