2012-02-11 44 views
0

我在本地wamp服务器中有两个php应用程序。两个应用程序都使用相同的机制通过在会话中存储登录来检查身份验证。我的问题是如果我成功登录一个应用程序,其他应用程序登录自动,如果我打开在同一浏览器。这两个应用程序登录验证使用相同的PHP代码(我从一个应用程序复制到另一个)。使用会话在PHP中进行身份验证

我关心的是两个应用程序如何在wamp服务器中共享同一个会话?我做错了什么?

在此先感谢。

+0

他们是在同一个域? – Grexis 2012-02-11 10:12:20

+0

该问题需要澄清。在一个应用程序上登录意味着你登录到另一个应用程序(并且不想成为)或者你想在另一个应用程序上登录但不是? – 2012-02-11 10:15:35

+0

@Grexis是的应用程序在同一个域。我本地的wamp服务器,所以他们去。 app1是http:// localhost/App1,另一个是http:// localhost/App2 – Rifky 2012-02-11 10:18:41

回答

1

这些应用程序可能运行在相同的域上,例如, http://localhost/app1http://localhost/app2。默认情况下,PHP的会话cookie对整个域有效,所以两个应用程序自然都共享会话cookie。这里是你可以做什么:

1

会话使用cookie(默认情况下称为PHPSESSID)将会话密钥存储在浏览器中。

由于您的应用程序都位于相同的localhost域中,因此您的浏览器正在向两个应用程序发送相同的会话ID。

1

更可能的是,这是由localhost域服务的应用程序(可能是相同的cookie名称)引起的。由于应用程序具有相同的身份验证后端,因此它们的行为方式是相同的。

尽管这可能不会是在生产环境上隔离域的问题,考虑增加一个唯一的身份验证令牌正在考虑用户的登录验证过的每个应用程序。

另一个临时本地解决方案将是使用您的主机文件来模拟开发环境中的单独域。

+0

请解释添加一个唯一的身份验证令牌。 – Rifky 2012-02-11 10:38:00

+1

也许当你的应用加载时,你将一个常量设置为一个唯一的字符串,比如md5(“我穿着我爸爸的脏袜子”);当用户成功登录时,将该字符串添加到身份验证cookie。在检查用户是否登录时,将应用程序中的字符串与cookie中的字符串进行比较,以确保其匹配。 – 2012-02-11 10:53:02

0

会话密钥存储在浏览器的Cookie中。浏览器为给定的域存储Cookie。所以我认为你的两个应用程序在同一个域上运行(localhost?)。如果是这样,你必须将它们分开才能使其工作。

您也可以通过在应用程序中的一个使用session_save_path() function存储在不同的地方不同的会话文件

相关问题