【问题标题】:whats a good way of not getting site session variables mixed up with other sites under same domain什么是不将站点会话变量与同一域下的其他站点混合的好方法
【发布时间】:2012-08-07 10:56:26
【问题描述】:
基本上在我的 Web 开发服务器上,我有几个网站项目正在进行中。我遇到了我的一个网站项目会话变量与另一个网站项目的会话变量冲突的问题。这两个网站项目都在同一台服务器下。那么有没有一种很好的方法来区分网站项目之间的变量?希望这是有道理的......
这两个网站都是会员类型的网站,所以我对网站的会员部分使用相同的会话变量。
这两个网站都在 codeigniter 框架上。那么使用codeigniter,我该如何解决这个问题呢?
【问题讨论】:
标签:
php
codeigniter
session
web
dns
【解决方案2】:
您可以使用 session_name 函数 (http://php.net/manual/en/function.session-name.php) 为每个站点指定一个唯一的会话名称。仔细阅读有关何时设置会话名称的说明(基本上在任何其他会话功能之前)。
另一种方法是使用“路径”功能来限制您网站的路径 (http://www.php.net/manual/en/function.session-set-cookie-params.php)。这样,会话 cookie 将仅对您设置的路径之上或之下的脚本可见。 (确保首先删除“根”级别的所有 cookie,因为这些 cookie 可见,但所有子目录都可见!)
或者,如果您使用 cookie 手动执行此操作,请在 cookie 名称前加上一些独特的前缀。 SetCookie('WebsiteName_' . 'session', ID, time, path etc).
【解决方案3】:
我所做的是为每个站点创建一个配置文件,我在每个 php 文件中都需要该配置文件。
在此配置文件中,我指定了数据库参数(用户、密码等)和会话标头之类的内容:
$config['sess_header'] = 'site1';
当我创建或查询会话时,我使用这个 sess_header,例如:
$_SESSION[$config['sess_header']]['user_id'] = $user_id;