【问题标题】:Codeigniter session generates new session on every pageCodeigniter 会话在每个页面上生成新会话
【发布时间】:2013-10-02 12:51:40
【问题描述】:

在每个页面上,我都看到使用 null 用户数据生成了新会话

关于模型构造函数

$this->config->set_item('sess_table_name', 'xx_sessions');

因为我想将此会话存储在另一个表中,因为另一个会话表正在用于另一个登录活动

登录功能

function login($username,$password)
{

    $this->db->where('login',$username);
    $this->db->where('pass',$password);
    $q=$this->db->get('prof');
    // print $this->db->last_query();

    if($this->db->count_all_results())
    {
        $arr=$q->row();

        // creating the session 
        $this->session->set_userdata('login',$arr->id);
        $this->session->set_userdata('prof',$arr->profile_id);
        // print_r( $arr);
    }
    else
        return FALSE;
}

此登录功能在模型上。登录并生成会话后,页面重定向到另一个页面,在该页面上我看到会话构建没有任何问题,但是当我移动到另一个页面时,会话与用户数据一起丢失。

我使用以下函数检查会话数据

function print_session()
    {
        print_r( $this->session->all_userdata());
    }

我哪里错了? Tank_auth 库和 ion_auth 库工作正常.. 我已经使用了

【问题讨论】:

  • 你是否自动加载了会话库?
  • @shuvo 我在模型构造函数中加载会话库

标签: php codeigniter session cookies session-cookies


【解决方案1】:

session库名放入自动加载器配置中,在application/config/autoload.php:

$autoload['libraries'] = array('session');

然后它会自动在每个控制器中以及应用程序中的任何位置可用,并且您可以从任何位置获取会话数据:

$session_id = $this->session->userdata('session_id');

如果您不想自动加载会话库,则必须在控制器构造函数中手动初始化 Session 类,请使用 $this->load->library 函数:

$this->load->library('session');

详情看这里:http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

【讨论】:

    【解决方案2】:

    编辑/application/config/config.php并设置cookie域变量

    $config['cookie_domain']    = ".yourdomain.com";
    

    它会起作用的!

    .yourdomain.com 使 cookie 在整个域及其子域中可用。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,我已经搜索了很多页面。 我发现更改 sess_cookie_name 可以解决问题(新会话生成问题)

      $config['sess_cookie_name'] = 'somenewname'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-27
        • 2019-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-09
        相关资源
        最近更新 更多