php session bug,thinkphp2.x中session的BUG及解决办法
很多人出現一個TP構建的APP,出現SESSION相同導致用戶未經授權就登陸了其它項目,N久沒有找到原因。今天晚上跟蹤了一下代碼,找到了問題。
主要原因在于TP在項目實例化的時候沒有對SESSION進行配置就直接初始化了。
/Core/App.class.php中看到這段代碼
[php]if(C('SESSION_AUTO_START')) session_start();[/php]
這里的代碼未考慮用戶的SESSION參數設置就直接初始化了,導致所有APP的SESSION全部按同樣的設置進入生產環境,就會出現session相同導致用戶信息出錯的問題。
正確的方法應該改成
[php]
// Session應該這樣初始化
if(C('SESSION_AUTO_START'))
{
import('Think.Util.Session');
Session::_init();
session_start();
}
[/php]
init的時候,可以設置session_name和session_path,這樣就可以給不同的項目設置不同的session特征。
然后可以在項目配置文件中,添加SESSION信息的設置
[php]
'SESSION_AUTO_START' => true,
'SESSION_NAME'=> 'tqc',
'SESSION_PATH' => dirname('.') .'/Data/Session',
[/php]
至此,問題解決。
總結
以上是生活随笔為你收集整理的php session bug,thinkphp2.x中session的BUG及解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html placehonlder属性,
- 下一篇: php for嵌套循环_PHP中的for