Hallo!
Ich habe ein LogIn Skript, das immer aufgerufen wird, wenn Authentifikation verlangt wird.
Dem LogIn Skript übergebe ich u.a. die URL, damit es den User nach erfolgreichem LogIn wieder an die aufzurufende Seite zurückschicken kann. Da sowohl LogIn-Skript als auch die aufzurufende Seite Parameter verlangen, codiere ich den Referr mir urlencode(), damit login.php den ganzen String Referr als einen einzigen Parameter erkennt (und später - nach urldecode() - wieder in seine Bestandteile zerlegt).
Soweit, so gut. Aber wenn ich nach der Weiterleitung zu login.php den Parameter Referr auswerte, ist dieser nicht url-codiert, sondern Klartext!
Ist dieses Verhalten normal? Ich hätte erwartet, dass ich die Variable Referr zuerst wieder mit urldecode dekodieren müsste (es steht ja auch nix dergleichen in der Doku).
Verhalten bei rawurlencode und urlencode ist dasselbe. Ebenfalls egal, ob ich per header() oder per <a href=... weiterleite!
Danke, Stefan
Ich habe ein LogIn Skript, das immer aufgerufen wird, wenn Authentifikation verlangt wird.
Dem LogIn Skript übergebe ich u.a. die URL, damit es den User nach erfolgreichem LogIn wieder an die aufzurufende Seite zurückschicken kann. Da sowohl LogIn-Skript als auch die aufzurufende Seite Parameter verlangen, codiere ich den Referr mir urlencode(), damit login.php den ganzen String Referr als einen einzigen Parameter erkennt (und später - nach urldecode() - wieder in seine Bestandteile zerlegt).
PHP-Code:
//Nach LogIn Weiterleitung auf Seite gothere.php;
// diese Seite erwartet drei Parameter param1, param2 und param3
$referr = "./gothere.php?param1=eat¶m2=my¶m3=shirt";
//ergibt: .%2Fgothere.php%3Fparam1%3Deat%26param2%3Dmy%26param3%3Dshirt
$referr = urlencode($referr);
//ergibt: login.php?Referr=.%2Fgothere.php%3Fparam1%3Deat%26param2%3Dmy%26param3%3Dshirt
$url = "login.php?User=".$uname."&Referr=".$referr;
//Weiterleitung zum Login
header("Location: ".$url);
//oder auch ausprobiert - selbes Resultat
//echo "<a href=".$url.">weiter</a>";
PHP-Code:
if (get_magic_quotes_gpc() == 1) {
$referr = stripslashes($_GET['Referr']);
} else {
$referr = $_GET['Referr'];
}
// ergibt: ./gothere.php?param1=eat¶m2=my¶m3=shirt
// und nix codiertes!
echo "Referr: ".$referr;
Verhalten bei rawurlencode und urlencode ist dasselbe. Ebenfalls egal, ob ich per header() oder per <a href=... weiterleite!
Danke, Stefan
Kommentar