Moin!
header("Location: $url");
header("Referrer: $ref");Leider nein.
Es müsste die URL angezeigt wrden, von der aus der Redirekt vom Client abgeschickt wird. Denn die Seite erzeugt den Request, so als würdest Du auf einen Link klicken. Ist eigentlich ein gutes Zeugnis für den Client, wenn es nicht geht. Du müsstest einen doppelten Redirect bauen. das müsste gehen.
Mal abgesehen davon, dass man serverseitig den Referrer sowieso nicht setzen kann: Ein Redirect ist hier vollkommen falsch.
Ein Redirect bewirkt, dass der Client seinen Request wiederholt - diesmal an die im Redirect angegebene URL.
Und da werden logischerweise sämtlichen Header, die man als Client erlaubterweise mitsenden darf, auch mitgesendet (Cookies und HTTP-Authentifizierung beispielsweise nicht - den Referer schon).
Es hilft also nix, zwei oder auch hundertmal weiterzuleiten (es gibt ein empfohlenes Maximum, welches IIRC bei 15 Weiterleitungen für einen Request liegt - das ist aber auch schon verdammt viel) - die Lösung muß zwingend darin bestehen, eine neutrale "echte" HTML-Seite auszuliefern, auf der dann ein Meta-Refresh stattfindet. Erst dann wird der Client den Referrer dieser Zwischenseite ausliefern.
Die Alternative wäre, auf Session-IDs in der URL zu verzichten und zwingend Cookies vorzuschreiben. Dann hätte man das Referrer-Problem ebenfalls nicht.
- Sven Rautenberg