【问题标题】:Kohana persistant sessions and sub-domainsKohana 持久会话和子域
【发布时间】:2010-09-25 09:41:27
【问题描述】:

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

当我这样设置会话时:

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

即使浏览器关闭,会话变量 UserID 仍然可用。不错。

cookie 使用此配置设置:

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

设置会话变量时如何设置域?每个用户都有自己的子域,所以是动态值。

【问题讨论】:

    标签: php kohana


    【解决方案1】:

    在引导过程之前,您可以在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" ;
    

    【讨论】:

    • 谢谢!我把代码放在cookies配置文件中。从来没有意识到你可以在配置文件中编码。很明显我现在知道了..
    猜你喜欢
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 2012-12-14
    • 1970-01-01
    • 2013-03-06
    • 2012-11-20
    • 2012-03-17
    相关资源
    最近更新 更多