SWPUpload上传插件在某些浏览器中获取不到session值

项目是用的开源cms二次开发的,这两天发现个问题,在上传表格导入数据时在某些浏览器(我本机是火狐、有的人是chrom也不行)没有反映,很怪异!

在火狐下测试:

当上传的时候firebug中控制器有错误提示如下图

排错:

  1. 可是这第一行也没有什么错误啊!网上搜了下这个错误,说可能是页面中ajax返回值的错误,那也就是说是我的php程序出了问题!如果是php代码有错误在部分浏览器中又没有问题!
  2. 在前端页面js中接收php处理过的json地方进行排错console.log(json),经过多处测试终于找到了问题

问题:通过console.log可以在firebug中打印出php输出的内容提示没有登录cms系统!

也就是说登录系统所有session值都被这个上传插件给屏蔽了,网上搜了下说主要是swf的请求导致原有的cookies失效,php的session机制还是基于客户端cookie存放的,所以会报没有登录系统的错误。

解决办法1:在upload_url中添加对应参数

  1. 将系统登录所需要的session数值事先存放到swpupload代码段的请求参数中
  2. 在php脚本中进行判断当前这个session值是否存在,如果不存在则获取$_GET传过来的参数并赋值给这个session
  3. 系统中不仅仅是这个登录的session丢失了,其他的session也是获取不到的,所以还是的慢慢调试,缺少哪些session值就给哪些值

解决办法2:官方有post_params这么一个设置可将sessionid回传给服务器

 

总结:使用此插件需要将程序中的所用到的session值通过上边任意一个方法(推荐官方给的post_param)传回给php程序,确保程序所用的session值是存在的,就可以了,具体需要修改哪些地方还需要根据程序实现的不同功能在做修改。

发表评论