用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6795|回复: 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 | 显示全部楼层
这个大赞啊,很多朋友貌似都遇到了这个问题。

本版积分规则