在标题重定向中使用Session变量时遇到问题

时间:2016-01-03 23:04:57

标签: php session

如果用户未登录,我将使用以下内容锁定位置,以便在登录成功后我可以返回此位置

$_SESSION['returnURL'] = htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES);

我在标题重定向中使用此会话变量没有运气。此变量的内容目前为:/event.php?title=Test&id=16

if($sql->num_rows==1) {
    if (isset($_SESSION['returnURL'])){
        $_SESSION['username'] = $username;
        header("location:$_SESSION['returnURL'])";
        unset($_SESSION['returnURL']);
    } else {
        $_SESSION['username'] = $username;
        header('location:home.php');
    }
} else {
    die(header("location:login.php?login-failed=true&reason=not_found"));
}

当我将$_SESSION['returnURL']的内容替换为$_SESSION['returnURL']中存储的地址时,它的效果非常好。当我使用带有标题的$_SESSION['returnURL']变量时,有些东西会出现问题。

1 个答案:

答案 0 :(得分:1)

这一行的问题:

header("location:$_SESSION['returnURL'])";

修复结束括号:

header("location:$_SESSION['returnURL']");

在引用的字符串中使用花括号作为数组变量:

header("location:{$_SESSION['returnURL']}");

此外:

htmlspecialchars('/event.php?title=Test&id=16', ENT_QUOTES);
// Results in: /event.php?title=Test&id=16

哪个是不同的网址。你不需要在这里转换为html实体。