将会话变量传递给登录页面不返回会话变量

时间:2016-07-26 20:45:22

标签: php .htaccess session

我在静态页面中设置$_SESSION['url'] = "http://example.com" . $_SERVER['REQUEST_URI'];。我的目标是在成功登录后重定向回到此页面。

我的登录页面:

        if($user->access_level=='Admin'){

        if(isset($_SESSION['url'])) {
            $myurl = $_SESSION['url']; 
        }
        else{
            $myurl = $home_url . "admin/index.php?action=login_success";
        }

    header("Location: {$myurl}");
    }
    else{
        header("Location: {$home_url}index.php?action=login_success");
    }

登录页面中不存在$_SESSION['url'] - 使用var_dump($_SESSION);验证

我在dir中使用以下.htaccess文件和登录页面,但是静态页面比登录目录高两级。

htaccess的:

#Fix Rewrite
Options -Multiviews

# Mod Rewrite
Options +FollowSymLinks
RewriteEngine On
RewriteBase /www/projects/php-login-system/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# used for php pages such as "yoursite.com/login.php" will become "yoursite.com/login/"
RewriteRule ^([a-z_]+)\/?$ $1.php [NC]

2 个答案:

答案 0 :(得分:0)

好的,所以我在我的页面中的各种包含文件的顶部有session_start()。这是在加载会话数据之后但在重定向之前重置会话数据。解决方法是将所有页面的顶部更改为:

if(!isset($_SESSION)){
    session_start();
}

$_SESSION['url'] = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

答案 1 :(得分:-1)

听起来像你没有 在session_start();

位于页面顶部