PHP pagina implementeren in EzPortal

Installatie lukt niet? Plotseling een foutmelding. Of weet je niet hoe iets werkt. Problemen met phpBB2 kun je in dit archief opzoeken.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gesloten
Deaken
Berichten: 33
Lid geworden op: 08 okt 2003, 12:16
Locatie: Enschede
Contacteer:

PHP pagina implementeren in EzPortal

Bericht door Deaken » 26 jan 2004, 13:06

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
iemand dood maken met een blije mus

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 26 jan 2004, 14:34

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.
Afbeelding

Deaken
Berichten: 33
Lid geworden op: 08 okt 2003, 12:16
Locatie: Enschede
Contacteer:

Bericht door Deaken » 26 jan 2004, 14:43

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?
iemand dood maken met een blije mus

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 26 jan 2004, 15:01

Je moet alle php onder de mod zetten (template.php)
Afbeelding

Deaken
Berichten: 33
Lid geworden op: 08 okt 2003, 12:16
Locatie: Enschede
Contacteer:

Bericht door Deaken » 26 jan 2004, 15:12

Maar wat moet ik dan nog met de template.tpl :?
iemand dood maken met een blije mus

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 26 jan 2004, 15:29

alleen uploaden en er niks inzetten :wink:
Afbeelding

Deaken
Berichten: 33
Lid geworden op: 08 okt 2003, 12:16
Locatie: Enschede
Contacteer:

Bericht door Deaken » 26 jan 2004, 16:13

Template->loadfile(): File /guests/g/gss/public_html/templates/subBlack/servers.tpl for handle body is empty

;)
iemand dood maken met een blije mus

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 26 jan 2004, 16:23

haal de regel waar hij het .tpl als output pakt weg :bier:
Afbeelding

Gebruikersavatar
WebSiteNet
Berichten: 6524
Lid geworden op: 20 okt 2003, 16:56
Locatie: Wieringerwerf
Contacteer:

Bericht door WebSiteNet » 26 jan 2004, 17:12

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}

Gesloten