我有一个webservice,需要用户登录并创建标准 $ _SESSION ['XXX']用户的变量。
我想创建一个我的应用程序的“演示”,所以我为它创建了另一个文件夹。 那里有相同的代码和除数据库之外的所有内容。
问题是,当用户登录其中一个时,它可以访问这两个。 因此,如果他登录演示应用程序,该应用程序将使用该应用程序设置会话变量 同样的事情,他将能够访问“正常”的应用程序。
我如何分开这两个loggins? 我应该为演示更改会话变量还是有其他方法来解决它 根据文件所在的文件夹?
由于
答案 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个设置:
请注意,如果您在代码中指定路径,则会通过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);
?>