今天在用jQuery的上传插件uploadify上传文件到后台处理数据的时候,发现session信息和当前会话session不一致,整理了一下如下:
由于uploadify属于flash上传,意味着当上传的时候会新建一个新的session会话,php后台处理的时候会接收不到当前浏览器的session会话参数而被服务器拒绝。
session是存放在服务器里面,但是一旦程序中加入这句session_start()代码,会产生一个叫做PHPSESSID的cookies,它的值就是当前会话的session_id。所以解决uploadify上传丢失session的问题就有了一些线索,也可以根据此线索解决一般类似的问题。
在uploadify插件的配置中,有一个scriptData,这个是向后台处理程序发送post数据的一个接口(uploadify配置get方式的话,是以get方式发送)。然后设置好参数如下:
这样即可以在上传的时候向后台发送PHPSESSID参数了,如果用post方式,则用$_POST['PHPSESSID'],如果是get方式,则用$_GET['PHPSESSID']接收session_id;
代码如下:
然后用uploadify插件上传的时候就不会出现会话丢失的问题了。
注意的是,先session_id($_POST['PHPSESSID']);再session_start();
时间:2014年10月25号
由于uploadify属于flash上传,意味着当上传的时候会新建一个新的session会话,php后台处理的时候会接收不到当前浏览器的session会话参数而被服务器拒绝。
session是存放在服务器里面,但是一旦程序中加入这句session_start()代码,会产生一个叫做PHPSESSID的cookies,它的值就是当前会话的session_id。所以解决uploadify上传丢失session的问题就有了一些线索,也可以根据此线索解决一般类似的问题。
在uploadify插件的配置中,有一个scriptData,这个是向后台处理程序发送post数据的一个接口(uploadify配置get方式的话,是以get方式发送)。然后设置好参数如下:
'scriptData' : {'PHPSESSID':GetCookie('PHPSESSID')}
这样即可以在上传的时候向后台发送PHPSESSID参数了,如果用post方式,则用$_POST['PHPSESSID'],如果是get方式,则用$_GET['PHPSESSID']接收session_id;
代码如下:
if(!empty($_POST['PHPSESSID']))session_id($_POST['PHPSESSID']);
session_start();
然后用uploadify插件上传的时候就不会出现会话丢失的问题了。
注意的是,先session_id($_POST['PHPSESSID']);再session_start();
时间:2014年10月25号