【发布时间】:2012-09-11 00:36:40
【问题描述】:
我正在开发一个具有每个角色的用户界面和功能的 Web 应用程序。在users 表中,我有一个role 列,一个enum,它存储每个用户的角色。在登录脚本中,如果找到用户/通行证的匹配记录,我将SESSION['role'] 变量设置为记录的角色字段的值。除了角色,我还存储了其他几位数据,例如其他 SESSION 变量中的 display_name。然后,SESSION['role'] 在整个应用程序中用于向浏览器发送正确的用户界面并强制执行访问规则。
这在我的本地主机上一切正常,但在远程服务器上,SESSION['role'] 只是第一次工作 - 即正确的用户界面被发送到浏览器。在那之后,SESSION['role'] 以某种方式更改为不同的(现有)角色,因此访问规则不允许这些功能可用。更诡异的是,只有SESSION['role']发生变化,SESSION['displayname']或SESSION['username']保持不变。
我没有在login.php 以外的任何地方设置SESSION 变量。非常感谢我应该寻找潜在原因的任何想法。
【问题讨论】:
-
也许您在
if语句中有分配? -
你确定这两个环境中的代码是一样的吗?
-
@WaleedKhan,很好的候选人,谢谢!我向上帝祈祷就是这个。
-
您是否在 prod 服务器上运行了另一个使用相同
session_name()的应用程序?如果是这样,它可以覆盖您的会话变量。使用session_name('app1'), session_name('app2')设置不同的名称 -
@Ddorda,我检查了很多次,我重新上传了几次,但还是一样。
标签: php session session-variables