Mailinglisten-Archive |
Hallo Liste, Norbert Pfeiffer <norbert_(at)_itbw.de> schrieb am Montag, 26. November 2001, 08:17: > oops, > - wenn Du mit haeder(); umleitest, > schickt Dein Browser ueberhaupt nix mit, > WEIL: das ist eine serverseitige Umleitung, die dem Browser unbekannt > ist. Das kannst Du auch leicht nachpruefen, da diese Adresse in der > History vom Browser nie auftaucht. ooops, wenn ich mit header("Location: ...") umleite, sendet sehr wohl der Server etwas an den Browser. Und diese "Seite" (eigentlich ist es keine, da nur Header-Daten gesendet werden) ist dem Browser auch bekannt, nur zeigt er dir das nicht. Das ist auch gut so, denn sonst würde deine History bald überquellen vor lauter Umleitungen. Der Server sendet an den Browser nämlich das "302 Found", was in etwa "übersetzt" bedeutet: "Die von dir angeforderte Seite ist zwar nicht hier, aber ich weiß wo sie ist, folge der Location-Angabe, die ich dir gerade eben mitgesendet habe, dann findest du deine gewünschte Seite." Quasi ein Wegweiser im Netz, der sowohl auf den gleichen Server, als auch auf einen anderen Server im Netz verweisen kann. Daß der Server bei header("Location: ...") etwas an den Browser sendet (der Browser also auch etwas davon mitbekommt), sagt ja schon die Funktion header() aus! "Es gibt zwei Spezialfälle von Header-Aufrufen. Der Erste ist der 'Location'-Header. __Es wird nicht nur der Header an den Browser geschickt__, der Apache ..." ( http://www.php3.de/manual/de/function.header.php ) Das Umleiten kommt übrigens sehr sehr häufig vor, z.b. wenn du nur http://www.php-center.de/tutorial , also den URL ohne den Slash (/) am Ende in deinen Browser eingibst, dann sendet der Browser ein Get-String ala: "GET /tutorial" an den Server, und dieser antwortet mit "301 Moved Permanently" (leicht anders als "302 Found"). Darauf hin schaut dein Browser in die vom Server in der Location-Zeile des Headers angegebene Adresse, und ruft diese anschließend sofort auf, ohne das du den Browser auch nur flackern siehst. In diesen Beispiel wäre die Location-Angabe dann einfach nur: Location: http://www.php-center.de/tutorial/ (also diesmal mit / am Ende, da es sich bei "tutorial" um ein Verzeichnis handelt). > Und wenn da noch ein Proxy dazwischen ist (wozu), bekommt der das auch > nur nicht mit, es sagt ihm ja keiner was... ;-) Der Proxy ist lokal, und nur dazu da, damit ich eben solche Dinge sehe, die dir (bisher?) verborgen bleiben. ;-) > - wenn Du mit readfile(); externe Daten anforderst, > weiss der Browser auch nix davon und der externe Server wird von dem > Script kontaktiert, in dem readfile(); steht, das logt er auch. Das ist richtig, aber das eine hat mit dem anderen absolut nichts zu tun. > - last not least, wenn Dein Umleitungsscript innerhalb des mit > Sessions geschuetzten Bereiches liegt, hattu Pech, muttu aendern... Es ist vollkommen egal, wo die beiden Bereiche liegen. Sobald du von einem Session-Bereich direkt oder über Umleitung mit header() in den Nicht-Session-Bereich gehst, sendet der Browser den Referer aus dem Session-Bereich mit! Etwas anderes ist es, wenn du mittels HTML-Anweisung umleitest, also z.b. die Datei umleiten.html aufrufst, in der steht: <meta HTTP-EQUIV="refresh" CONTENT="30; URL=http://www..."> Das funktioniert aber eben nur bei Links, nicht aber bei per <img...> eingebundenen Bildern! (und darum ging es ja hier eigentlich mal...) Du solltest dir dringend mal die grundlegenden Funktionen des HTTP anschauen, z.B. hier: http://www.rfc-editor.org/rfc/rfc2616.txt Ist übrigens ne sehr gute Nacht Lektüre ;-) Tschüß, Lars
php::bar PHP Wiki - Listenarchive