CodeIgniter3框架session失效解決

原文地址http://ken.weiaai.com/455.html/comment-page-3#comments

項目使用框架爲:CodeIgniter

原本項目環境使用的是php5.6,在安裝了php7後,項目的session失效了,檢查原因,發現該框架的Libraries/Session/Session.php中的129行左右是這樣寫的:

<?php
if (isset($_COOKIE[$this->_config['cookie_name']]) && (! is_string($_COOKIE[$this->_config['cookie_name']])
OR ! preg_match('/^[0-9a-z]{40}$/', $_COOKIE[$this->_config['cookie_name']])))
{
  unset($_COOKIE[$this->_config['cookie_name']]);
}

關鍵在於這句preg_match('/^[0-9a-z]{40}$/', $_COOKIE[$this->_config['cookie_name']])中的正則匹配範圍是40,而回頭我在phpinfo()裏面卻發現session.sid_length = 26.

所以,要麼去php.ini裏面將session_sid長度修改成與框架的長度一致,要麼在上述代碼裏面修改一下正則匹配的範圍,然後session就正常了。

if (isset($_COOKIE[$this->_config['cookie_name']])
		&& (
		! is_string($_COOKIE[$this->_config['cookie_name']])
		OR (! preg_match('/^[0-9a-f]{40}$/', $_COOKIE[$this->_config['cookie_name']] ) && !preg_match('/^[0-9a-z]{26}$/', $_COOKIE[$this->_config['cookie_name']] ))
		)
		)
		{
		unset($_COOKIE[$this->_config['cookie_name']]);
		}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章