将php应用程序会话用于另一个codeigniter应用程序

时间:2013-12-16 11:28:00

标签: php codeigniter session

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

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

当我尝试在我的新代码中使用此会话变量时,我收到错误消息...无法找到变量。如何将第一个应用程序中的会话变量用于我的新界面?

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

我在google上搜索并了解了会话设置保存路径以及所有内容,我不确定在这里需要做什么才能解决这个问题。

2 个答案:

答案 0 :(得分:2)

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

默认情况下,codeignitor将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();

现在您可以访问会话值。

答案 1 :(得分:0)

  

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

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

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

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