Codeigniter会话在每个页面上生成新会话

时间:2013-09-26 13:50:52

标签: php codeigniter session cookies session-cookies

在每个页面上,我看到使用null userdata生成新会话

关于模型构造函数

$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库工作正常..我已经使用了

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

修改 /application/config/config.php 并设置Cookie域变量

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

它会起作用!

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

答案 2 :(得分:0)

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

$ config ['sess_cookie_name'] ='somenewname'