还应该URL后工作重写。

这可能吗?否则我只能硬编码的一切。

有帮助吗?

解决方案

如果你想创建一个登录系统重定向您需要使用HTTP_REFERER头,找出使用者来自这样你就可以把他送回那里。要做到这一点,最好的办法是,在你的登录表单的使用是这样的:

//- 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>

请注意,某些ISP,浏览器或代理会剥离出Referer标头,所以你不能依靠它完美地为每个用户的工作。如果使用if语句来检查头部是否存在,你可以将这些用户发送回主页或什么的。

修改

如果你正在寻找,如果你正在运行的Apache使用$ _ SERVER [“REQUEST_URI”]应该设置为漂亮的URL重写后。如果你正在运行IIS,在这种情况下,您需要检查$ _ SERVER [“X_HTTP_ORIGINAL_URL”]。是这样的:

<?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);
?>

//- 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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top