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

大部分网站的上传文件功能都要求用户登录,而判断用户登录状态通常是用session标记。 php

如今流行flash上传插件,优势是显示每一个文件上传的进度条,可中途取消,暂停等等。 html

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

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

咱们知道,php里启用session,每一个session都会有一个sessionid做为session文件标识,也就是说,当一个用户访问网页的时候,php会自动给这个用户建立一个session,而用户每次访问的时候,php会先判断这个用户有没有sessionid,有的话就会根据sessionid去读取以前存储的session,也就是说一个sessionid对应一个用户。而咱们使用flash上传的时候,实际上php是将flash看成一个新的用户,默认是没有对应的sessionid的。
那么咱们只要想办法把sessionid这个钥匙给flash,让它带到服务器上,服务器再根据这把钥匙打开对应的session就好了,就好像是一根宽带,用路由器拨号共享给多我的。 session

php端: 网站


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



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

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

以uploadify为例: 插件

只要在初始化的时候,在 formData : {"sessid":"<?php echo session_id();?>"} 便可将session_id传给服务器。 code

相关文章
相关标签/搜索