Hallo,
was Du brauchst, ist eine HTTP-Weiterleitung. Christopher wollte Dir genau das zeigen, jedoch sind ihm ein paar Flüchtigkeitsfehler unterlaufen.
Eine HTTP-Weiterleitung verschickst Du als Feld im HTTP-Header. Daher darf noch keine Ausgabe vom Script produziert worden sein.
Ein Location-Header wird so gesendet:
Header ("Location: " . $uri);
$uri muss laut Standard eine absolute URI sein. Einige Browser interpretieren zwar auch relative URIs, aber das ist schlichweg falsch.
Desweiteren: Auf die Seite, auf die weitergeleitet wird, wird dann per GET vom Browser zugegriffen. (also nicht POST wie es üblich ist bei Formularen)
Also:
function Leite_Weiter ($wohin_relativ) {
$dn = dirname ($_SERVER["PHP_SELF"]);
if (substr ($dn, -1) != "/") $dn .= "/";
Header ("Location: http://" . $_SERVER["HTTP_HOST"] . $dn . $wohin_relativ;
exit;
}
Diese Funktion kannst Du dann so aufrufen:
Leite_Weiter ("index.php?a=b");
Danach wird die Programmausführung beendet.
Du musst bloß sicherstellen, dass der User *nicht* direkt über die IP auf den Server zugreift. (sofern das mit virtual hosts überhaupt möglich ist) [1]
Grüße,
Christian
[1] Das Problem hatte ich schon mal, dass dann in $_SERVER["HTTP_HOST"] der Hostname und nicht die IP stand und dann hat der Session-Cookie natürlich nicht mehr gegriffen.