Question

Il devrait également fonctionner après url rewriting.

Est-il possible? Sinon, je ne peux tout coder en dur.

Était-ce utile?

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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top