swfupload php session丢失,CI中使用flash上传插件时session丢失解决方案

flash使用单独的session进程,把php中的session给覆盖掉了,然后后台中取不到php起初设置的session,然后就退出了,所以在使用flash程序中必须解决这个问题,除了在设置刚开始我们修改的session文件外,还需要修改swfupload的初始化配置信息。

var upload1;

var loadInit = function() {

upload1 = new SWFUpload({

// Backend Settings

upload_url:" echo base_url()?>index.php/upload/upload/server/<?php echosession_id(); ?>/<?php echo$this->session->userdata('uid');?>/<?php echo$this->session->userdata('level');?>/<?php echo$this->session->userdata('admin_name');?>",

post_params: {

"PHPSESSID" : "<?php echo session_id(); ?>",

"sessionUid":"<?php echo $this->session->userdata('uid');?>",

"sessionLevel":"<?php echo $this->session->userdata('level');?>",

"sessionName":"<?php echo $this->session->userdata('admin_name');?>"

},

// File Upload Settings

file_size_limit : "102400000",    // 100MB

file_types : "*.*",

file_types_description : "All Files",

file_upload_limit : "100",

file_queue_limit : "0",

// Event Handler Settings (all my handlers are in the Handler.js file)

file_dialog_start_handler : fileDialogStart,

file_queued_handler : fileQueued,

file_queue_error_handler : fileQueueError,

file_dialog_complete_handler : fileDialogComplete,

upload_start_handler : uploadStart,

upload_progress_handler : uploadProgress,

upload_error_handler : uploadError,

upload_success_handler : uploadSuccess,

upload_complete_handler : uploadComplete,

// Button Settings

button_image_url : " echo base_url()?>images/XPButtonUploadText_61x22.png",

button_placeholder_id : "spanButtonPlaceholder1",

button_width: 61,

button_height: 22,

// Flash Settings

flash_url : " echo base_url()?>js/swfupload/swfupload.swf",

custom_settings : {

progressTarget : "fsUploadProgress1",

cancelButtonId : "btnCancel1"

},

// 我们可以在此设置是否输出调试信息

debug: true

});

}

addLoadEvent(loadInit);

注意标注紫色背景部分的代码,起初的时候我在upload_url参数中只设置为upload_url: " echo base_url()?>index.php/upload/upload/server/,设置post_params为示例中的内容。但是,在控制器中取不到我post过来的值,可能是flash中的某些操作吧post值给覆盖掉了,我也不是很清楚。然后我就尝试了在url中传递保存的session信息。将upload_url参数改为:upload_url:" echo base_url()?>index.php/upload/upload/server/<?php echosession_id(); ?>/<?php echo$this->session->userdata('uid');?>/<?php echo$this->session->userdata('level');?>/<?php echo$this->session->userdata('admin_name');?>",然后相应的修改一下控制器的函数:

public function server($sid='',$uid='',$level='',$name='') {

if($sid!=''&&$uid!=''&&$level!=''&&$name!='') {

session_id($sid);//重新生成session

$this->session->set_userdata('uid',$uid);

$this->session->set_userdata('level',$level);

$this->session->set_userdata('admin_name',$name);

//输入文件大小等安全性检测。。。。。。。

//如果安全性符合要求,我们开始上传:

if (!@move_uploaded_file($_FILES[$upload_name]["tmp_name"], $save_path.$file_name)) {

$this->HandleError("File could not be saved.");

exit(0);

}//上传结束

else {

$this->HandleError('you have not login!!');//提示尚未登录

}

}

最后重新登录后台,运行swfupload那部分功能,竟然不退出了,大功告成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值