一个新的开始
fckeditor确实好用啊,到处都在用,连baidu都在用,所以第一次搞html编辑器就用了它,但它总是不争气,第一次是cdgyy网站被加注了很多脚本病毒文件,当时没有详细配config文件,所以路径完全暴露无疑,上传限制条目也没有维护,而fckeditor地的上传管理器又可以绕过身份认证访问到,后果可想而知,后来学校招生网也被黑了,虽然fckeditor的配置基本都处理过了,但是上传管理器等文件依然可以绕过认证,所以依然怀疑是不是fckeditor的某个问题。
今天突然有个用户说网站fckeditor编辑器里上传的图片想删除,怎么办?我当时说管理器里应该有的,你找找看,后来发现竟然没有。。。晕了,fckeditor真的太不完善了,看来baidu确实是做了很多扩展的。。于是,自己加上删除吧。。网上asp,php版的不少,aspx的倒很少,how?参考网上背菜刀的诗人的方法并整理:
1.修改\fckeditor\editor\filemanager\browser\default\frmresourceslist.html
修改函数oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )如下:
oListManager.GetFileRowHtml = function(fileName, fileUrl, fileSize) { var sLink = '<a href="#" onclick="OpenFile(\'' + ProtectPath(fileUrl) + '\'); return false;">'; var sIcon = oIcons.GetIcon(fileName); return '<tr>' + '<td width="16">' + sLink + '<img alt="" src="images/icons/' + sIcon + '.gif" width="16" height="16" border="0"> <\/a>' + '<\/td><td> ' + sLink + fileName + '<\/a> <a href="#" onclick="deleteFile(\'' + ProtectPath(fileUrl) + '\');" style="color: #FF9933;"> 删除 <\/a>' + '<\/td><td align="right" nowrap> ' + fileSize + ' KB' + '<\/td><\/tr>'; } |
其实就是在最后加个td里面放上个删除按钮。
2. 在该文件中加入如下代码:
//产生不重复的随机数 var rn = Math.ceil(Math.random() * 1000000); var rnch = rn; function rndnum() { while (rn == rnch) rn = Math.ceil(Math.random() * 1000000); rnch = rn; return rn; } // 删除文件 function deleteFile(file) { var xml = new ActiveXObject("MSXML2.XMLHTTP"); xml.open("get", "FCKdel_file.aspx?filePath=" + escape(file) + "&UD=" + rndnum(), false); xml.send(); Refresh(); switch (xml.responseText) { case "1": alert("文件删除成功!"); break; case "0": alert("文件删除失败!请检查文件是否存在!"); break; case "-1": alert("您不是系统管理员,无权进行操作!"); break; default: alert("未知错误!"); break; } } |
这方法写的。。等于是在里面调用另一个页的删除方法。很有想法。不错.
3.在同一个目录增加一个文件:FCKdel_file.aspx,代码如下:
<%@ Page Language="C#" %> <% //if 判断条件中,第一个条件是为了防止没有权限的用户删除文件,可以根据需要修改. if (Request.Cookies["f1ba02f2-649b-4d80-ab71-cc77d9edd19d"] != null) { if (Request.QueryString["UD"] != null) { try { System.IO.File.Delete(Server.MapPath(Request.QueryString["filePath"].Trim())); Response.Write("1"); } catch { Response.Write("0"); } } else Response.Write("0"); } else Response.Write("-1"); %> |
这才是真正的删除方法,写在了一个新页面里。
然后运行试试吧~ok了~fckeditor确实还有不少地方需要完善。。哎。
cafe.wh 10,14 2009
多线程.....
*cafe.wh创建于1,15 2009.
技术,生活,电影,还有其他...
*cafe.wh版权所有.请勿非法盗链及转载,由此产生的一切后果自负.
welcome to my blog!
Email:whpotter@hotmail.com
duola
十月 19th, 2009 at 9:50 下午
我用windows live write可以避免在线编辑器的多种缺点。
Reply
cafe.wh Reply:
十月 19th, 2009 at 10:06 下午
有空研究下~~
Reply
@pple
十月 20th, 2009 at 3:35 下午
PHP版的fck默认可以删除,不过上传也有同样问题,可以管理所有用户的服务器文件。所以建议仅用在后台,不要随便用来做留言板。
Reply
cafe.wh Reply:
十月 20th, 2009 at 4:56 下午
嗯~
Reply