【问题标题】:in codeigniter, whats a good way of separating the session variable used for different website projects under same server在codeigniter中,分离用于同一服务器下不同网站项目的会话变量的好方法是什么
【发布时间】:2012-08-10 17:54:03
【问题描述】:

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

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

【问题讨论】:

    标签: php codeigniter session variables


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      sess_use_database = true;
      

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

      【讨论】:

      • 我正在使用数据库进行会话,但是当我一次将产品添加到一个网站的购物车中时,另一个网站购物车为空时,我在同一服务器的两个网站中使用 CI 默认购物车时也发生了冲突。这个问题的解决方案是什么?请帮忙..
      • 我觉得可以通过应用来配置会话表名。
      • 但我找到了正确的解决方案,解决方案是:您必须在配置文件中的两个应用程序中设置不同的“sess_cookie_name”
      【解决方案3】:

      如果您的两个项目都在同一个域下,那么任何具有相同名称的会话变量都会发生冲突,因为用户的浏览器会将其会话密钥存储在该域的 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');
      

      【讨论】:

      • 是的,但是还有其他方法可以使用 codeigniter 的库或配置吗?
      猜你喜欢
      • 2012-08-07
      • 2017-05-08
      • 1970-01-01
      • 2012-05-29
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      相关资源
      最近更新 更多