ASP相关的编程
Apr
5
<style type="text/css">
.filelist{ clear:both;}
.filelist ul li{list-style:none;float:left; width:200px;}
</style>
<%
response.Write("<div class='filelist'><ul><li>文件夹或文件</li><li>文件大小</li><li>最后修改时间</li></ul></div>")
filepath="文件夹相对路径"
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fileobj = fso.GetFolder(server.mappath(filepath))
Set fsofolders = fileobj.SubFolders
Set fsofile = fileobj.Files
For Each folder in fsofolders
response.Write("<div class='filelist'><ul><li>"&folder.name&"</li><li>"&folder.size&"</li><li>"&folder.datelastmodified&"</li></ul></div>")
Next
For Each file in fsofile
response.Write("<div class='filelist'><ul><li>"&file.name&"</li><li>"&file.size&"</li><li>"&file.datelastmodified&"</li></ul></div>")
Next
%>
Jan
22
asp写了那么长时间都没有发现,今天居然让我碰到了。
网页页面是一个标题和信息内容(备注型)的修改提交,第一次提交修改没有问题,第二次提交修改就出现错误:
Microsoft JET Database Engine 错误 '80004005'
所有记录中均未找到搜索关键字。
开始一直调试是不是数据错误,Access的“压缩和修复数据库”也点了很多次,等第二次提交修改都出现问题,后来使用信息内容换成少量字符(随便几个字符),提交了N次都正常,开始还怀疑我的Access数据库是不是出问题了,怪了。百度搜索一下错误代码,发现还蛮多这样的文章,哈,找到原因了。
如果access的备注字段存在索引,当字段的内容超过1908个字节后,该记录将不可删除,就会出现上面的问题。原来是数据库的信息内容字段(即备注字段)不知道什么时候加了“索引”。把索引改成“无”就都好了。
现在很郁闷的是建立一个备注型的字段,它默认索引就是“无”的,不知道我什么时候操作修改过表的索引类型还是Access本身的BUG。
不过总结下知道了这样的错误的解决方式就可以了,下次编程开发中就又多了一份经验了。
网页页面是一个标题和信息内容(备注型)的修改提交,第一次提交修改没有问题,第二次提交修改就出现错误:
Microsoft JET Database Engine 错误 '80004005'
所有记录中均未找到搜索关键字。
开始一直调试是不是数据错误,Access的“压缩和修复数据库”也点了很多次,等第二次提交修改都出现问题,后来使用信息内容换成少量字符(随便几个字符),提交了N次都正常,开始还怀疑我的Access数据库是不是出问题了,怪了。百度搜索一下错误代码,发现还蛮多这样的文章,哈,找到原因了。
如果access的备注字段存在索引,当字段的内容超过1908个字节后,该记录将不可删除,就会出现上面的问题。原来是数据库的信息内容字段(即备注字段)不知道什么时候加了“索引”。把索引改成“无”就都好了。
现在很郁闷的是建立一个备注型的字段,它默认索引就是“无”的,不知道我什么时候操作修改过表的索引类型还是Access本身的BUG。
不过总结下知道了这样的错误的解决方式就可以了,下次编程开发中就又多了一份经验了。
Jan
11
发点时间自己整理了一份描述比较详细的JMail发邮件方法。希望有用的人可以用的上,以下代码参数设置正确是完全可以发送的。
<%
dim Jmail,sendstate '定义变量
set Jmail=Server.CreateObject("JMail.Message") '建立一个JMail对象
Jmail.logging=true '启用日志功能,启用后可以使用Jmail.log返回W3 JMail创建的日志等
Jmail.silent=true
'设置为True后,使用Send方法将忽略所有错误而不将错误返回给操作系统,Send方法并返回一个布尔变量,发送成功返回True,反之返回Flase
'设置为True后,如果发送失败,可以使用Jmail.ErrorCode返回错误号或Jmail.ErrorMessage返回错误说明,以便知道发生什么错误
Jmail.Charset="gb2312" '设置邮件使用的字符,不设置默认为US-ASCII
Jmail.Priority=3 '设置邮件的优先级,设置3表示中等
Jmail.from="发件人的邮箱地址" '邮箱格式,收信人点回复的邮箱地址默认就是这个
Jmail.fromname="发件人的姓名" '不是很重要,可以不设置
Jmail.AddRecipient "收件人邮箱地址","收件人姓名"
'一般常见使用2个参数,当然没有姓名你可以去掉第2个姓名参数
'想发送给多个邮箱,可以多写几行此方法,分别设置不一样的邮箱
Jmail.mailserverusername="SMTP服务器登录用户名" 'Smtp认证时需要的登录用户名,门户申请的邮箱一般不带@及后面的域名
Jmail.mailserverpassword="SMTP服务器登录密码" '这个不用多说了吧
Jmail.subject="邮件的标题"
'这样添加一个普通邮件附件,可选
Jmail.AddAttachment(Server.MapPath("附件的相对路径"))
'这样添加一个内嵌邮件附件,可选
dim attachmentid '定义一个附件的变量
attachmentid=Jmail.AddAttachment(Server.MapPath("附件的相对路径")) '插入附件使用"cid:" & contentId。比如MailBody="<img src=""cid:" & contentId & """>"
'邮件内容设置开始
'如果你想使用HTML格式发送:
Jmail.ContentType = "text/html" '设置邮件正文格式为html
Jmail.htmlbody="邮件的具体内容" '就是html的格式内容
'如果你想使用文本格式发送:
Jmail.body="邮件的具体内容" '这里就是文本内容asp可以使用vbcrlf或vbnewline文本换行
'以上2种格式发送看自己需求选择一种
'邮件内容设置结束
if not Jmail.send("邮件的SMTP服务器") then
'上面的登录用户名和密码必须和这边的对应。门户邮箱一般为(smtp.域名.域名后缀),企业邮局常见为(mail.域名.域名后缀)
sendstate=false
else
sendstate=true
end if
Jmail.close '关闭对象
set Jmail=nothing '清空对象
'下面还可以利用sendstate变量来判断邮件发送与否的处理,当然你如果有能力可以写成函数更好。
%>
<%
dim Jmail,sendstate '定义变量
set Jmail=Server.CreateObject("JMail.Message") '建立一个JMail对象
Jmail.logging=true '启用日志功能,启用后可以使用Jmail.log返回W3 JMail创建的日志等
Jmail.silent=true
'设置为True后,使用Send方法将忽略所有错误而不将错误返回给操作系统,Send方法并返回一个布尔变量,发送成功返回True,反之返回Flase
'设置为True后,如果发送失败,可以使用Jmail.ErrorCode返回错误号或Jmail.ErrorMessage返回错误说明,以便知道发生什么错误
Jmail.Charset="gb2312" '设置邮件使用的字符,不设置默认为US-ASCII
Jmail.Priority=3 '设置邮件的优先级,设置3表示中等
Jmail.from="发件人的邮箱地址" '邮箱格式,收信人点回复的邮箱地址默认就是这个
Jmail.fromname="发件人的姓名" '不是很重要,可以不设置
Jmail.AddRecipient "收件人邮箱地址","收件人姓名"
'一般常见使用2个参数,当然没有姓名你可以去掉第2个姓名参数
'想发送给多个邮箱,可以多写几行此方法,分别设置不一样的邮箱
Jmail.mailserverusername="SMTP服务器登录用户名" 'Smtp认证时需要的登录用户名,门户申请的邮箱一般不带@及后面的域名
Jmail.mailserverpassword="SMTP服务器登录密码" '这个不用多说了吧
Jmail.subject="邮件的标题"
'这样添加一个普通邮件附件,可选
Jmail.AddAttachment(Server.MapPath("附件的相对路径"))
'这样添加一个内嵌邮件附件,可选
dim attachmentid '定义一个附件的变量
attachmentid=Jmail.AddAttachment(Server.MapPath("附件的相对路径")) '插入附件使用"cid:" & contentId。比如MailBody="<img src=""cid:" & contentId & """>"
'邮件内容设置开始
'如果你想使用HTML格式发送:
Jmail.ContentType = "text/html" '设置邮件正文格式为html
Jmail.htmlbody="邮件的具体内容" '就是html的格式内容
'如果你想使用文本格式发送:
Jmail.body="邮件的具体内容" '这里就是文本内容asp可以使用vbcrlf或vbnewline文本换行
'以上2种格式发送看自己需求选择一种
'邮件内容设置结束
if not Jmail.send("邮件的SMTP服务器") then
'上面的登录用户名和密码必须和这边的对应。门户邮箱一般为(smtp.域名.域名后缀),企业邮局常见为(mail.域名.域名后缀)
sendstate=false
else
sendstate=true
end if
Jmail.close '关闭对象
set Jmail=nothing '清空对象
'下面还可以利用sendstate变量来判断邮件发送与否的处理,当然你如果有能力可以写成函数更好。
%>
Jan
9
有写过asp代码的人都知道,很多程序都喜欢在数据库连接的地方加入一行On Error Resume Next,这样当连接数据库出错的时候,可以很友好的提示一段特殊的字符来提醒访客。
On Error Resume Next在asp中的作用是如果发生错误就继续执行出错语句下面的那句。按正常的话,如果程序一出错,asp就或会报告错误代码和错误行数等并停止运行。错误并不严重,不会产生严重影响,你可以在可能出错的语句前面加上这句。但是如果错误很严重,会影响到后面的语句执行,就建议不要使用这段语句了。
对于初学程序的朋友,建议先去掉或注释掉这句代码再开发程序,等程序全部开发完成的时候再加上上去,这样可以防止恶意攻击网站的人看不到错误信息,也可以起到一定的保护作用。否则带着这语句开发,可能出现很多bug,这些都是对程序不负责的人所做的。
On Error GoTo 0 表示禁止当前过程中任何已启动的错误处理程序。使用这条语句会让系统不再沉默,一旦有错误发生就会提示错误,并结束脚本执行。假如你前面使用了On Error Resume Next容错代码,在当前不想他继续容错,你可以加上On Error GoTo 0,这样On Error GoTo 0之前的语句错误都将直接报错
举个简单例子
<%
on error resume next
dim i
i = 1/0
Response.Write "输出第一个内容"
on error goto 0
i = 1/0
Response.Write "输出第二个内容"
%>
这个例子的输出结果:
输出第一个内容
Microsoft VBScript 运行时错误 错误 '800a000b'
被零除
/d/index.asp,行 7
On Error Resume Next在asp中的作用是如果发生错误就继续执行出错语句下面的那句。按正常的话,如果程序一出错,asp就或会报告错误代码和错误行数等并停止运行。错误并不严重,不会产生严重影响,你可以在可能出错的语句前面加上这句。但是如果错误很严重,会影响到后面的语句执行,就建议不要使用这段语句了。
对于初学程序的朋友,建议先去掉或注释掉这句代码再开发程序,等程序全部开发完成的时候再加上上去,这样可以防止恶意攻击网站的人看不到错误信息,也可以起到一定的保护作用。否则带着这语句开发,可能出现很多bug,这些都是对程序不负责的人所做的。
On Error GoTo 0 表示禁止当前过程中任何已启动的错误处理程序。使用这条语句会让系统不再沉默,一旦有错误发生就会提示错误,并结束脚本执行。假如你前面使用了On Error Resume Next容错代码,在当前不想他继续容错,你可以加上On Error GoTo 0,这样On Error GoTo 0之前的语句错误都将直接报错
举个简单例子
<%
on error resume next
dim i
i = 1/0
Response.Write "输出第一个内容"
on error goto 0
i = 1/0
Response.Write "输出第二个内容"
%>
这个例子的输出结果:
输出第一个内容
Microsoft VBScript 运行时错误 错误 '800a000b'
被零除
/d/index.asp,行 7
Jan
7
今天无意中发现一个站点的的文件夹图片怎么那么多,好像信息没有多少条,估计是信息删除图片没有跟着一起删除掉,想想之前写程序时,删除信息都有写删除图片的代码,估计是哪里程序写错了。可是检查了一会,发现代码完全没有错,变量的图片路径也正确,咋就删除不了,关了asp的容错代码,发现报错
Microsoft VBScript 运行时错误 错误 '800a0046'
没有权限
呵呵找到原因了。没有权限肯定是服务器的目录或文件的权限没有设定好,网络上的文章找了一些文章,发现都是去修改system32下的scrrun.dll文件的权限,我也试试去修改了下,发现没有作用。
解决的方法是在网站的目录加上CREATOR OWNER的所有权限;
scrrun.dll的权限为:
Administrators 全部权限
Power Users 读取和运行、读取
SYSTEM 全部权限
Users 读取和运行、读取
网站目录的权限为:
Administrators 全部权限
SYSTEM 全部权限
CREATOR OWNER 全部权限
Users 读取和运行、读取
IIS用户 读取、运行
Microsoft VBScript 运行时错误 错误 '800a0046'
没有权限
呵呵找到原因了。没有权限肯定是服务器的目录或文件的权限没有设定好,网络上的文章找了一些文章,发现都是去修改system32下的scrrun.dll文件的权限,我也试试去修改了下,发现没有作用。
解决的方法是在网站的目录加上CREATOR OWNER的所有权限;
scrrun.dll的权限为:
Administrators 全部权限
Power Users 读取和运行、读取
SYSTEM 全部权限
Users 读取和运行、读取
网站目录的权限为:
Administrators 全部权限
SYSTEM 全部权限
CREATOR OWNER 全部权限
Users 读取和运行、读取
IIS用户 读取、运行




