Comment mettre en œuvre la ReturnURL comme SO en PHP?
-
22-09-2019 - |
Question
Il devrait également fonctionner après url rewriting.
Est-il possible? Sinon, je ne peux tout coder en dur.
La solution
Si vous essayez de créer un système de connexion avec la redirection, vous devez utiliser l'en-tête HTTP_REFERER pour savoir où l'utilisateur est venu de sorte que vous pouvez l'envoyer là-bas. La meilleure façon de le faire est, dans votre formulaire de connexion utiliser quelque chose comme ceci:
//- Login.php
<?php
if ($_POST['username'] && $_POST['password'])
{
//- Run username and password verifying script
header("Location: ".$_POST['returnurl']);
}
$RedirectURL = $_SERVER['HTTP_REFERER'];
?>
<form action="/login.php" method="post">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="hidden" name="returnurl" value="<?php echo $RedirectURL; ?>" />
</form>
S'il vous plaît noter que certains fournisseurs d'accès, les navigateurs ou fondés de pouvoir dépouiller l'en-tête de referer, de sorte que vous ne pouvez pas compter sur elle pour fonctionner parfaitement pour chaque utilisateur. Si vous utilisez une instruction if pour vérifier si l'en-tête existe ou non, vous pouvez envoyer les utilisateurs vers la page d'accueil ou autre.
EDIT
Si vous cherchez à utiliser $ _SERVER [ « REQUEST_URI »] il doit être réglé sur l'URL à peu après une ré-écriture si vous utilisez Apache. Si vous utilisez IIS, auquel cas vous devez vérifier $ _SERVER [ « X_HTTP_ORIGINAL_URL »]. Quelque chose comme ceci:
<?php
if (!isset($_SERVER['X_HTTP_ORIGINAL_URL']))
$ReturnURL = $_SERVER['X_HTTP_ORIGINAL_URL'];
else
$ReturnURL = $_SERVER['REQUEST_URI'];
header("Location: /login.php?returnurl=".$ReturnURL);
?>
et
//- Login.php
<?php
if ($_POST['username'] && $_POST['password'])
{
//- Run username and password verifying script
header("Location: ".$_POST['returnurl']);
}
$RedirectURL = isset($_GET['returnurl'] ? $_GET['returnurl'] : "/index.php";
?>
<form action="/login.php" method="post">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="hidden" name="returnurl" value="<?php echo $RedirectURL; ?>" />
</form>