使用session在PHP中进行身份验证

时间:2012-02-11 10:08:33

标签: php authentication php-5.3

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

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

提前感谢。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

虽然在隔离域的生产环境中这可能不是问题,但考虑在将用户视为已登录之前为每个已验证的应用程序添加唯一的身份验证令牌。

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

答案 3 :(得分:0)

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

此外,您可以在其中一个应用程序中使用session_save_path() function在不同位置存储单独的会话文件