【问题标题】:codeigniter session cookie not savedcodeigniter 会话 cookie 未保存
【发布时间】:2018-05-26 22:57:05
【问题描述】:

我的会话无法正常工作

这是我的配置:

$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

【问题讨论】:

  • 已经在config/autoload.php中加载了会话库?

标签: php codeigniter session-cookies shared-hosting


【解决方案1】:

尝试将会话存储到数据库 试试:

    $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`)
);

【讨论】:

    【解决方案2】:

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

     $config['sess_save_path'] = APPPATH . 'sessions';
    

    并确保/application/sessions 是可写的。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-13
        • 2012-05-29
        • 2018-11-19
        • 1970-01-01
        • 2016-10-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多