【问题标题】:PHP Sessions Losing Half on Redirect重定向时 PHP 会话丢失一半
【发布时间】: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


【解决方案1】:

解决了!!!

我在这个项目上工作太久了...我忘记了我有一个清除会话的功能。它取消设置由表单提交创建的会话。我有一个包含要忽略的会话名称的数组,我将它们排除在外。因此,每次刷新页面时,都会取消设置这些会话。我很抱歉浪费了你的时间。我完全忘记了。我为此工作了大约两个小时....跛脚。

【讨论】:

    猜你喜欢
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多