2013-03-15 141 views
0

嗨,伙计们我在php wordpress站点中声明了一个变量会话,但是在5分钟没有导航之后,它失去了值,但会话仍然是活动的,并且php.ini中的session.gc_maxlifetime设置为默认1440秒(24分钟)。这里是我的代码:PHP会话变量到期

public function __construct() { 

    echo '<script>console.log("0: '.session_status().'")</script>'; 

    if (($_SESSION['logged'] != null) && (isset($_SESSION['logged']))) 
    { 

     self::$profile = $_SESSION['logged']; 
     self::$favoriteTeam = self::$profile->favorite_team; 

     echo '<script>console.log("1: '.self::$profile->fb_user_id.'")</script>'; 
     echo '<script>console.log("2: '.self::$profile->favorite_team.'")</script>';  
     echo '<script>console.log("3: '.self::$favoriteTeam.'")</script>';  

    } 

} 


public function(){ $_SESSION['logged'] = self::$profile = $user; } 

更新:我忘了提,这是一个WordPress的项目,是的,它保存到会话变量的内容,如果我尝试调试:

echo '<script>console.log("1: '. $_SESSION['logged'].'")</script>'; 
+0

这通常是C++或C#:$ _SESSION [ '登录']!= NULL。在PHP中,这通常是isset($ _ SESSION ['logged']) – 2013-03-15 08:12:33

+0

好吧,我尝试了一个简单的代码这样http://www.kanasolution.com/2011/01/session-variable-in-wordpress/和会话变量持续超过5分钟,所以我会寻找另一个解决方案...只保存一个布尔值并从数据库加载detas。感谢所有 – 2013-03-15 10:39:04

回答

1

有启动会话之前,您使用该值

public function __construct() { 

    session_start(); 

    echo '<script>console.log("0: '.session_status().'")</script>'; 

    if (($_SESSION['logged'] != null) && (isset($_SESSION['logged']))) 
    { 

     self::$profile = $_SESSION['logged']; 
     self::$favoriteTeam = self::$profile->favorite_team; 

     echo '<script>console.log("1: '.self::$profile->fb_user_id.'")</script>'; 
     echo '<script>console.log("2: '.self::$profile->favorite_team.'")</script>';  
     echo '<script>console.log("3: '.self::$favoriteTeam.'")</script>';  
    } 
} 

public function() 
{ 
     $_SESSION['logged'] = self::$profile = $user;  
} 
+0

我现在就试试吧,session_start它是在索引顶部声明的,我应该按照你的建议重新声明吗? – 2013-03-15 08:24:05

+0

仍然不起作用:( – 2013-03-15 08:34:04

1

这可能是因为cookie生存期设置为低。检查this link

也别忘了session_start()

尽量不要强制设置为$用户()

if (isset($user) || !isset(self::$profile)) { 
    $_SESSION['logged'] = self::$profile = $user; 
} 
+0

Cookie的生命周期它被设置为0. sesion_start它在指数顶部被剥落,是否足够? – 2013-03-15 08:24:47

+1

这应该是确定的,那么你确定它存储在会话中吗? )'function called? – fredrik 2013-03-15 09:19:17

+0

yes再次看看主要答案我编辑了新信息,我忘了提及。谢谢 – 2013-03-15 09:27:43