Pagina 1 van 1

PHP pagina implementeren in EzPortal

Geplaatst: 26 jan 2004, 13:06
door Deaken
Hoi allemaal,

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>";
}
?>
De bestanden servers.php en config.cfg staan in de map /servers.

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

Geplaatst: 26 jan 2004, 14:34
door Luuk
Gebruik deze mod voor een nieuwe pagina met de style van je forum. Je kan dan de extra codes er gewoon invoegen. dat lijkt me het makkelijkste. Als je ze in de map /servers/ zet moet je alleen nog extra

Code: Selecteer alles

$phpbb_root_path = './';
aanpassen. Ik denk naar

Code: Selecteer alles

$phpbb_root_path = './.../';
maar dat weet ik niet zeker.

Geplaatst: 26 jan 2004, 14:43
door Deaken
Ej cool ik had nog helemaal niet aan een mod gedacht.
Ik zit alleen met 1 probleempje. In die servers.tpl file zet ik wel php en dat wil volgens mij niet. Ik krijg rare tekens en vreemde dingen. Als ik er een HTML pagina in zet werkt het wel goed.

Iemand daar een antwoord op?

Geplaatst: 26 jan 2004, 15:01
door Luuk
Je moet alle php onder de mod zetten (template.php)

Geplaatst: 26 jan 2004, 15:12
door Deaken
Maar wat moet ik dan nog met de template.tpl :?

Geplaatst: 26 jan 2004, 15:29
door Luuk
alleen uploaden en er niks inzetten :wink:

Geplaatst: 26 jan 2004, 16:13
door Deaken
Template->loadfile(): File /guests/g/gss/public_html/templates/subBlack/servers.tpl for handle body is empty

;)

Geplaatst: 26 jan 2004, 16:23
door Luuk
haal de regel waar hij het .tpl als output pakt weg :bier:

Geplaatst: 26 jan 2004, 17:12
door WebSiteNet
Het resultaat moet geparsed worden naar dat template bestand:

Code: Selecteer alles

$template->assign_vars(array(
    "VAR" => $value)
);
En dan moet in je template bestand dit staan:

Code: Selecteer alles

{VAR}