由一个项目创建的会话也可以通过PHP中的其他项目访问
在我的一个localhost项目中,创建了一个用于用户登录的会话。它存储在$_SESSION['uname']
。我的一些其他项目也使用相同的会话名称变量。问题是当我已经登录到我的第一个项目管理区域,然后我去我的其他项目管理区域,它并没有要求我输入凭据登录窗口;相反,它直接把我带到管理面板。我知道这是由于在我的各个项目中使用相同的$_SESSION['uname']
而发生的。所以我想知道如何强制其他项目显示登录窗口,虽然我已经登录到我的第一个项目?由一个项目创建的会话也可以通过PHP中的其他项目访问
也可能我的其他项目有一些不同的登录凭据,但如果我已经登录到我的第一个项目,我永远不会为我提供登录屏幕。
我也在想,专业网站如何保持其会话名称的独特性,使其他人永远不会使用它?在我的情况下,会话名称无处不在。
看起来你正在为本地的每个项目使用localhost。
- 为每个项目创建单独的VirtualHost,然后每个项目的会话将是唯一的 - 因为cookie的域是不同的。
- 如果你想保持本地主机(我不推荐),你应该想想命名空间为每个项目的会议,比如$ _SESSION [“PROJECT1”] [“UNAME”]
您可以使用退出画面session_unset()
然后$_SESSION['uname']
将是无效
否则使用特殊名字的uname(也许[ 'UNAME'] [0])
您还可以使用MD5为UNAME $_SESSION[md5("project 1 uname")];
或$_SESSION[md5("project 1 namespace")]["uname"];
希望我帮了忙。
不,对我来说不是一个满意的答案。我已经告诉我是否已经登录到我的项目1并进入项目2登录。它会直接带给我管理员面板。因为我没有注销我的项目-1。专业网站如何确保其会话名称永远是唯一的,并且永远不会被其他网站使用? – user5307298
他们使用随机字符串,而不是把两个站点放在同一台服务器上 –
是的,但是如何使用随机字符串? – user5307298
这主要是因为您正在为所有项目使用本地主机或同一台主机。请尝试为您的项目设置虚拟主机。
参考设置虚拟主机
检查的php.ini session.cookie_domain指令,到指定的会话cookie设置的域的链接。您可以选择session_set_cookie_params
功能。它有$domain
参数来设置会话cookie可访问的域。
例如设置会话cookie只mywebsite.com
可见:
<?php
session_set_cookie_params(3600, '/', 'mywebsite.com');
session_start();
是什么这么快,如果你第一次没有仔细阅读,回答我的问题的真正需要?我已经写了它的原因是使用相同的会话变量名称。我已经知道了。 – user5307298
伟大的等待有一段时间。你会得到好东西给你。 –