Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 2远程服务器上的$\u会话出现异常行为_Php_Session - Fatal编程技术网

Php 2远程服务器上的$\u会话出现异常行为

Php 2远程服务器上的$\u会话出现异常行为,php,session,Php,Session,这就是我的处境 我有2台服务器,服务器1承载一个页面,服务器2承载一个webapp。您可以通过服务器_1的页面登录服务器_2的webapp,通过用户名和加密密码以及一个参数进行post调用,该参数确定您是来自服务器_1页面还是直接来自服务器_2上webapp的登录表单。 当您登录时,我使用了大量的$\u会话变量来存储有关当前登录用户的信息,并直接对php文件req.php进行了大量ajax调用。现在,如果我从服务器2上的webapp表单登录,我没有问题,但是如果我在进行和ajax调用时从服务器1

这就是我的处境 我有2台服务器,服务器1承载一个页面,服务器2承载一个webapp。您可以通过服务器_1的页面登录服务器_2的webapp,通过用户名和加密密码以及一个参数进行post调用,该参数确定您是来自服务器_1页面还是直接来自服务器_2上webapp的登录表单。 当您登录时,我使用了大量的$\u会话变量来存储有关当前登录用户的信息,并直接对php文件req.php进行了大量ajax调用。现在,如果我从服务器2上的webapp表单登录,我没有问题,但是如果我在进行和ajax调用时从服务器1登录,我无法仅从php的ajax代码中正确获取会话值,应用程序的其余部分工作正常。 当您从服务器_1登录时,还有另一种奇怪的行为。例如:

用户_1从服务器_1登录,使用webapp后,关闭选项卡并返回服务器_1页面,注销,使用用户_2登录,单击动态链接登录服务器_2,webapp创建相同的会话id。我在上一个会话的php目录中看到文件seu randomid!所以你被偷走了另一个用户的会话

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

session_name("kreker");
session_start();
当我调试从webapp到req.php的调用时,如果我调用SESSION\u start,也不会设置$\u SESSION变量,并且只有从服务器\u 1登录时才会发生这种情况。如果您直接从webapp登录,则变量已设置

尝试在close browser事件中调用ajax以强制销毁会话,但我认为这不是正确的解决方案。 我还尝试了session_regenerate_id,现在是结果

所以问题是:我从另一台服务器通过POST请求登录,存储会话值,关闭浏览器而不注销,使用另一个凭据通过POST登录,您将像以前的用户一样登录!这可能是因为服务器1的会话总是相同的?每次会话,我的意思是你不关闭浏览器


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

在用户登录之前,您必须执行会话销毁,以便删除他以前存在的所有会话。你这样做了吗?是的,但是我调用req.php文件时仍然存在问题,因为在这部分中,会话已经启动,我需要它在这个文件中,但是如果我调用session\u start,则会话不会出现。我无法理解这部分:因为在这部分中,会话已经启动。你能详细说明为什么在用户登录之前不能调用session\u destroy吗?发布相关组件的代码片段可能会有所帮助。我可以调用它,但它不起作用。当您登录创建会话的文件时,当您关闭浏览器时,文件仍然存在于服务器上,当您从服务器_1更改用户名并登录时,它将使用与其他用户会话相同的id。它没有创建新的id,我不明白为什么。解决这个问题的唯一方法是在通过ajax调用关闭浏览器时强制删除会话文件,但我不知道这是否正确