Hallo,
Eine sehr "schöne" Lücke ist das, denn damit kann man sonstwohin springen lassen. Zum einen ist es nicht notwendig, $_GET["page"] nach $pg umzukopieren.
mach ich aber ;)
und wozu? Jede neue Variable braucht Speicherplatz. Aber das ist nicht entscheidend.
Viel gravierender ist: Durch das Umkopieren wird die Herkunft der Daten verschleiert. Wenn $_GET['var'] in einem Ausdruck auftaucht, sieht man sofort: Aha, Benutzereingabe - aufpassen, nicht vertrauenswürdig. Einer Variablen wie $page sieht man das nicht mehr an.
Zum anderen wäre es sinnvoll, vor dem Springen das in $_GET["page"] übergebene gegen eine Liste erlaubter Werte zu prüfen.
ich habe bis jetzt keine seiten die da nicht benutzt werden sollen.
Es wäre dir also auch egal, wenn ein Scherzkeks sich durch /?page=http%3A%2F%2Fwww%2Egoogle%2Ecom%2F zu Google weiterleiten lässt. Gut, kann dir in diesem Fall auch egal sein, aber das Prinzip lässt sich auf andere Szenarien übertragen, in denen sowas vielleicht weh tut. Daher: Machlässigkeit gar nicht erst angewöhnen.
Obendrein verlangt die Spezifikation, dass beim Location-Header eine vollständige URL anzugeben sei.
und wieso sollte ich eine komplette URL eingeben wenns auch ohne geht?!?
Weil's die Spezifikation vorschreibt, und weil das Argument "wenns auch ohne geht" irgendwo zwischen Zufall und browserseitiger Fehlertoleranz dümpelt. Schon mit der nächsten Browserversion *könnte* es nicht mehr funktionieren, weil es nicht funktionieren *muss*.
Ciao,
Martin
Time's an illusion. Lunchtime doubly so.
(Douglas Adams, "The Hitchhiker's Guide To The Galaxy")