两个CodeIgniter应用程序之间的会话共享

时间:2012-07-16 10:48:34

标签: php codeigniter session

我在同一台服务器上运行了2个codeigniter安装程序。

第一个应用是: localhost / aa / index.php

第二个应用是: 本地主机/ AA /发票/ index.php的

第二个应用程序位于第一个应用程序文件夹中。在实时环境中,它们将位于同一个域中。我试图让单点登录工作 - 所以,如果我在aa应用程序中设置了userdata,我应该能够在发票文件夹中验证它。

有没有办法分享会话。

由于文件夹将始终位于同一个域中,因此我也可以使用ci库以外的会话(仅限php)。

编辑: 当他们没有任何数据时,他们会显示相同的会话ID。我在一个应用程序上添加一些变量的那一刻,另一个变得不同步。

此外,我将会话存储在数据库中(两个应用程序共享同一个数据库。)

请建议。

谢谢! :)

6 个答案:

答案 0 :(得分:7)

Codeigniter由于某种原因推出了自己的会话实现而不是本机PHP会话。

http://codeigniter.com/user_guide/libraries/sessions.html

您可以选择使用:

  1. cookie存储(不理想,存储空间小,cookie中的敏感数据?)。
  2. 数据库会话(使用会话ID cookie持久化)。
  3. 覆盖并滚动自己(使用本机php会话!)
  4. 显然,您需要确保正确配置会话标识符,以便两个应用程序都可以从同一会话数据中读取。如果使用数据库实现,则需要确保两个应用程序都可以访问同一个数据库。

    为了增加复杂性,如果您选择加密会话,加密类使用的盐在两个应用程序中也需要相同,因此任何一个都能够解密共享会话数据。

答案 1 :(得分:1)

$config['sess_cookie_name'] = 'myvalue';

在config.php文件中,您可以在两个CI应用中设置相同的值。使用' file'会话驱动程序

CI_Session Object

(     [userdata] =>排列         (             [__ci_last_regenerate] => 1490351129             [等级] => 1             [用户] => 103             [全名] =>鲁本卡尔德拉         )

[_driver:protected] => files
[_config:protected] => Array
    (
        [cookie_lifetime] => 600
        [cookie_name] => MyHiddenValue
        [cookie_path] => /
        [cookie_domain] => 
        [cookie_secure] => 
        [expiration] => 600
        [match_ip] => 
        [save_path] => /tmp
    )

答案 2 :(得分:0)

如果我可以.... 我注意到那些不切实际且违反正常惯例的设计问题应该为长期存在的根深蒂固的问题提供基础....你应该问自己,在两个不同的版本之间共享会话数据真的是必要/可取的我们知道它们是2个不同版本的框架,因为它们以不同的方式做事情...... 我只能说,无论你做什么......这个设计缺陷会使你的建筑变得脆弱,迟早你将不得不抛弃它。

Plz让我知道以后你会发现其他情况..

答案 3 :(得分:0)

如果使用相同的加密密钥在同一服务器上安装代码,默认情况下,两个安装都将共享会话。实际上,我发现当我为同一服务器上的另一个客户端复制codeigniter安装时。我以为这是一个我担心的错误。

答案 4 :(得分:0)

$config['encryption_key'] = 'epitome';

encryption_key配置名称对于两个应用程序文件夹都是相同的。

更改codeigniter中encryption_key的路径为application/config/config.php行号228.

答案 5 :(得分:-2)

如果将代码移动到同一服务器,默认情况下两个会话都将开始共享。