|
本帖最后由 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位。
各位大神轻喷
|
评分
-
查看全部评分
|