在Zend Framework v1中共享两个系统之间的会话

时间:2015-09-28 17:24:50

标签: php zend-framework session-variables

我正面临一个超出我的Zend Framework知识的问题,我希望你们能提供帮助。

我的服务器中安装了一个旧的全功能系统(我们称之为http://stable.server.com),它有一个非常旧的PHP版本。我打算将我的PHP版本升级到最新版本(希望在几个月内升级到7版!)但我的代码使用了许多不推荐使用的函数,并且有一些代码对PHP 5.6无效,但它适用于较旧版本版本。我已经对模块进行了划分,以便迁移每个模块,对其进行测试,然后将其上传到具有最新PHP版本的并行服务器(让我们称之为http://updated.server.com)。当然每个都有不同的Zend安装,具有相同的版本和配置文件。

当然这些模块之间有一些沟通,我希望保持变更对我的用户最透明。因此,当我从updated.server.com致电stable.server.com并反之,我的应用程序要求我再次登录。当我登录这两个系统时,这种通信顺利进行,但我想避免用户再次登录。

¿你们有没有做过这样的事情?我当然希望有一种安全的方法来避免在系统之间进行登录,因此没有人可以安装假系统并从中登录。

提前谢谢大家。

1 个答案:

答案 0 :(得分:1)

我认为你正在考虑两个不同的问题。

  1. 会话写在磁盘上,这些信息需要在两台服务器之间共享。
  2. Cookie需要在域/子域中保持不变。
  3. 对于会话共享,您可以使用mysql会话存储。 http://framework.zend.com/manual/1.12/en/zend.session.savehandler.dbtable.html http://framework.zend.com/manual/1.12/en/learning.multiuser.sessions.html https://github.com/sprain/PHP-MySQL-Session-Handler/blob/master/MySqlSessionHandler.php

    你可以谷歌那里有很多解决方案。

    2。Domain set cookie for subdomain

    您可以将您的Cookie设置为“.server.com”,然后它将在您的所有域中生效。

    这不是简单的修复!!但是,一旦完成此实现,您可以在具有相同会话信息的不同计算机上同时运行这两个版本。