1

在我的 Web 开发服务器上,我有几个codeigniter网站项目正在进行中。我遇到了我的一个 codeigniter 网站项目session变量与另一个 codeigniter 网站项目的session变量冲突的问题。这两个网站项目都在同一台服务器下。那么,有没有很好的方法来区分网站项目之间的变量呢?

同样,这两个网站都建立在 codeigniter 框架上。那么,使用codeigniter,有没有办法做到这一点?

4

3 回答 3

2

如果您在服务器端使用分贝来跟踪会话信息,您可以为每个站点指定不同的分贝。在 config.php 中查找设置 $config['sess_table_name'] = 'ci_sessions';

于 2012-08-10T18:58:44.223 回答
1

对于每个应用程序,您可以将会话配置为存储在数据库中:

sess_use_database = true;

http://codeigniter.com/user_guide/libraries/sessions.html

于 2012-08-10T19:11:15.767 回答
1

如果您的两个项目都在同一个域下,那么任何具有相同名称的会话变量都会发生冲突,因为用户的浏览器将其会话密钥存储在该域的 cookie 中。这里的最佳做法是命名您的会话变量;例如,如果你想在两个项目“foo”和“bar”中都有一个“username”变量,那么将这两个变量命名为“foo_username”和“bar_username”。如果您在每个项目的 config .php 文件中设置一个常量,并带有您想要用于变量的前缀,那么您可以在每次获得会话 var 时使用它。例如,如果您在 config.php 中设置了一个“APP_NAME”常量并将其设置为您的第一个项目的“foo”,那么您可以设置会话变量:

$this->session->set_userdata(APP_NAME.'_username', 'smg');

并检索

$this->session->userdata(APP_NAME.'_username');
于 2012-08-10T18:08:17.943 回答