Php 两个CodeIgniter应用程序之间的会话共享
我在同一台服务器上安装了2个codeigniter 第一个应用程序是: localhost/aa/index.phpPhp 两个CodeIgniter应用程序之间的会话共享,php,codeigniter,session,Php,Codeigniter,Session,我在同一台服务器上安装了2个codeigniter 第一个应用程序是: localhost/aa/index.php 第二个应用程序是: localhost/aa/invoice/index.php 第二个应用程序位于第一个应用程序文件夹中。在实时环境中,它们将位于同一个域上。我正在尝试让单点登录工作——因此,如果我在aa应用程序中设置了userdata,那么我也应该能够在invoice文件夹中验证它 是否有一种方法可以共享会话 由于文件夹总是在同一个域上,我也愿意使用ci库(仅php)之外的会
第二个应用程序是: localhost/aa/invoice/index.php 第二个应用程序位于第一个应用程序文件夹中。在实时环境中,它们将位于同一个域上。我正在尝试让单点登录工作——因此,如果我在aa应用程序中设置了userdata,那么我也应该能够在invoice文件夹中验证它 是否有一种方法可以共享会话 由于文件夹总是在同一个域上,我也愿意使用ci库(仅php)之外的会话 编辑: 当它们没有任何数据时,会显示相同的会话id。当我在一个应用程序上添加一些变量时,另一个就不同步了 我还将会话存储在数据库中(两个应用程序共享同一个数据库) 请建议
谢谢!:) 如果将代码移动到同一台服务器,默认情况下,两个会话都将开始共享。Codeigniter出于某种原因会滚动其自己的会话实现,而不是本机PHP会话 您可以选择使用:
如果您稍后发现其他问题,请告诉我。如果您使用相同的加密密钥在同一服务器上安装代码,默认情况下,两个安装将共享会话。实际上,我是在为另一个客户机复制codeigniter安装时发现的,但安装在同一台服务器上。我担心这是一只虫子
$config['encryption_key'] = 'epitome';
两个应用程序文件夹的加密\u密钥
配置名称将相同
在codeigniter中更改加密\u密钥的路径是application/config/config.php
行号228
$config['sess_cookie_name'] = 'myvalue';
在config.php文件中,您可以使用“文件”会话驱动程序在两个CI应用程序上设置相同的值
CI_Session Object
(
[userdata]=>数组
(
[\u ci\u last\u regenerate]=>1490351129
[级别]=>1
[用户]=>103
[全名]=>鲁本火山口
)
)我不知道CodeIgniter,但请查看是否有指定cookie路径的设置,如果有,请将cookie路径设置为/aa/
(第一个应用程序的文件夹,没有localhost
部分)。另外,查看是否有会话目录,并将其设置为(在第二个应用中)第一个应用会话目录。您需要考虑的一件事是,如果一个应用程序清除了会话,而另一个应用程序不应该清除会话。我个人会选择选项#3,并滚动您自己的db表来管理它。将数据库用于会话数据(取决于单个应用程序用例)是一个性能杀手。我个人在高流量、多服务器设置中使用了本机php会话,没有任何问题。为什么要重新发明轮子?诚然,这超出了原始问题的范围。我不再使用Codeigniter.PHP会话的原因之一是在两个应用程序上都得到了传播,这将朝着这个方向发展。谢谢!:):)我比较乐观一点。它本身会有一系列问题,但基本上我们只是将自定义应用程序与现有CI项目集成,这不是理想的情况,而是让它工作。
[_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
)