这是我的情况
我有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_1
从server_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
的会话始终相同? (每个会话我的意思是你不关闭浏览器)
抱歉,这很难解释,希望你理解