Seite 1 von 1

Problem mit remote include

Verfasst: 18.10.2006 22:26
von Martin Truckenbrodt
Hallo,
ich habe folgende Code:

Code: Alles auswählen

define('IN_PHPBB', true);

$phpbb_root_path = './cgi/phpBB2/'; //set your path
$album_root_path = $phpbb_root_path . 'album_mod/';

include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

$language = $board_config['default_lang'];

if ( !file_exists($phpbb_root_path . 'language/lang_' . $language . '/lang_album_main.'.$phpEx) )
{
	$language = 'english'; // set your default language
}

include($phpbb_root_path . 'language/lang_' . $language . '/lang_album_main.' . $phpEx);


print "<table align=center>";
print "<tr><th align='center' colspan='3'>". $lang['Recent_Pics'] ."</th></tr>";
print "<tr>";

$sql = "SELECT pic_id, pic_title, pic_desc, pic_cat_id FROM ". ALBUM_TABLE ." ORDER BY pic_id DESC"; 
$picspool = $db->sql_query($sql) or die ("SQL Error"); 

for ($i=0;$i<3;$i++) //set number of pictures for the displayed line
{
	while ($cat['cat_view_level'] != '-1')
	{
		$row = $db->sql_fetchrow($picspool); 
		$sql = "SELECT * FROM ". ALBUM_CAT_TABLE ." WHERE cat_id = '". $row['pic_cat_id'] ."'";
		$result = $db->sql_query($sql) or die ("SQL Error"); 
		$cat = $db->sql_fetchrow($result); 
	}
	$cat['cat_view_level'] = '0';
	print "<td valign='top'><table><tr><td align='center'>" . $row['pic_title'] . "<br /></td></tr><tr><td align='center'><a href='". append_sid($phpbb_root_path ."album_showpage.". $phpEx ."?pic_id=" . $row['pic_id']) ."'><img alt='" . $row['pic_desc'] . "' src='". $phpbb_root_path ."album_thumbnail.". $phpEx ."?pic_id=" . $row['pic_id'] . "'></a></td></tr></table></td>"; 
}

print "</tr>";
print "</table>";
Diese Datei binde ich via include in eine andere Datei der betreffenden Webseite ein. Dies funktioniert prima.

Nun will ich von einer anderen Domain (Webseite) aus die Datei includen. Dazu habe ich folgendes geändert:

Code: Alles auswählen

$phpbb_root_path = 'http://www.meinedomain.com/cgi/phpBB2/'; //set your path
Dies funktioniert leider nicht.
Schon

Code: Alles auswählen

$language = $board_config['default_lang'];
hinterläßt ein leeres $language.

phpinfo ergibt: allow_url_fopen On On

Gruß Martin

Verfasst: 18.10.2006 22:30
von Banger
Servus,
schau doch mal nach, was unter http://de.php.net/include/ über Beispiel 16-5. steht:
...das Skript wird auf dem Remote-Server ausgeführt und danach wird das Ergebnis in das lokale Skript eingebunden.

Verfasst: 18.10.2006 22:34
von Martin Truckenbrodt
Hallo,
ja, und?

Diese Quelle habe ich bereits durch.

Muß IMO was phpBB Spezifisches sein.
Ich will aber nicht ausschließen, dass ich nicht erkenne, was Du mit Deinem Zitat meinst.

Gruß Martin

Verfasst: 18.10.2006 22:52
von Jensemann
Martin Truckenbrodt hat geschrieben: Muß IMO was phpBB Spezifisches sein.
Nee, ist was PHP spezifisches.
Martin Truckenbrodt hat geschrieben: Ich will aber nicht ausschließen, dass ich nicht erkenne, was Du mit Deinem Zitat meinst.
Da gebe ich dir sogar Brief und Siegel drauf das du das nicht erkennt.

Der Code wird auf dem EXTERNEN SERVER AUSGEFÜHRT, das was die Datei ausgibt, wird inkludiert. Machen wir das ganze mal etwas verständlicher anhand eines Beispiels:

Gegeben ist eine Datei incme.php auf dem Host lala.lulu.tld, diese sieht so aus:

<?php
$text = "Martin rallts einfach nichts",
echo $text;
?>

Jetzt inkludierst die du diese Datei, dann wird aber nicht der Code inkludiert, sondern es wäre das selbe als würdest du eine TXT-Datei inkludieren in der nichts anderes steht als "Martin rallts einfach nicht".

Jetzt gerallt? ;-)

Verfasst: 18.10.2006 23:11
von Martin Truckenbrodt
Hallo,
ich denke, jetzt habe ich es verstanden. Verstehe nur nicht, wieso man da auf Grund der völlig unterschiedlichen Arbeitsweise nicht einen extra Befehl kreiert hat. Gehört aber woanders hin ...

Wie läßt sich mein Vorhaben alternativ realisieren?

Gruß Martin

Verfasst: 18.10.2006 23:14
von Jensemann
Martin Truckenbrodt hat geschrieben:Hallo,
ich denke, jetzt habe ich es verstanden. Verstehe nur nicht, wieso man da auf Grund der völlig unterschiedlichen Arbeitsweise nicht einen extra Befehl kreiert hat. Gehört aber woanders hin ...

Wie läßt sich mein Vorhaben alternativ realisieren?
Ich würde sagen mit file_get_contents() und eval()

Verfasst: 18.10.2006 23:16
von Martin Truckenbrodt
Hallo jensemann,
muchas gracias!

Werde ich wohl die nächsten Tage mal probieren. Müde bin ich geh' zur Ruh, ...

Gruß Martin

Verfasst: 19.10.2006 00:21
von Banger
jensemann hat geschrieben:Ich würde sagen mit file_get_contents() und eval()
file_get_contents() liefert aber auch nur den geparsten Output des Zielscripts zurück - letzteres müsste also auch hier PHP-Code als Output liefern.

Um das Ganze mal mit einem Alltagsspruch aus unserem Programmiererbüro zu versehen: "Das willst Du nicht." - das ist ziemlich genau eine Kurzversion von: "Das hat schon seinen Grund, warum das nicht ohne weiteres funktioniert. Ja, durch einen Workaround wäre es möglich, ist aber nicht nur aus Sicherheitsaspekten vollkommen sinnfrei. "

Denk mal drüber nach ;-)

Verfasst: 19.10.2006 00:24
von Jensemann
Banger hat geschrieben:
jensemann hat geschrieben:Ich würde sagen mit file_get_contents() und eval()
file_get_contents() liefert aber auch nur den geparsten Output des Zielscripts zurück - letzteres müsste also auch hier PHP-Code als Output liefern.
ARGH! Klar, der Denkfehler bleibt jetzt aber bitte unter uns, das ist ja echt peinlich. :D

Man kann also im Grunde auch include nehmen, man darf nur keine Endung verwenden die der Remote-Server als PHP ausführt.

Zum restlichen gesagten stimme ich dir natürlich zu.

Verfasst: 19.10.2006 08:19
von Martin Truckenbrodt
Hallo,
es entscheidet ja der Webmaster der Seite, die die Datei include anbietet, entscheiden, ob er es anbietet oder nicht.
Um Angriffe auf dei Serverlast zu vermeiden, müßte man eine Art Autentifizierung einbauen.

Schau'n mer mal!

Danke für Eure Hilfe.

Gruß Martin