2013-12-16 42 views
2

我正在使用一个现有的PHP应用程序,它具有不同的接口,如管理员,座席和客户。 我使用codeignitor创建了一个新的代理界面。为登录到代理门户,我正在使用旧应用程序中的现有代理登录页面,但登录成功后,我的新代理界面应该被加载。使用PHP应用程序会话到另一个codeignitor应用程序

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

当我试图在我的新代码中使用此会话变量时,我收到一条错误消息...无法找到变量。我怎样才能使用我的第一个应用程序的会话变量到我的新界面?

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

我在谷歌搜索了解了会话设置保存路径和所有,我不知道我到底需要做什么来解决这个问题。

感谢, 拉吉

+0

如果它在同一个域上,它不应该是一个问题 – Grumpy

回答

2

记住这两个项目/应用程序应该在同一台服务器

默认情况下codeignitor上存在如下的COOKIE作为一个会话,所以你必须ovwerwrite该库与任何PHP本地会话的库。

然后通过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(); 

现在您可以访问会话值。

0

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

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

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

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

相关问题