我有一个启用了基于cookie的登录的Yii应用程序。
因此,每次用户连接到应用程序时,都会在服务器上创建会话文件 (/ var / lib / php5)与PHPSESSID相关。
其中一个Session变量是超时(timestamp)。
我想创建一个php脚本来访问所有这些Session文件,打开它们,检查超时,如果超时,则对数据库中的特定表进行一些更改。
第一个问题,从我的php脚本中我无法在/ var / lib / php5中打开会话文件。 权限被拒绝。(来自我的php脚本的AFAIK我尝试以Apache用户身份打开这些文件,虽然我需要成为超级用户,但是如何做到这一点......在运行中? - 无需更改文件权限)
第二个问题。 即使我尝试从我的PHP脚本打开特定会话ID的超全局$ _SESSION 我仍然收到许可被拒绝的消息。
$sSessId='la05bdm63rdmjevg4hfrcf17u6';
session_id($sSessId);
session_start();
print_r($_SESSION);
有关php脚本如何访问这些会话文件的任何建议? 很多thnx提前。
答案 0 :(得分:1)
首先你不需要调用session_start()
因为默认情况下它是true,要在config / main.php中禁用
'session' => array (
'autoStart' => false,// by default is true
),
在Yii中读取会话的最佳方法是使用类似于超级全局数组Yii::app()->session
的内置函数$_SESSION
。
Yii::app()->session['var'] = 'value';
echo Yii::app()->session['var'];
取消设置会话变量
unset(Yii::app()->session['var']);
删除会话变量
Yii::app()->session->remove('var')
更改会话变量的路径
'session' => array (
'sessionName' => 'Site Access',
'cookieMode' => 'only',
'savePath' => '/path/to/new/directory',
),
希望这会有所帮助