有时候直接$_SESSION['user']['priv']这样访问就可以,不需要将数组提出来($user=$_SESSION['user']),请问这是咋回事?
我的php版本 5.4.22

解决方案 »

  1.   

    在取失败时:var_dump($_SESSION['user']);看看数据,结果是正确的。里面有数据。分开成2步,也可以取到,就是在前面取不到。同方法内,第一次不能这样取。第二次就可以这样取到了。session数据是没有变的。
      

  2.   

    本帖最后由 xuzuning 于 2014-06-12 16:34:52 编辑
      

  3.   

    先排除个外因,会不会是你测试输出$_SESSION['user']['priv']的时候恰好第一次访问还没来的及设置session?
    不能重现咋测试解决
      

  4.   

    你就没怀疑过你代码写错了么!
    $_SESSION['user']['priv'] = '' ; //priv赋值为空,谁取它都是空!
      

  5.   

    $_SESSION 生命周期 默认时间为20分钟明显 超过时间了
      

  6.   

    有時可以,有時不行,應該寫個log,記錄每次的情況,這樣方便debug。
      

  7.   

    在取失败时:var_dump($_SESSION['user']);看看数据,结果是正确的。里面有数据。分开成2步,也可以取到,就是在前面取不到。同方法内,第一次不能这样取。第二次就可以这样取到了。session数据是没有变的。
    ----------
    各位难道没有写过程序么?这样的问题没有碰到过么?我碰到好多次。
      

  8.   

    亲,问题永远在这儿,就是要分2步。一步不行。我讲的测试不能重现,就是写个test.php不能重现。
    实际程序不分二步。结果就不正确。很稳定。
    ----------------
    我在其它地方发贴。还有网上很我和我一样的问题的。
      

  9.   

    第一次var_dump($_SESSION['user']);是否有值? 建议贴出代码以供分析。
      

  10.   

    不能重現,你的測試代碼與運行代碼不同,你不提供代碼如何分析?你加log,沒次讀取時,都輸出
    var_dump($_SESSION['user']);
    var_dump($_SESSION['user']['priv']);
    方便找問題。
      

  11.   

    各位要看代码,这就是真正代码://user为从数据库里取出来的用户对象
    $user=$_SESSION['user'];
    echo $user['priv'] ;正常显示: 100
    // echo $_SESSION['user']['priv'];//显示为空。原来是这行,改成上面2行了。
      

  12.   

    print_r($_SESSION['user']);
    这样同时可以得到数据结构信息,才好做判断的依据
    由于你不能再现错误,只有在对 $_SESSION 赋值的代码中找原因极有可能是从数据库里取出来的用户对象有时是数组,有时是对象
      

  13.   

    写了近10年程序。工作13+,做老大很多年,哪敢犯程序写错的上毛病,还有脸出来见人,直接撞死得了?
    因为奇怪。所以发上来。
    开发windows系统的 看来没你水平高啊!  windows到现在还在打补丁呢,有漏洞就是代码没写好哈~~~!   你的都正确
      

  14.   


    其实我觉得就是在session赋值时出现的问题!
      

  15.   

    这是thinkphp中session函数读取session的代码:            if (strpos($name, '.')) {
                    list($name1, $name2) = explode('.', $name);
                    return isset($_SESSION[$prefix][$name1][$name2]) ? $_SESSION[$prefix][$name1][$name2] : null;
                } else {
                    return isset($_SESSION[$prefix][$name]) ? $_SESSION[$prefix][$name] : null;
                }
    如果session真的有BUG我想TP的用户早就反应了,他读取任何session都是直接读二维的
    我建议楼主先在业务逻辑和session赋值上面找找原因
    另外你说有和你一样问题的,不知道方便发些链接不
      

  16.   

    顶帖留名,坐等PHP BUG报告~~