我在静态页面中设置$_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]
答案 0 :(得分:0)
好的,所以我在我的页面中的各种包含文件的顶部有session_start()。这是在加载会话数据之后但在重定向之前重置会话数据。解决方法是将所有页面的顶部更改为:
if(!isset($_SESSION)){
session_start();
}
$_SESSION['url'] = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
答案 1 :(得分:-1)
听起来像你没有 在session_start();
位于页面顶部