/ session

百度编辑器Ueditor图片上传session验证

最近在一个项目中使用了Ueditor,感觉还行。

但是在处理文件上传权限时发现使用的是flash上传,上传时的sessionid和浏览器sessionid不一致,导致不能正确判断用户是否拥有上传权限。

因为之前用过swfupload,也是通过flash上传文件,他是通过附加一个PHPSESSID参数来实现session共享的。

但是查看了Ueditor的官方文档,却没找到相关的资料,也没有session相关的配置,就不了了之了。

此事搁置几周之后,为了定位一个BUG,我查看了Ueditor图片上传的数据包,发现里面有两个奇怪的参数

“param1″:”value1”, “param2″:”value2”

这个很像是demo传的数据,但是配置里面并没有这两个设置,于是我查看了源代码。

上传图片的页面是dialogs/image/image.html,在102行看到了这两个参数,看来这应该就是和swfupload里面的附加参数是一样效果,只要把PHPSESSID放在这里就可以了。

但是问题又来了,image.html是个静态页面,不能通过这种方式写入sessionid,如果把image.html改成动态页面又要修改编辑器js文件,代价有点大。

又看了看image.html源码,突然想到可以把sessionid当成配置参数,然后在image.html里面调用。

把102行的ext修改成如下代码

ext:'{"PHPSESSID":"'+editor.options.PHPSESSID+'"}',

这样我们只要在配置里面增加一个PHPSESSID参数就可以了。

Ueditor支持在实例化时传入参数,所以就方便很多了,代码如下:

var editor = new baidu.editor.ui.Editor({PHPSESSID:''});

在输出给用户浏览器时会被替换成sessionid,flash在上传图片时就会带上这个sessionid,后台接受上传代码增加如下代码

if (isset($_POST["PHPSESSID"])) { session_id($_POST["PHPSESSID"]); }

这样就把flash的session替换成了用户浏览器的session,后面检测权限什么的就可以根据session来写了。

百度编辑器Ueditor图片上传session验证
Share this