phpbar.de logo

Mailinglisten-Archive

[php] header("Location: ...") tut nix

[php] header("Location: ...") tut nix

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Don Sep 27 07:40:08 CEST 2007


Hallo Hannes,

Am Donnerstag, 27. September 2007 schrieb Hannes H.:
> > Ausserdem sei noch angemerkt, dass die URL, die in einem
> > Location-Header angegeben wird laut http-Standard absolut sein
> > muss. Die meisten Browser tun es auch relativ, aber es ist eine
> > potentielle Fehlerquelle...
>
> Ich fühle mich gerade hin- und hergerissen: Auf der einen Seite
> wollte ich selbiges auch gerade anmerken, muss aber im selben
> Augenblick zugeben, dass ich persönlich auch in vielen Fällen zu faul
> bin, einen absoluten Pfad zusammen zu basteln.

Faulheit als Argument, um gegen eine Standard zu verstoßen?! 
HANNES!!! :-))) Wenigstens weiß ich jetzt, warum der IE gegen soviel 
Standards verstößt. :-D

> Wie hoch schätzt du das Risiko wirklich ein, dass es da ein Problem
> geben könnte? Ich denke, es ist zu vernachlässigen. Ich kenne keinen
> Browser, der relative Angaben nicht unterstützen würde.

Es ist nicht korrekt. Also sollte man es nicht falsch machen. Dies gilt 
alleine schon deswegen, weil etwas, was nicht dem Standard entspricht, 
ohne Ankündigung von heute auf Morgen einmal nicht mehr funktionieren 
kann. Und dann kannst Du dafür niemanden anderes verantwortlich machen, 
als Dich selbst.

Hinzukommt, daß man sicherlich dann nicht nur in diesem Punkt so 
vorgeht, sondern in anderen auch. Das endet in prinzipiell schlechtem 
Programmierstil. Da wird einem über kurz oder lang einmal etwas um die 
Ohren fliegen, und man kann nur hoffen, daß es eine Kleinigkeit ist, 
die man auch schnell korrigieren kann.

Jemand, der professionell Software schreibt und vertreibt, kann sich 
sowas nicht erlauben, sonst setzt er die Stabilität seiner Software und 
das Vertrauen seiner Kunden aufs Spiel.

> Ich habe mir schon oft Gedanken darüber gemacht, wie aufwendig es
> wäre, ein PHP-Modul (PECL?) zu schreiben, dass relative Pfade in
> header() in absolute umschreibt. Die Alternative wäre natürlich eine
> eigene Funktion in PHP zu implementieren, die man anstatt von
> header() nutzt ...

Eine solche Funktion zu schreiben, ist eigentlich sehr einfach und 
völlig unaufwendig. Da gibt es in CM-Systemen etc. mit Sicherheit schon 
zig Beispiele oder ähnlich gelagerte Beispiele. In diesem Fall 
schnappst Du Dir die URL der aufgerufenen Seite und wendest einfach den 
relativen Pfad darauf an. :-)


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive