Crew algemeen |
|
$_SERVER['REQUEST_URI'] bevat de pagina waarop de gebruiker op dat moment zit.
Voorbeeldje:
Je zit op pagina forum/nieuw.php om een nieuw bericht te plaatsen, maar je bent niet ingelogd.
Dan word je naar leden/inloggen.php verstuurd om in te loggen.
Op die pagina staat je location.href... dingetje met $_SERVER['REQUEST_URI'].
Dan pakt PHP dus leden/inloggen.php omdat PHP nou net niet zo slim is dat hij weet dat je naar forum/nieuw.php verstuurd word...
Een oplossing:
Je verstuurd de gebruiker niet naar leden/inloggen.php maar naar leden/inloggen.php?redirect=forum/nieuw.php.
Je kijkt op leden/inloggen.php of er wel/niet een redirect geset is in de url.
Zo ja, een variabele setten met de waarde van $_GET['redirect'].
Zo nee, een variabele setten met de waarde leden/cpanel.php o.i.d.
Voorbeeldje:
<?PHP
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(IsSet($_GET['redirect']))
{
$sRedirect = $_GET['redirect'];
} else
{
$sRedirect = "leden/cpanel.php";
}
// ophalen van username + password
// checken of ze in de database bestaan
if(MySQL_Num_Rows($rResult) == 1)
{
// gebruiker bestaat
// dus we setten een sessie id (alleen voor voorbeeldje...)
$_SESSION['id'] = MySQL_Result($rResult, 0, "id");
echo '<script language="JavaScript" type="text/JavaScript">location.href="'.$sRedirect.'"</script>';
} else
{
// error weergeven dat de gebruiker niet bestaat en zo.
}
} else
{
?>
formulier
<?PHP
}
?>
<?PHP if($_SERVER['REQUEST_METHOD'] == "POST") { if(IsSet($_GET['redirect'])) { $sRedirect = $_GET['redirect']; } else { $sRedirect = "leden/cpanel.php"; } // ophalen van username + password // checken of ze in de database bestaan { // gebruiker bestaat // dus we setten een sessie id (alleen voor voorbeeldje...) echo '<script language="JavaScript" type="text/JavaScript">location.href="'.$sRedirect.'"</script>'; } else { // error weergeven dat de gebruiker niet bestaat en zo. } } else { ?> formulier <?PHP } ?>
Je zou ook nog kunnen kijken of de pagina $_GET['redirect'] wel echt op je server staat voor extra veiligheid.
edit; @Proximus, inderdaad, foutje...
Bedankt voor het opmerken, zal het meteen aanpassen:) . |