php7.3升级后CI框架session失效session不能读取的问题

php7.3升级后CI框架session失效session不能读取的问题

框架ci3.0.2,php服务器从5升级到7.x后发现session失效了
ci无法设置session的问题
根本原因在,libraries/Session/Session.php 中 133行:

// Sanitize the cookie, because apparently PHP doesn't do that for userspace handlers
        if (isset($_COOKIE[$this->_config['cookie_name']])
            && (
                ! is_string($_COOKIE[$this->_config['cookie_name']])
                OR ! preg_match('/^[0-9a-z]{10,40}$/', $_COOKIE[$this->_config['cookie_name']])
            )
        )
        {
            unset($_COOKIE[$this->_config['cookie_name']]);
        }

        session_start();

 


如果sessionid的长度不是40的话,每次执行都会 unset($_COOKIE[ci_session])。而session_id取值范围和长度在php7中变了(默认是26)

解决办法:
将上面的/^[0-9a-f]{40}$/, 改成 /^[0-9a-z]{10,40}$/

posted @ 2019-06-06 06:55  大自然的流风  阅读(2154)  评论(0编辑  收藏  举报