收藏本站 Archiver
    请 后使用快捷导航
    没有账号?入住 CI 中国社区
    查看: 7282|回复: 2

    [初级] CI总是验证码错误,拿回来的session总是空的解决办法

    [复制链接]
    楼主
    发表于 2017年5月13日 11:38:06 | 只看该作者 回帖奖励 |倒序浏览 |
    本帖最后由 1023102176 于 2017年5月13日 11:50 编辑

    CI是3.0.6,php原来是7.0.10,昨天闲来无事升级了php7.1.5,登录时总说验证码错误

    最后查到session的flashdata()出来为空的,然后继续往下查

    查到libraries/session.php下133行的preg_match('/^[0-9a-zA-Z]{40}$/', $_COOKIE[$this->_config['cookie_name']]),发现不对哦拿到的session_id是26位的,这个验证是40位的,果断切回7.0.10看看,果然是40位的。

    什么原因呢?继续找,先看CI有木有配置session长度的,嗯,果然没发现有,最后怀疑是php搞的鬼,查php.ini文件看看
    搜索关键字26,找到这样的配置项,嗯,9成是这个东西搞鬼了
    session.sid_length = 26

    再回到7.0.10和5.6.25看看,根本没session.sid_length这个东西,搜索40这个关键字毫无所获,目前也不清楚为啥他们就是40位呢?

    实验结论开始了,修改为session.sid_length = 40,验证通过,或者改libraries/session.php下133行的preg_match('/^[0-9a-zA-Z]{40}$/', $_COOKIE[$this->_config['cookie_name']])为preg_match('/^[0-9a-zA-Z]{26,40}$/', $_COOKIE[$this->_config['cookie_name']])也可以

    如果注掉session.sid_length的话,长度为32位。

    各位大神轻喷

    评分

    参与人数 1 威望 +5 理由
    Hex + 5 赞一个!

    查看全部评分

    沙发
    发表于 2017年5月16日 10:24:19 | 只看该作者
    这个大赞啊,很多朋友貌似都遇到了这个问题。
    藤椅
    发表于 2017年6月13日 17:22:42 | 只看该作者
    感謝分享~
    返回列表
    您需要登录后才可以回帖 登录 | 入住 CI 中国社区

    本版积分规则

    AltStyle によって変換されたページ (->オリジナル) /