Kohana坚持会议和子域名

时间:2010-09-25 09:41:27

标签: php kohana

我在Kohana v2中使用数据库会话驱动程序。为了使会话持久化,Kohana创建了一个令牌cookie。这个cookie使用我想的cookie配置。

当我设置这样的会话时:

$this->session->set('UserID', $user->UserID);

即使浏览器关闭,会话变量UserID也可用。好的。

Cookie使用此配置设置:

$config['domain'] = '.mydomain.com';

如何在设置会话变量时设置域?每个用户都拥有自己的子域,因此它是动态值。

1 个答案:

答案 0 :(得分:3)

您可以在引导过程之前在index.php中找出您正在使用的子域,然后在cookie配置文件中包含该变量。像(未经测试)的东西:

$myDomain = 'mydomain.com' ;
$currDomain = $_SERVER['SERVER_NAME'];
$subDomain = '' ;

//remove www if needed
if (substr($currDomain, 0, 4) == 'www.') {
    $currDomain = substr($currDomain, 4) ;
}

$currDomainPos = strpos($currDomain, $myDomain) ;
if ($currDomainPos !== false) { //sanity check, myDomain string must exist
    if ($currDomainPos !== 0) {
        //got subdomain since SERVER_NAME doesn't start with myDomain
        $subDomain = substr($currDomain, 0, $currDomainPos) ;
    }
}

然后在cookie配置中:

$config['domain'] = "$subDomain.mydomain.com" ;