Uploadify上传文件的SESSION丢失的问题( CodeIgniter)


CI默认的session采用的是cookie session,其中有一项配置是需要你选择是否匹配useragent。

$config['sess_cookie_name']             = '_stblog_sessions';
$config['sess_expiration']              = 7200;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']              = 'sessions';
$config['sess_match_ip']                = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

一般情况下,因为诸如uploadify,swfupload采用的都是flash客户端,这样它们产生的useragent与用户使用浏览器的 user-agent必然不同。所以,虽然用户登录了你的系统产生了一个session,但是当触发上传程序时会产生另一个session(在上述 useragent选项开启的情况下)。

所以,不是session丢失了,而是当你上传文件时,CI为uploadify另外创建了一个session。

解决方案:
1. 将$config['sess_match_useragent']设置成FALSE,重试。
2. (建议)为了安全起见,不建议使用第1条解决方案,而是使用另外的验证方法,比如在每次上传时,在url中附加一个token与服务器端的token比对 (比如这个token可以是用户名的hash值)。具体实现方法请参考stblog的上传验证实现(使用的是swfupload)。

Have any Question or Comment?

发表回复

Archives