我的网站使用的是无脂肪框架,并且我尝试在SQL处理程序中使用f3“ SESSION”变量,以在登录后存储一段用户数据,并从应用程序的不同部分进行访问。但是,尽管我可以看到会话变量设置正确并显示在SQL表中,但是尝试通过API调用的其他函数访问它们只会导致生成空字符串。
我有一个函数login(),用于登录用户,并且我试图将用户的登录令牌存储在会话SQL表中。
new \DB\SQL\Session($f3->get('db'),'sessions',true,function($session){return true;});
$f3->set('SESSION.token',$user->token);
我可以在login()函数内部访问变量:
error_log($f3->get('SESSION.token')); // This works
现在在由我们的API调用的另一个函数login_check()中,我试图从当前会话中获取用户令牌,并使用它来检索其用户ID。
error_log('Found session token: ' . $f3->get('SESSION.token'));
$token = $f3->get('SESSION.token');
error_log($token); // This results in an empty string.
我可以在SQL表的“数据”列中看到存在用户令牌以及我设置的其他一些会话变量。为什么我无法从其他任何地方访问它们?在对两个函数的调用之间有几种重新路由,但我的印象是,与标准配置单元变量不同,SESSION变量将在重定向中持续存在。
当我使用标准PHP会话处理程序时,通过删除对“ new \ DB \ SQL \ Session()”的调用并仅使用$ f3-> set(),我遇到了相同的行为。切换到SQL是为了解决它,但是我仍然遇到相同的问题。这可能是由于我在函数之间进行的API请求,还是服务器配置存在问题?我对此深感沮丧,非常感谢您的帮助。