Seite 1 von 1

SSI werden nicht ausgeführt?

Verfasst: So 06.Mär, 2005 15:36
von Dungeonwatcher
Hi! :)

Gegeben ist ein ziemlich unbekannter kleiner Webserver Web/2, PHP, MySQL und die Forensoftware PHPBB.

Ich bin gerade dabei in mein Forum einige eigene Seiten einzufügen. Darunter soll auch eine sein, auf der die HW, SW und ein kleiner Status des Rechners/Servers zu sehen ist. Mit dem Status habe ich jedoch so mein Problem. Der Server hat einige SSI (ServerSideIncludes) Befehle, welche ich gerne benutzen möchte. Binde ich diese in eine reine HTML-Seite ein, werden sie auch sauber ausgeführt. Schreibe ich sie jedoch in ein Template, passiert nichts. :(

--> http://dungeon-bbs.homeip.net/forum/system.php

Wo ist mein Denkfehler?

Bye/2

Verfasst: So 06.Mär, 2005 17:22
von oxpus
Was hast Du denn in das Template geschrieben?
Es ist die Frage, ob der Server SSI-Elemente die <sysuptime> überhaupt öffentlich zulässt.
Dafür ist es ja mit SSI geschützt ;)

Verfasst: So 06.Mär, 2005 17:41
von Dungeonwatcher
Hi! :)

Im Template steht es so:

Code: Alles auswählen

<tr> 
<td class="row1" align="left"><span class="row1">System Uptime:</span></td>
<td class="row1" align="left"><span class="row1"><sysuptime></span></td>
</tr>
Mittlerweile weiss ich, das ich mich wohl entscheiden muss, entweder SSI oder PHP. Dann würde ich PHP gerne vorziehen. Du hast nicht zufällig 'ne Idee wie das aussehen könnte? ;)

Bye/2

Verfasst: So 06.Mär, 2005 19:54
von oxpus
Diese Werte stehen PHP meinem Wissen nach nicht zur Verfügung.
Ich kenne da auch keinen echten Ersatz.
Bislang...

Verfasst: Di 08.Mär, 2005 19:10
von Dungeonwatcher
'n Abend! :)

Sind solche Konstrukte in PHPBB nicht statthaft?

Code: Alles auswählen

<table>
     <tr>
          <td>Deine IP ist:></td>
          <td><?php echo $_SERVER["REMOTE_ADDR"]; ?></td>
     </tr>
</table>
Jedenfalls werden diese Einträge im Template ignoriert.

Bye/2

Verfasst: Di 08.Mär, 2005 20:45
von oxpus
Besser in der .php-Datei erstellen, den Template übergeben und im tpl dann durch einen Platzhalter anzeigen lassen.
Wie das auch mit den restlichen Werten geschieht.

Verfasst: Di 08.Mär, 2005 21:19
von Dungeonwatcher
Uff. Irgendwie erschliesst sich mir noch nicht die Logik in den PHP-Dateien von PHPBB. :rolleyes:

Gibt es evtl. in deinem Dateifundus eine "DAU"sichere Kurzbeschreibung/-erklärung dazu?

Ich muss zugeben, das mir die Erklärungen des Sources nicht weiterbringen. Ich brauche idealerweise ein praktisches Beispiel. [schild=5 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]flehend auf den Kniend rutsch[/schild] ;)

Verfasst: Di 08.Mär, 2005 23:15
von oxpus
Folgendes:
Finde in der PHP-Datei irgendwas wie

Code: Alles auswählen

$template->assign_vars(array(
und füge danach ein

Code: Alles auswählen

'REMOTE_ADDR' => $_SERVER["REMOTE_ADDR"],
In der TPL-Datei nach obigen Beispiel dann:

Code: Alles auswählen

<table>
     <tr>
          <td>Deine IP ist:></td>
          <td>{REMOTE_ADDR}</td>
     </tr>
</table>
Wenn es aber um die wirkliche IP des Users geht wäre dieses hier in der PHP-Datei korrekter:

Code: Alles auswählen

'REMOTE_ADDR' => $userdata['user_ip'],

Verfasst: Do 10.Mär, 2005 16:20
von Dungeonwatcher
Hi!

Nachdem ich nun Stunden damit verbracht habe es nach deinen Anweisungen zum laufen zu bringen, gebe ich es mal kurz auf. Es funktioniert nämlich nicht. :(

So habe ich verstanden:

Code: Alles auswählen

$template->assign_vars(array(
	'remote_addr' => $_server["remote_addr"]));
Die Angabe "remote_addr" legt ein Keywort/eine Variable fest, welches durch das Ergebnis ersetzt wird. D.h. anstelle der Angabe/der Variable "{remote_addr}" im Template müsste dort in der erstellten HTML-Datei das Ergebnis stehen.

Der Parameter "$_server" ist der Befehl für PHP.

So habe ich es eingetragen:

In der PHP-Datei:

Code: Alles auswählen

// assign template
$template->set_filenames(array(
        'body' => 'system.tpl')); 

// IP-Adresse
$template->assign_vars(array(
	'remote_addr' => $_server["remote_addr"]));


$template->pparse('body');

// standard page footer
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
Im Template:

Code: Alles auswählen

<tr>
<td class="row1" align="left">IP:</td>
<td class="row1" align="left">{remote_addr}</td>
</tr>
Es wird aber nichts angezeigt. Wo ist mein Denkfehler?

Bye/2

Verfasst: Do 10.Mär, 2005 18:39
von oxpus

Code: Alles auswählen

$_server["remote_addr"]
ist so nicht definiert. Das muss groß geschrieben werden, also so:

Code: Alles auswählen

$_SERVER["REMOTE_ADDR"]

Verfasst: Do 10.Mär, 2005 19:47
von Dungeonwatcher
[quote="oxpus - Do 10.März, 2005 18:39";p="25455"]ist so nicht definiert. Das muss groß geschrieben werden[/quote]
Ich fasse es nicht. So funktioniert es tatsächlich. :cool:

Nun wird allerdings als Server-IP die Intranet-IP (192.168.1.2) angezeigt. Lässt sich dort auch die aktuelle InterNet-IP (momentan 83.169.164.95) anzeigen?

THNX

Verfasst: Fr 11.Mär, 2005 00:04
von oxpus
Ich glaube, das geht nicht:
'REMOTE_ADDR'
Die IP-Adresse des Rechners, der die aktuelle Seite angefordert hat.
So der Original-Auszug aus der PHP Offline-Hilfe.
Wenn der Intranet-PC (192.168.1.2) die Seite anfordert und dem Client (83.169.164.95) zur Verfügung stellt, dann kann PHP nur den Intranet-PC, also die IP 192.168.1.2 sehen.
Du kannst es aber auch nochmal mit der Methode des phpBB versuchen, also wie in der common.php aufgeführt:

Code: Alles auswählen

$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv('REMOTE_ADDR') );
$user_ip = encode_ip($client_ip);
Dabei steht $HTTP_SERVER_VARS analog $_SERVER zur Verfügung, die beim Aufruf von PHP (also beim Start eines PHP-Scripts) die gleichen Inhalte haben, aber dennoch getrennt behandelt werden.
Ebenso verhält es sich mit $HTTP_ENV_VARS und $_ENV.