使用php应用程序会话到另一个代码点火器应用程序中


Using a php application session into another codeigniter application

我使用的是一个现有的php应用程序,它有不同的接口,如admin、agent和customer。我使用codeignitor创建了一个新的代理接口。FOr登录到代理门户,我使用旧应用程序中现有的代理登录页面,但登录成功后,应该加载我的新代理界面。

在旧的应用程序中,使用了会话,agent_id存储在会话变量中。

当我试图在新代码中使用此会话变量时,我收到一条错误消息。。。找不到变量。如何将第一个应用程序中的会话变量用于新接口?

当我在我的第一个应用程序和一个新的codeignator代码页中打印会话名称时,我可以看到这两个会话是不同的。我认为这是问题所在,因为codeignitor管理它的会话。

我在谷歌上搜索了一下,了解了会话设置保存路径等等,我不确定我到底需要做什么来解决这个问题。

请记住,两个项目/应用程序应存在于同一服务器上

默认情况下,codeignator将COOKIE作为一个会话,因此您必须将该库与任何PHP本地会话库进行ovwerwrite。

然后通过CRUL、POST或URL以双向加密格式将session_id传递给该项目。不要忘记加密会话id

来自项目1:

//to get the session id
$id = session_id();
//do some custom encryption
$id = 'ajhkdhfasjdhfajsdfhkjadf';
**Ref:**
http://www.php.net/manual/en/function.mcrypt-encrypt.php

来自项目2:

参考:http://www.php.net/manual/en/function.mcrypt-decrypt.php

在启动会话之前初始化会话id,如下所示

//do some custom encryption
$id = $this->input->get('id');
//decrypt the value
session_id($id);
session_start();

现在您可以访问会话值。

当我在第一个应用程序和其中一个应用程序中打印会话名称时新的代码点火器代码页,我可以看到两个会话是不同的。我认为这是问题所在,因为codeignitor管理它的会话。

您对CI处理其自己的会话是正确的,解决此问题的方法是使用本机会话库。

https://github.com/EllisLab/CodeIgniter/wiki/Native-session

另一种方法是让CI使用数据库会话,只需将会话ID传递给新应用程序,就可以从数据库中选择正确的数据。