由于uploadify属于flash上传,意味着当上传的时候会新建一个新的session会话,php后台处理的时候会接收不到当前浏览器的session会话参数. 如果上传文件后台地址做了基于服务器session值作为登录或者其他条件判断的话,将会失效.这也是 uploadify 一个bug,官方给出了php的解决方法.
In Uploadify, the Flash file is what communicates with the backend script. Because of a bug in Flash, the session cookie is not picked up by the Flash file. To circumvent this, you will need to pass the session data via the formDataoption. To do this in PHP, use the following code when initializing Uploadify on the front-end page:
前台使用uploadify的地方加入一下代码
$('#file_upload).uploadify({
// Your normal options here
formData : { '<?php echo session_name();?>' : '<?php echo session_id();?>' }
});
后台方面,即加入判断如果存在了session_name则 以uploadify传入的session作为新的依据
$session_name = session_name();
if (!isset($_POST[$session_name])){
//exit;
} else {
session_destroy();
session_id($_POST[$session_name]);
@session_start();
}
如果使用的是thinkphp框架的话,前端不变,后端如果使用的是tp中的session作为判决依据则可以这么写
$session_name = session_name();
if (!isset($_POST[$session_name])){
//exit;
} else {
session('[pause]'); //tp默认已经开启,先暂停
session_id($_POST[$session_name]); //这个要在session_start()之前
session('[start]'); //再开启
}