【发布时间】:2016-10-17 06:01:02
【问题描述】:
我已经为此工作了一段时间,但似乎无法确定。会话正在工作我在访问或设置会话的每个页面的顶部都有 session_start()。
首先,我在登录脚本中使用了三个会话变量 $_SESSION['id']、$_SESSION['user'] 和 $_SESSION['start'],一切正常。我又添加了两个会话 $_SESSION['patron'] 和 $_SESSION['business']。
$_SESSION['user'] = $user_info['email'];
$_SESSION['id'] = $user_info['id'];
$_SESSION['patron'] = $user_info['patron'];
$_SESSION['business'] = $user_info['business'];
$_SESSION['start'] = time();
redirect_to('../page.php');
所有会话都是在登录脚本运行并正确重定向后设置的,但是当我再次重定向时我会丢失其中一些会话,只留下 $_SESSION['user']、$_SESSION['start'] 和 $_SESSION['id '] 会话仍然设置。我不明白为什么只有一些仍然设置,而另一些则丢失了。
另一个问题是我将会话 $_SESSION['start'] 名称更改为 $_SESSION['time'] 并且现在在我的登录脚本运行后重定向时该会话丢失。
这是我的重定向脚本:
function redirect_to($location = NULL) {
if($location != NULL) {
define('URL', 'http://www.website.com/');
header('Location: ' .URL. $location);
exit();
}
}
任何建议将不胜感激。
【问题讨论】:
-
你在使用输出缓冲区吗?同时显示您的登录脚本
-
session_start,在所有页面上?
-
您的脚本是否在网站的不同子目录中?
-
您可以尝试编写一个新的分离脚本,它使用会话并重定向到自身或另一个脚本,显示所有会话变量。如果它有效,您需要检查在应用程序中重用会话的所有代码。像这样的东西:
session_start(); if(isset($_GET['redirected']){var_dump($_SESSION;} else { $_SESSION=$_GET; header('Location: '.$_SERVER['PHP_SELF'].'?redirect=1');}
标签: php function session redirect header