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