D不同文件夹的不同登录(会话)


DIfferent login (sessions) for different folders

我有一个Web服务,它需要用户登录,我创建了标准用户的$_SESSION['XXX']变量。

我想为我的应用程序创建一个"演示",所以我为它创建了另一个文件夹。里面有相同的代码,除了数据库之外的所有东西。

问题是,当用户登录其中一个时,它可以同时访问这两个。因此,如果他登录到演示应用程序,该应用程序将设置一个会话变量同样,他也可以访问"普通"应用程序。

我怎样才能把那两个洛金分开?我应该为演示更改会话变量,还是有其他方法来解决它根据文件所在的文件夹?

感谢

我也遇到了同样的问题。我也解决了这个问题。例如,如果你从两个站点都取两个变量,即Name和ID,你只需更改变量名,如下所示:

对于站点1:

$_SESSION['username_site1'] = $username;
$_SESSION['id_site1'] = $id;

对于站点2:

$_SESSION['username_site2'] = $username;
$_SESSION['id_site2'] = $id;

通过这种方式,两个站点将有两个不同的会话名称,并且永远不会让您进入彼此。

让我知道它是否也适用于你。

问候。

在两个应用程序中为会话cookie使用不同的路径。

显然,在一个php.ini文件中不能有这两个设置,因此:

  • 在httpd.conf(apache)中的locationMatch指令中设置php_admin_value
  • 在.htaccess文件中设置php_admin值
  • 在PHP脚本中添加一个前缀(或修改一个通用的include文件)来设置路径

请注意,如果您在代码中指定路径,则建议使用session_set_cookie_params()而不是ini_set()。假设php.ini中的默认配置是针对演示站点的(应该使用类似于"/demo/"NOT"/"的内容)。。。

 if (false===strpos($_SERVER['REQUEST_URI'], 'demo') { 
     // using live application
     session_set_cookie_params (1200, '/live/');
 }

(在调用session_start()之前必须运行以上内容)

您可以更改会话数据的保存路径。。。

注意:确保文件夹存在并且可由网络服务器用户(例如无人)写入

<?php $newPath = '/tmp/sessions/demo'; ini_set('session.save_path',$newPath); ?>