【问题标题】:Setting two different sessions on same domain for two different folders in PHP在 PHP 中为两个不同的文件夹在同一域上设置两个不同的会话
【发布时间】:2014-09-22 06:04:59
【问题描述】:

我有一个使用会话进行用户管理的应用程序。在应用程序的根文件夹下,我有一个管理面板,我需要有不同的会话,否则它会与根会话冲突。

-root
   -admin/adminFiles
   -rootFiles

我浏览了this 线程和文档,并在我的管理文件夹中尝试了以下代码

if(HTTP_SERVER != 'http://localhost'){
    session_save_path("/tmp");
}
 session_name('session_for_admin');
 ini_set('session.cookie_path','/session_for_admin');
 session_set_cookie_params(60*60*24*5,'session_for_admin');
 session_start();

这只是不启动会话。日志中也没有错误。 我在这里做错了什么。

我想这样做是因为 admin 文件夹只会被少数特权用户访问,而且访问频率不高。我知道 session_name() 会增加开销。但是会喜欢这样度过难关。

【问题讨论】:

  • 我疯了还是你不需要 session_start 才能检查 $_SESSION 变量?
  • 哎呀!!谢谢你的指点!实际上我是从另一个文件中复制的,而不是第一次设置会话的实际文件。更新
  • 这应该如何以不同的方式对任何事物做出实际反应?这将每次都使用session_for_admin,不是吗?
  • 会吗?如果我将它设置在admin文件夹中,根文件夹将有默认会话PHPSESSID对吗?
  • @FélixGagnon-Grenier 你能建议正确的方法吗!

标签: php session session-variables session-cookies


【解决方案1】:

所以关于你所说的在你的数据库中有一个管理员标志:

假设$admin 包含一个布尔值:如果您的数据库确认用户为管理员,则为 true,否则为 false

这将根据此布尔值的结果激活具有名称的会话:

if ($admin)
 {session_name('session_for_admin');}
else
 {session_name('session_for_others');}
session_start();

这将启动和管理两个不同的会话,就像两个不同的用户拥有自己的会话一样。

诚然,您可能想从那里做其他事情,例如更改工作目录,或包含不同的文件。

当用户以管理员身份登录时,您也可以通过在会话中设置一个变量来做到这一点:

$_SESSION['admin'] = true;

从那时起,您可以像这样检查和使用一些文件或其他文件:

if ($_SESSION['admin'])
 {// use files in admin folder
  }
else
 {// use files in root folder
  }

【讨论】:

  • 我实际上已经尝试过了,但效果不佳,我的会话返回为null。配置中有什么需要更改的吗?我的意思是在 php.in 中。 if($value['adminAuthFlag'] === '1'){ session_name('session_gobiggi_admin'); ini_set('session.cookie_path','/session_gobiggi_admin'); session_set_cookie_params(60*60*24*5,'session_gobiggi_admin'); session_start(); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 2013-11-22
  • 2013-08-23
  • 1970-01-01
  • 2016-03-21
  • 2012-11-17
相关资源
最近更新 更多