在2远程服务器上使用$ _SESSION的奇怪行为

时间:2014-07-03 17:59:58

标签: php session

这是我的情况 我有2个服务器,server_1托管一个页面,server_2是一个webapp。您可以通过server_2页面登录server_1的网络应用程序,通过用户名和加密密码进行邮件调用,以及确定您是否来自server_1页面的参数或直接从server_2上的webapp登录表单 当您登录时,我使用了大量$_SESSION变量来存储关于当前登录用户的信息,并将大量的ajax调用直接调用到php文件(req.php)。现在,如果我从server_2上的webapp表单登录,我没有问题,但是如果我在server_1登录时需要进行make和ajax调用,我就无法获得会话值正确(仅从ajax代码的php,应用程序的其余部分工作正常) 从server_1登录时还有另一种奇怪的行为。示例:

User_1server_1登录后,您使用webapp,关闭标签页并返回server_1页面,退出,使用user_2登录,单击您的动态链接以登录server_2并且webapp创建前一个的相同会话ID(我在php目录中看到文件ses_randomid)!所以你偷了另一个用户的会话...

我在index.php和req.php(用于处理ajax调用的文件)中使用:

session_name("kreker");
session_start();

当我调用从webapp到req.php的调用时,如果我调用$_SESSION,则不会设置session_start()变量,并且仅当您从{{ 1}}。如果您直接从webapp登录,则设置变量!

尝试在关闭浏览器事件上进行ajax调用以强制销毁会话,但是我认为这不是正确的解决方案。 我也试过server_1,现在结果;

所以问题是:我通过另一台服务器的session_regenerate_id()请求登录,存储会话值,关闭浏览器而不注销,通过POST使用其他凭据登录,并且像以前的用户一样登录!这可能是因为POST的会话始终相同? (每个会话我的意思是你不关闭浏览器)

抱歉,这很难解释,希望你理解

0 个答案:

没有答案