页面重定向后会话数据丢失 [英] Session data lost after page redirect

查看:85
本文介绍了页面重定向后会话数据丢失的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在页面重定向后获取简单会话数据值的问题.一个函数检查通过 Post 发送的用户数据,如果它匹配数据库中的值,它将会话数据设置为这些值并重定向到另一个页面:

I'm having problems getting simple session data values to persist after a page redirection. A function checks user data sent via Post and if it matches values in a database it sets session data to the values and redirects to another page:

  if ($login_ok) {
      //set session data                
      $_SESSION ['online'] = 1;
      $_SESSION ['userid'] = $id;
      $_SESSION ['username'] =  $name;
      //redirect to new page
      redirect('start.php');
}

在新页面代码中未设置会话数据.简单测试返回空值,就好像没有设置会话数据一样:

In the new page code the session data is not set. Simple testing returns null values as if the session data wasn't set:

  echo 'Session Login Status: ' . $_SESSION ['online'];
  echo 'Session UserID: ' . $_SESSION ['userid'];
  echo 'Session Username: ' . $_SESSION ['username'];

用上面的 echo 语句替换重定向可以正常工作.在加载任何页面数据之前设置会话数据并激活重定向的事实是否意味着未分配会话变量?

Replacing the redirect with the above echo statements works correctly. Is the fact that the session data is set and the redirect activated before any page data has loaded mean that the session variables are not assigned?

为确保活动会话始终可用,包含文件包含以下代码:

To ensure an active session is always available, an include file contains this code:

 if (session_status() == PHP_SESSION_NONE) {
    session_start();
  }

知道这里有什么问题吗?

Any idea what the issue is here?

非常感谢,千瓦

推荐答案

检查会话是否在进行之前设置

Check if the session is set before progress with

if isset($_SESSION ['online']) and 
    isset($_SESSION ['userid']) and 
    isset($_SESSION ['username'])
{
    echo 'Session Login Status: ' . $_SESSION ['online'];
    echo 'Session UserID: ' . $_SESSION ['userid'];
    echo 'Session Username: ' . $_SESSION ['username'];
} else {
    echo 'Redirect to login or Session expired';
}

而不是重定向试试这个

$uid = $_SESSION['USERID'];
if (isset($uid) || $uid != NULL) 
{
 if (!headers_sent()) {
    header('Location:main.php');
    exit;
    }
    else {
    ?>
    <script>window.location = 'main.php';</script>
    <?php
    }
}

这篇关于页面重定向后会话数据丢失的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆