1023102176 发表于 2017-5-13 11:38:06

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

本帖最后由 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('/^{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('/^{40}$/', $_COOKIE[$this->_config['cookie_name']])为preg_match('/^{26,40}$/', $_COOKIE[$this->_config['cookie_name']])也可以

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

各位大神轻喷

Hex 发表于 2017-5-16 10:24:19

这个大赞啊,很多朋友貌似都遇到了这个问题。

raylzw 发表于 2017-6-13 17:22:42

感謝分享~
页: [1]
查看完整版本: CI总是验证码错误,拿回来的session总是空的解决办法