十一天没有写博客了~~先来和大家打个招呼!
这些天过得还好,天气暖和了,心情也不错.就是没能来写博客,比较遗憾~
自从博客开通几天之后,有朋友说不希望我的博客成为我的备课本,不希望我写太多技术方面的文章.所以就一直没有写,把几个有关技术的分类都删除了..今天给SSF修改后台程序,遇到一个问题,憋了足足一下午,最后终于解决了,心情愉快,赶紧上来写下来,记在这里,怕以后忘了,也可以给遇到同类问题的朋友作为参考.
问题描述:
EWEBEDITOR在线编辑器,在部分服务器上使用文件上传功能时提示"d_file.myform.uploadfile 为空或不是对象"
问题原因:
经BAIDU反复搜索和试验,认为由于服务器安装了反病毒或反木马工具,对ASP程序中的server.createobject("abodb.stream")语句进行了屏蔽.由于这个语句无法直接执行,因此导致出现上述问题.(主要是屏蔽了主目录下的Upload.asp,另外include/upload_class.asp中也有几处.upload.asp中的一处最为重要)。
解决办法:
由于杀病毒软件只是对代码进行字符串匹配,并不直接阻止adodb.stream对象的创建,因此考虑可以通过简单地改变字符串结构来绕过检查.
server.createobject("adodb." & "stream")
网上很多资料都提供了这个修改方法,不过经过测试,此法无效.估计是新版本的杀病毒软件对该语句进行了模糊匹配或正则表达式匹配,因此无法通过简单的截断字符串再连接起来的方法绕过.于是修改成以下更为复杂的语句:
strnqp="ado"
strnqp=strnqp&"db."
strnqp=strnqp&"strea"
strnqp=strnqp&"m"
Set Ads = Server.CreateObject(strnqp)
此时测试,一切正常!
看来,新版本的杀毒软件已经"聪明"多了,不会被雕虫小技欺骗.不过机器毕竟是机器,只要没有禁止adodb.stream组件的使用,总有办法可以从杀毒软件眼皮底下蒙混过关.
以上是解决经过,和搞ASP的朋友们交流.