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

时间:2014-09-23 11:05:45

标签: php session

我有一个webservice,需要用户登录并创建标准 $ _SESSION ['XXX']用户的变量。

我想创建一个我的应用程序的“演示”,所以我为它创建了另一个文件夹。 那里有相同的代码和除数据库之外的所有内容。

问题是,当用户登录其中一个时,它可以访问这两个。 因此,如果他登录演示应用程序,该应用程序将使用该应用程序设置会话变量 同样的事情,他将能够访问“正常”的应用程序。

我如何分开这两个loggins? 我应该为演示更改会话变量还是有其他方法来解决它 根据文件所在的文件夹?

由于

3 个答案:

答案 0 :(得分:2)

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

对于Site1:

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

对于site2:

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

通过这种方式,两个站点将拥有两个不同的会话名称,永远不会让您相互接触。

让我知道它是否也适合你。

问候。

答案 1 :(得分:1)

在2个应用程序中使用different paths作为会话cookie。

显然你不能在一个php.ini文件中拥有2个设置:

  • 将php_admin_value设置为httpd.conf(apache)中的locationMatch指令
  • 在.htaccess文件中设置php_admin值
  • 在PHP脚本中添加一个前置(或修改一个公共包含文件)以设置路径。

请注意,如果您在代码中指定路径,则会通过ini_set()推荐session_set_cookie_params()。假设php.ini中的默认配置是针对演示站点(应该使用类似'/ demo /'NOT'/')...

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

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

答案 2 :(得分:0)

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

N.B。确保该文件夹存在且可由Web服务器用户(例如,无人)写入

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