【发布时间】:2011-10-22 01:53:49
【问题描述】:
我正在使用 CodeIgniter 的会话功能,并且正在运行此代码:
$session_id = $this->session->userdata('session_id');
echo "My Session ID is $session_id";
每次我加载页面时它都会不断变化。这是否意味着会话没有正确保存?有没有办法调试这个并找出原因?还是我没有正确使用这个库?
启用错误报告后我没有收到任何错误,并且我正在使用 CI 的自动加载功能来加载会话库:
$autoload['libraries'] = array('session');
任何建议都会有所帮助,谢谢!
上述代码的示例输出:
我的会话 ID 是 7c92bac53d2654df6e87eb4e4cb25467
..重新加载..
我的会话 ID 是 c6dd14aed2499760f788a1364dcab030
更新:我在 config.php 中的会话配置如下所示:
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
所以我发现了
session_start();
$_SESSION['myvar']='var';
也不存储任何东西,我的 linux 服务器上的会话存储似乎有问题。
我的会话保存路径具有 apache:apache 775 权限。也许这应该转移到服务器故障?
【问题讨论】:
-
可能是一种内置的会话固定预防机制,尽管在每次请求时更改它听起来有点极端
-
您是否将会话保存到数据库?
-
@AlienWebguy 感谢您的回复,我用会话配置更新了我的问题,我没有使用数据库
-
@Phil,抱歉,我不熟悉内置的会话固定预防机制
-
@Pete 您使用的是Native Session 还是其他替代会话库?有关会话固定的更多信息,请参阅en.wikipedia.org/wiki/Session_fixation
标签: php session codeigniter sessionid