PHP:重定向到相同的URL后会话丢失

时间:2013-06-08 23:27:59

标签: php redirect header

我有一个位于?action = panel的登录表单,显示了一个“有趣”的行为:

我使用一个名为performLogin的函数来检查数据库,为了便于阅读,我遗漏了大部分代码。

function performLogin()
{
// check for valid login and such
  if ( valid )  // fake metacode
  {
    $_SESSION['user_id'] = $user_id;
    header("Location: ?action=panel" );
    exit();
  }
}

如果我直接调用此函数,它将检查,更新会话并在工作会话中重定向。

现在有时我必须使用以下的旧格式转换用户:

function convert()
{
// do some DB stuff
  if ( converted )  // fake metacode
  {
     performLogin();
  }
}

这是东西破裂的时候。我可以在重定向之前插入一个断点,_SESSION将是应该的,在允许重定向后它将消失。请记住,直接调用performLogin始终有效。

index.php中执行的第一件事:

session_name("project_session");
session_start();

但它变得更好了:

将重定向更改为“?action = panel”之外的任何内容(包含或不包含前面的域)都可以正常工作。 此外,如果我评论重定向并手动转到?action = panel,它就可以工作。

到目前为止我尝试过的事情:

带有和不带域名/网址的

-redirect 在重定向之前:(其中一个或多个)

-sleep(2);

-session_write_close();

-session_regenerate_id(真);

0 个答案:

没有答案