您的位置:首页 > 其它

uploadify,swfupload等flash上传session丢失问题,无法接收到表单

2013-06-21 10:37 344 查看
大部分网站的上传文件功能都要求用户登陆,而判断用户登陆状态一般是用session标记。

现在流行flash上传插件,优点是显示每个文件上传的进度条,可中途取消,暂停等等。

然而用flash上传插件有个问题,那就是上传的时候flash会丢失session,服务端会以为是游客而拒绝处理。

解决办法是有的,下面慢慢道来:

我们知道,php里启用session,每个session都会有一个sessionid作为session文件标识,也就是说,当一个用户访问网页的时候,php会自动给这个用户创建一个session,而用户每次访问的时候,php会先判断这个用户有没有sessionid,有的话就会根据sessionid去读取之前存储的session,也就是说一个sessionid对应一个用户。而我们使用flash上传的时候,实际上php是将flash当作一个新的用户,默认是没有对应的sessionid的。

那么我们只要想办法把sessionid这个钥匙给flash,让它带到服务器上,服务器再根据这把钥匙打开对应的session就行了,就好像是一根宽带,用路由器拨号共享给多个人。

php端:

1
<?php
2
session_id(
$_REQUEST
[
"sessid"
]);
3
session_start();
4
?>
前端:

1
<
form
>
2
<
input
 
type
=
hidden
 
name
=
"sessid"
 
value=<?php
echo session_id();?>/>
3
<
input
 
type
=
submit
 
value
=
"提交"
/>
4
</
form
>
解释: 

我们前段页面里,通过echo session_id(); 将我们当前的session_id写入表单,php端接收到sessid,然后在启动session之前,先用session_id($sessid)来告诉服务器,我们要取这个session_id对应的session。

以uploadify为例:

只要在初始化的时候,在 formData : {"sessid":"<?php echo session_id();?>"} 即可将session_id传给服务器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uploadify