Php 如何使用会话正确地分隔环境?
我的软件有一个问题,这会让我很头疼。我会尽力解释的 实际上我有3个环境,所有3个环境都使用相同的注册、登录和恢复系统。但每一个都是适当分开的,比如说结构是:Php 如何使用会话正确地分隔环境?,php,session,Php,Session,我的软件有一个问题,这会让我很头疼。我会尽力解释的 实际上我有3个环境,所有3个环境都使用相同的注册、登录和恢复系统。但每一个都是适当分开的,比如说结构是: 管理员/ 贮藏/ 供应商/ 上面的结构包含类中的寄存器、登录和恢复方法,但代码相同。我知道它会一起制作,并创建一些识别码来分隔它们,但该软件并没有计划像这样发展,现在我们遇到了一种情况;( 例如,当我登录到管理员帐户时,我第一次遇到问题,并尝试在没有任何会话的情况下访问商店/环境(帐户)(当然,使用的会话是管理员帐户)。我获得了访问权限
- 管理员/
- 贮藏/
- 供应商/
会话启动()之前使用它
例如,管理区域中的每个会话\u start()
调用都应以以下内容开头:
session_name("ADMINSESSID");
session_start();
你们也会对商店和供应商做类似的事情
虽然它可以分离$\u会话
环境,但我不能完全确定它的安全性(例如编辑cookie以使用供应商会话ID作为管理会话ID)。也许您还应该在每个$\u会话
中标记它属于哪个环境
登录时:
// if user authenticated successfully to that environemnt
$_SESSION['environment'] = session_name();
同一场地区域内的任何其他地方:
if ($_SESSION['environment'] != session_name())
die('Access violation.');
你需要更新你的代码。你如何更新代码取决于你的具体情况。这里没有任何信息可以帮助你。我想这可能是一个互相帮助的地方。无论如何,谢谢。我不是一个编码员。如果答案不在这里,当然它在另一个地方。没关系,伙计!晚安!听起来不错目前这是一个很好的解决方案。我还阅读了有关session_save_path()函数的内容,该函数必须在session_start()>之前调用。谢谢@Havenard,我将研究这两种情况,并确定哪种解决方案更好。