什么是不让网站会话变量与同一域下的其他网站混淆的好方法

时间:2012-08-10 06:34:32

标签: php codeigniter session web dns

基本上在我的网站开发服务器上,我有几个网站项目。我遇到了一个问题,我的一个网站项目会话变量与另一个网站项目的会话变量冲突。这两个网站项目都在同一台服务器下。那么有一个很好的方法来消除网站项目之间的变量吗?希望这是有道理的......

这两个网站都是会员类型的网站,所以我使用相同的会话变量作为网站的会员部分。

这两个网站都在codeigniter框架上。所以使用codeigniter,我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

只需使用session_name

即可

示例:

  session_name("WebsiteID");

答案 1 :(得分:0)

您可以使用session_name函数(http://php.net/manual/en/function.session-name.php)为每个站点提供唯一的会话名称。请仔细阅读有关何时设置会话名称的说明(基本上在任何其他会话功能之前)。

另一种方法是使用“路径”功能限制您网站的路径(http://www.php.net/manual/en/function.session-set-cookie-params.php)。这样,会话cookie只对您设置的路径上或下方的脚本可见。 (确保首先删除“root”级别的任何cookie,因为这些cookie将在所有子目录中可见!)

或者,如果您使用Cookie手动执行此操作,请在cookie名称前加上唯一的名称。 SetCookie('WebsiteName_'。'session',ID,时间,路径等)。

答案 2 :(得分:0)

我所做的是为每个站点配置一个配置文件,我在每个php文件中都需要这个配置文件。 在此配置文件中,我指定了诸如数据库参数(用户,密码等)和会话标头之类的内容: $ config ['sess_header'] ='site1';

当我创建或查询会话时,我使用此sess_header,例如: $ _SESSION [$ config ['sess_header']] ['user_id'] = $ user_id;