PHP externe Dateinen einschließen

Kann man mit PHP ein scribt schreiben, dass Dateien vom fremden servern simuliert?

Hier ein Beispiel:
der Webspace auf www.meineseite.de ist voll.
Ich möchte bei einem free webspace Provider Bilder speichern, diese aber nicht als

einbinden sondern als

einbinden.
In einer configdatei steht dann
1=‚http://www.freeprovider.com/home/userxy/
2=’…’ …

Sollte also freeprovider.com sein angebot einstellen;
kann ich in der configdatei einfach
1=‚www.neuerprovider.de/home/user/
hinschreiben und den selben Inhalt hochladen, und auf der stelle würden alle Links wieder funktionieren.

Vielen Dank im Voraus
TOM

reichlich komplex das ganze
wenns Bilder sind dann schätz’ ich ists am besten, wenn Du den passenden Header mitschickst und die Dateien mit fopen oder file Befehl weitergibst. Bin mir da aber grade nicht so ganz sicher, ob das die besten Möglichkeiten sind… Wenn ich mich recht erinnere hat auch mal jemand hier mit fsockopen gearbeitet, aber das ist denk ich nicht ganz so einfach…

wenns eine einfache html oder textdatei wäre, dann würde das mit fopen oder file recht simpel zu lösen (einfach mal nachschlagen).
Allerdings verwenden solche Provider gerne mal Scripte, die überprüfen von welcher Seite aus Bilder o.ä. geöffnet wurden und zeigen diese dann nicht an oder löschen diese wieder vom Webspace…

HTH
Munich

wie meinst du das? komplex?
ich dacht eher, das das ein ein- zwei zeiliger text wird.

also dazu muss ich sagen, dass ich noch nie mit php gearbeitet habe.

bin grade dabei mir das alles selbst beizubringen.
Kannst du mir sagen, wo man soetwas z.B als Tutorial findet.

Es währe doch sicher ne alternative wenn man in ner config datei wie bereits beschrieb schreibt
1=meinprovider.com
2=…
und dan der bilderlink so aussehen würde

<?php echo"

verzeihe den wahrscheilich inkorekten inhalt in der mitte- wie gesagt: ich sammele grade erste erfahrung mit php.
Bye TOM

Hallo,

Kann man mit PHP ein scribt schreiben, dass Dateien vom
fremden servern simuliert?

Die einfache Antwort ist ja! Es gibt aber zumindest zwei Methoden. Eine hat Munich genannt, da geht es um ein tunneling mittels php. Dazu brauchst du dir fopen() auf php.net anzuschauen, dann wird eigentlich alles klar.

Die andere, die ich gerne vorschlagen würde, die auch sehr elegant sein kann, wäre über htaccess, wenn du rewrite_mod eingeschaltet hast (meist entscheidet der sitebetreiber darüber):
Erst einmal der Link:
http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html

Dabei gibt es wieder einen Unterschied: soll der Server selbst vom anderen Server die Datei tunneln (also als proxy fungieren) oder willst du den client (browser) lediglich weiterleiten?

Beim einfachen Weiterleiten, kannst du entweder diese Syntax benutzen:
RedirectMatch (.*).jpg http://www.anotherserver.com$1.jpg

Um das zu verstehen, müsstest du dich in regular expressions einarbeiten, wenn du willst, suche ich dir einen netten Link, aber es geht grundsätzlich um folgendes:

(.*) bedeutet eine Suche (oder matching) nach allen möglichen Zeichen. Diese werden nun intern in eine Variable festgehalten ($1).
.gif steht eigentlich für „.gif“, der Punkt, der normalerweise für „irgendein Zeichen“ steht, muss escaped werden mit dem „“.
Wenn er also eine Nachfrage (bspw /images/boo.jpg also $1="/images/boo") matchen kann, dann wird die Nachfrage umgeschrieben (in http://www.anotherserver.com/images/boo.jpg) und diese neue URL wird dem client zugeschickt, der sie dann aufsucht.

Das andere Vorgehen arbeitet mit denselben Regeln (regular expressions), hat aber den Vorteil, dass der Client nie wissen kann, woher die Datei eigentlich kommt. Man muss sich allerdings vor Augen halten, dass sie den Nachteil hat, dass es teilweise länger dauern kann und der traffic über die webseite läuft (sowohl download vom anderen Server als auch upload zum client). Die Schreibweise sieht folgendermassen aus:

RewriteRule ^(.*).jpg http://www.anotherserver$1.jpg [P]

Das [P] steht dabei für proxy.

Ich hoffe das waren nun einige Stichworte, die dir weiterhelfen können.

Gruss, Omar Abo-Namous

nenene so leicht ist das nicht…

wie meinst du das? komplex?
ich dacht eher, das das ein ein- zwei zeiliger text wird.

das sicher nicht.

also dazu muss ich sagen, dass ich noch nie mit php gearbeitet
habe.

dann solltest Du Dich erst mit kleineren Scripten (mit p :wink:) in die Materie einarbeiten… Kleine counterscripte, ein Gästebuch oder sowas…

bin grade dabei mir das alles selbst beizubringen.
Kannst du mir sagen, wo man soetwas z.B als Tutorial findet.

wie schon gesagt - am besten nimmst Du erst mal schattenbaum, dann lohnt auch meistens auf php.net nachzuschlagen. Übrigens gibts da die gesamte Doku als chm File runterzuladen. Das würde ich Dir empfehlen…

Es währe doch sicher ne alternative wenn man in ner config
datei wie bereits beschrieb schreibt
1=meinprovider.com
2=…
und dan der bilderlink so aussehen würde

Wenn Du was in dem Stil definieren willst dann müsstest Du das mit richtigen Variablen machen also etwa
$1=…
$2=…
allerdings funktioniert das unten so nicht so.

<?php echo"<img
scr="+§config.php?server=1+"/bilder/meinbild.jpg" ?\> verzeihe den wahrscheilich inkorekten inhalt in der mitte- wie gesagt: ich sammele grade erste erfahrung mit php. Bye TOM

erstens mal wenn Du echo-Ausgaben mit Variablen kombinierst brauchst Du grundsätzlich nicht " setzten um dann die Variablen zu schreiben. Wenn doch, dann geht das eher so:
echo „hallo „.$welt.“ hier bin ich“;
also mit . statt + aber wie gesagt - idR braucht man das nicht.
In der URL übergebene Variablen musst Du dabei aber immer mit $_GET[‚variable‘] ansprechen. $1 würde bei einem unsicher konfiguriertem Server allerdings auch gehen. Kann aber zu Problemen führen, wenn Du mal mit $_POST-Übergaben arbeiten solltest.
Und dann müsste es halt immernoch heissen
if ($_GET[‚server‘] == 1) $usethisserver = $1
elseif ($_GET[‚server‘] == 2) $usethisserver = $2
usw.
Aber wieder ne kleine Gemeinheit: Variablen dürfen nicht mit ner Zahl anfangen (wenn ich mich grade recht erinnere ^^). Also eher $var1 und $var2 verwenden…
Nichtsdestotrotz weiss der Client so nichts damit anzufangen und eine umsetzung auf Deinem Webserver bleibt Dir nicht erspart - wenn Du das eben wirklich so anwenden willst…

Ich hab auch schon gelesen, daß man variablen nich mit ner Zahl beginnen lassen kann. Aber dollen sie ja auch nicht.
In Delphi würde das was ich hier werreichen will eine „Array of string“ Variable sein.
in der config datei müsste bei delphi dan noch nichtmal
1=server.de
stehen, sondern die datei cofig würde in den Array of String übergeben.

Wenn meine array „server“ hießen, würde das heißen, wenn die ersten beiden einträge in der configdatei so aussähen:

www.provider1.de
www.provider2.de

die Variablen sehen so aus:

server[0]=www.provider1.de
server[1]=www.provider2.de

Da Delphi die erste Zeile immer als Zeile 0 liest ist die variable server[0] gleich der ersten Zeile.

Gibt es bei PHP auch so etwas?

sicher
wenn Du aus Dateien auslesen würdest wäre das dann wieder der file-Befehl. So z.B. würde man alle Zeilen einer Datei ausgeben können:

$file=file("test.php");

for($i=0;$i";
 echo $file[$i];
 echo " ";
 }

also genau das gleiche wie Dein delphi in php ABER…
Wenn danach noch Zeilen kommen, dann ist hintendran immernoch der String für den Zeilenumbruch. idR wird der durch \n dargestellt.
Wenn in Zeile 1 also „Mammut“ stehen würde, dann würde eine Abfrage
if ($file[‚1‘] == „Mammut“)
false zurückliefern.
besser definiert man sich innerhalb von php gleich seine Variablen. Da kann man schliesslich auch arrays erstellen. Am einfachsten auf diese art und weise:

$array[‚0‘] = „Mammut“;
$array[‚1‘] = „Papa“;
$array[‚hans‘] = „Hexe“;
etc.