Mailinglisten-Archive |
Hi Matthias, Am Mittwoch, 7. Dezember 2005 07:14 schrieb Matthias Stierli: > Hallo Lutz > > > jein. $_GET['id'] steht nicht in include(http://....php); zur Verfügung, > > wenn die Ausführung des PHP-Codes auf dem externen Rechner stattfindet. > > In diesem Fall versuche mal: > > > > include(http://....php?id=1); > > Ist bei dieser Art (http) include die Ausführung nicht zwingend auf dem > anderen Server und verfügt deshalb nicht über die entsprechenden Variablen > oder verfügt er über die Variablen, wenn die Seite auf dem gleichen > Rechner liegt, aber trotzdem mit "http://..." aufgerufen wird? die Antwort ist wieder: Jein... ;-) Ja, es erfolgt zwingend auf dem anderen Server die Ausführung des PHP-Codes, sofern die Datei dort durch den PHP-Parser geschickt wird. Bei der Dateiendung .php ist dies standardmäßig der Fall. Aber: Wenn die PHP-Datei auf dem anderen Server PHP-Code generiert, kann dieser wiederum in der einbindenden Datei ausgeführt werden! Ich habe mal ein Beispiel programmiert: ================================================== DATEI 1: ================================================== <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Demo: Include über HTTP</title> </head> <body style="font-family: Verdana, Arial, Helvetica"> <h1>Demo</h1> <h2>Include über HTTP</h2> <hr /> <h3>1. Datei test1.php:</h3> <?php highlight_file('test1.php'); ?> <hr /> <h3>2. Datei test2.php:</h3> <?php highlight_file('test2.php'); ?> <hr /> <h3>3. test1.php inkludiert test2.php über HTTP:</h3> <?php $sVarInTest1 = 'Dieser Test steht in test1.php, wurde nicht an test2.php übergeben, wird aber mit dem von test2.php zurückgelieferten Code in test1.php ausgegeben. :-)'; include('http://'. $_SERVER['HTTP_HOST'].'/test2.php?sVarInGet='.urlencode($_SERVER['REQUEST_URI'])); ?> <hr /> <p><i>Lutz Zetzsche / 07.12.2005</i></p> </body> </html> ================================================== DATEI 2: ================================================== <?php if (isset($_GET['sVarInGet']) && $_GET['sVarInGet'] == '/test1.php') { echo('<p>Die Datei '.$_SERVER['REQUEST_URI'].' wird über HTTP in die Datei '.$_GET['sVarInGet'].' inkludiert.</p>'); echo('<p>Sie gibt selbst den Inhalt des ihr übergebenen Parameters <i>sVarInGet</i> aus und liefert PHP-Code an die Datei '.$_GET['sVarInGet'].' zurück, mit dem diese wiederum den Inhalt der in ihr enthaltenen Variablen <i>$sVarInTest1</i> ausgegeben kann. $sVarInTest1 existiert nur in '.$_GET['sVarInGet'].' und wird nicht an '.$_GET['sVarInGet'].' übergeben.</p>'); echo('<p><i style="color: #ff0000;">// Ausgabe in test2.php</i><br /> <b>$_GET["sVarInGet"]:</b><br /> <span style="color: #0000ff;">'. $_GET['sVarInGet'].'</span></p>'); } echo('<?php echo("<p><i style=\"color: #ff0000;\">// Ausgabe in test1.php</i><br /> <b>\$sVarInTest1:</b><br /> <span style=\"color: #0000ff;\">". $sVarInTest1."</span></p>"); ?>'); ?> ================================================== Das Ergebnis kannst Du Dir vorübergehend einmal hier angucken: http://www.sea-rescue.de/test1.php Ich werde es nachher wieder entfernen, weil ich extra dieser Datei dafür allow_url_fopen erlauben muß, was nicht die Standardeinstellung auf meinem Server ist... ;-) Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive