codeigniter会话cookie未保存

时间:2017-12-13 05:57:56

标签: php codeigniter session-cookies shared-hosting

我的会话无法正常运作

这是我的配置:

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

$config['cookie_prefix']    = '';
$config['cookie_domain']    = '';
$config['cookie_path']      = '/';
$config['cookie_secure']    = FALSE;
$config['cookie_httponly']  = FALSE;

会话实际上已保存,但重定向后我丢失了会话数据 经过一些故障排除后,我发现COOKIE ci_session为NULL且设置不正确 我试图在session.php上手动设置它,但是它没有工作,甚至在将它们设置为某些值并立即打印cookie后,结果始终为NULL

但如果我尝试在控制器上设置它,那么cookie就可以保存得很好

public function test_save_cookie()
{
    $cookie = array(
        'name'   => 'home_set',
        'value'  => 'home page Change 2',
        'expire' => time()+86500,
        'domain' => '',
        'path'   => '/',
        'prefix' => '',
        );
    $this->input->set_cookie($cookie);
    var_dump($_COOKIE['home_set']);
    var_dump($this->input->cookie('home_set',TRUE));


    setcookie(
        "asdasd",
        session_id(),
        (empty($this->_config['cookie_lifetime']) ? 0 : time()),
        '/',
        '',
        FALSE,
        TRUE
    );
    var_dump($_COOKIE['asdasd']);
}

public function test_cookie()
{
    var_dump($this->input->cookie('name',TRUE));
    var_dump($_COOKIE['home_set']);
    var_dump($_COOKIE['ci_session']);

    var_dump(session_id());
}

我在godaddy的共享托管服务上托管codeigniter项目 在本地我使用PHP 5.5.15,我使用的服务器使用PHP 5.5.38

3 个答案:

答案 0 :(得分:0)

尝试将会话存储到db 尝试:

    $config['sess_driver'] = 'database';
$config['sess_save_path'] = 'ci_sessions';

对于mysql_database:

CREATE TABLE IF NOT EXISTS `ci_sessions` (
    `id` varchar(40) NOT NULL,
    `ip_address` varchar(45) NOT NULL,
    `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
    `data` blob NOT NULL,
    KEY `ci_sessions_timestamp` (`timestamp`)
);

答案 1 :(得分:0)

尝试设置会话保存路径,例如

/application/sessions

并确保> mkdir yo; cd yo; 可写。

答案 2 :(得分:0)

为cookie前缀添加一个值。像这样: $ config ['cookie_prefix'] ='some_value'