如何在一台服务器上与一个用户处理多个PHP会话?

时间:2011-08-19 16:42:20

标签: php facebook session-state

我的服务器上的单个域上托管的Facebook应用程序很少。同一个用户可能会在一个会话中访问我的两个或多个应用程序。如何确保来自一个应用程序的某些数据不会在另一个应用程序中结束?由于用户可能只是离开应用程序,因此无法登出。

4 个答案:

答案 0 :(得分:8)

如果您为每个应用使用不同的session_name(),那么这些会话实际上是相互惰性的。

// Application 1
session_name("APP1");
session_start();

// Application 2
session_name("APP2");
session_start();

答案 1 :(得分:0)

我能想到的解决方案是包括此人在会话数据中使用的应用程序,如果您在用户的会话数据中看到错误的会话,则会破坏会话。

答案 2 :(得分:0)

只是想一想:也许你想为每个应用设置一个子域名。这样,cookie和会话就会自动完全分离,而不是依赖于某个功能(可能很慢,正如session_name()手册评论中指出的那样。)

此外,我认为由于相同的原始政策,单独的子域可以让您更安全地利用漏洞。 (右?)

答案 3 :(得分:0)

您可以通过为每个应用程序使用不同的键来创建会话部分之类的内容。您只需要确保密钥是唯一的。每次将一些数据保存到会话中时,请将其保存在适当的部分,例如:

//save the ids into db or configuration file after it's generated
$app1id = uniqid('fbApp');
$app2id = uniqid('fbApp');

//Save data for application 1
$_SESSION[$app1id] = array('app' => 'data');

//Save data for application 2
$_SESSION[$app2id] = array('app' => 'data');