我遇到了一个很大的问题,我被指派维护这个系统。
实际上,内部网上有许多系统。
问题是,原始程序员为Intranet创建了许多系统,所有这些系统都通过脚本连接到数据库,其中用户名,pass,db params等存储在$ _SESSION变量中。
当用户登录到一个系统,在选项卡中,然后为另一个系统打开另一个选项卡,并且由于会话变量被覆盖,他无法继续在第一个系统中运行时,会出现问题。
考虑到有几十个应用程序...您认为如何在不更改每个现有应用程序的情况下解决这个问题。?
谢谢!
答案 0 :(得分:2)
您需要找到操纵会话的方法。
一种方法是使用子域,例如:app1.myoffice.local
,app2.myoffice.local
等。浏览器不会跨域共享会话cookie。
其他技巧是将会话cookie路径从/
更改为子文件夹。 myoffice.local/app1/
的会话Cookie应限制为/app1/
,myoffice.local/app2/
的会话Cookie应限制为/app2/
,依此类推。
我认为您可以在调用session_set_cookie_params( )
之前通过ini_set( )
或session_start( )
函数在php中更改此设置。
答案 1 :(得分:1)
最好的办法是尝试设置会话命名空间。所以基本上,你的会话数据看起来像......
array("app1" => array(), "app2" => array(), "app3" => array())
然后当每个up向会话发送更新时,这些值将被添加到各自的“app containers”
答案 2 :(得分:0)
将每个应用程序移动到自己的子域,并确保不共享会话cookie - 这样用户将为每个应用程序分别设置一个会话。
答案 3 :(得分:0)
这可能会对您有所帮助:
http://www.decodephp.com/2006/11/16/php-sessions-across-subdomains-the-multiple-servers-issue/
那里有一个例子:
我设法为这个问题创建了一个非侵入性的解决方案。
它在某种程度上是先进的,它涉及mod-rewrite和php图像 操纵。我这样做的方式是使用图像。例如 http://something.com/something/spacer.jpg 获得mod-rewrite到脚本 ?set_cookies.php perv_id = 1234&放大器;滚动=左和放大器; right_scroll =右和放大器; mascot_header =无 然后当你把它扔进去的时候 将在abc.domain.com上设置cookie xyz.domain.com。
set_cookies.php设置cookeis然后拉出1×1白色图像并显示 它。因此,为了设置9个cookie,我最终在我的页面上有一个9像素点。一世 有这个工作在同一台服务器上,但它应该跨多个工作 服务器也是因为变量通过GET传递