通过cURL设置PHP会话-它将为客户端或服务器设置会话


Set PHP session via cURL - will it set the session for the client or the server?

我有一个使用PHP会话来管理登录用户的网站。另一家公司要求他们的用户登录他们的网站,然后当他们来到我的网站时,用户将自动登录。

为了做到这一点,我们使用cURL将用户的详细信息从他们的站点发布到我的站点,在那里我验证他们并创建一个会话来登录他们。

我不明白的是:会话是为发送cURL POST的服务器创建的还是为用户的计算机创建的?如果其他网站发布数据到我的网站,我创建一个会话基于成功登录,当用户来到我的网站,他们会登录吗?

我才刚刚开始构建这样做的机制,想在我走得太远之前检查一下-我开始认为它不会工作。

正如其他人所说,这种方法不起作用。当你创建一个PHP会话时,它将被绑定到发出请求的计算机上——在这种情况下,这将是另一个服务器。

当用户访问你的网站时,你需要确定一种方法来识别用户。这可以是mguimard建议的令牌,第三方cookie,甚至只是他们的IP地址(尽管我强烈建议不要使用IP)。一旦选定了一种标识方法,只需将该标识符存储在内存/数据库的某个地方。当用户带着标识符访问您的站点时,从存储中检索它并自动创建他们的新会话。

会话将为发出curl请求的服务器创建,而不是为最终客户端创建。您可以做的是在服务器发出curl请求时生成令牌,然后将此令牌提供给将使用此令牌请求您的站点的最终客户端。然后你可以检查这个令牌,让他登录

首先,会话将只在您自己的浏览器/"用户的计算机"上工作。例如,我登录到一个网站,我使用了一个会话,所以这个会话只会在我的电脑浏览器中保持活跃。但是当我关闭浏览器时,会话将被销毁。因此,为了保持会话有效,您将需要cookie。由于

你不可能为那些没有登录你的网站的人创建一个会话,你只是为服务器创建一个会话,当然它不起作用

您可以要求服务器构建机制,当新用户登录时,将用户重定向到您的站点以创建会话,然后您自动重定向回服务器

或者你可以对服务器实现一个相同的会话id方法,例如,ip+useragent,您需要做的是从服务器同步会话,或者服务器将会话推送给您