【问题标题】:Sharing session data to all subdomain codeigniter将会话数据共享给所有子域 codeigniter
【发布时间】:2014-03-23 08:42:06
【问题描述】:

我正在尝试为我的所有子域使用一个 session 数据。

我在cpanel 中创建了一个subdomain,如下所示:*.mydomain.in

我的*.mydomain.in 使用与我的mydomain.in 示例相同的路径:

mydomain.in 在我的服务器上使用路径:/public_html/mydomain.in

*.mydomain.in 在我的服务器上使用路径:/public_html/mydomain.in

现在的问题是每次我访问该站点时,它都会创建一个不同的会话。例如:

我访问mydomain.in .... 它创建了一个会话。

我访问example.mydomain.in .... 它创建了一个不同的会话

我再次访问mydomain.in ...它创建了一个不同的会话。

我的代码点火器config 文件:

$config['encryption_key'] = 'MY-SECRET-KEY-HERE';

$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;

$config['cookie_prefix'] = "";
$config['cookie_domain'] = ".mydomain.in";
$config['cookie_path'] = "/";
$config['cookie_secure'] = FALSE;

任何帮助或建议都会有很大帮助。提前致谢。

【问题讨论】:

    标签: codeigniter session wildcard-subdomain


    【解决方案1】:

    Mohamed Sufian 的回答基本正确,但请注意,根据Session Docs,会话驱动程序会忽略cookie_prefix 设置。如果您想要一个实例特定的 cookie 名称,您需要编辑 sess_cookie_name 配置选项。

    例如:

     $config['sess_cookie_name'] = 'my_prefix_ci_session';
    
     $config['cookie_prefix'] = "my_prefix_"; // Only relevant for non-session cookies
     $config['cookie_domain'] = ".example.com";
     $config['cookie_path'] = "/";
    

    【讨论】:

    • 嘿,感谢您的建议,我现在使用不同的东西来轻松管理我的所有工作,并且我还使用 CI4Django 支持,此外,选择的答案是旧的,它是对于CI3,再次感谢您给了您重要的时间:-)
    • 唉,我仍然支持CI3 代码库。我希望我不是,但我认为可能有一些不幸的人需要知道这一点。
    • 我仍然有许多使用 CI3 & 运行的项目,我仍然使用 CI3,因为我知道并理解至少我会收到安全更新,谢谢
    【解决方案2】:

    这是我解决问题的方法。

     $config['sess_cookie_name'] = 'ci_session';
     $config['sess_expiration'] = 0;
     $config['sess_expire_on_close'] = TRUE;
     $config['sess_encrypt_cookie'] = TRUE;
     $config['sess_use_database'] = TRUE;
     $config['sess_table_name'] = 'ci_sessions';
     $config['sess_match_ip'] = TRUE;
     $config['sess_match_useragent'] = FALSE;
     $config['sess_time_to_update'] = 300000000;
    
    
     $config['cookie_prefix'] = "etc_anything_";
     $config['cookie_domain'] = ".mydomain.in";
     $config['cookie_path'] = "/";
     $config['cookie_secure'] = FALSE;
    

    【讨论】:

    • 我如何给多个子域。那就是我有 abc.book.com、def.book.com、pop.book.com
    • 这适用于任何域,你可以尝试任何东西,例如:abc.book.com xyz.book.com 都可以......
    • 我应该在 $config['cookie_prefix'] = "mydomain_";
    • 您的域名前:book_ 或任何您想要的...但cookie_domain 应该是您的真实域名前:.website.com 用于生产...
    • 这些 CodeIgniter 设置现已过时。有些已被弃用。此外,答案没有提供有关 OP 设置的解释,而只是提供了一些碰巧有效的设置。更多解释将使这一点更清楚。
    猜你喜欢
    • 1970-01-01
    • 2018-06-08
    • 2013-09-22
    • 1970-01-01
    • 2021-02-06
    • 2011-06-16
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多