非常强大的ASP模板引擎类-Taihom ASP Template class

2011-01-16: 新版本 v4.0,(内核重写)

新版特性:支持单标签、块标签、支持嵌套模板、支持无限级嵌套循环、支持if逻辑嵌套判断、支持自定义标签、自定义标签属性和自由获取标签内容、支持生成静态页面等特性,标签定义方式可最大限度的给大家灵活与方便。

更新日志

[2010-01-20]
1、修正赋值部分如果传递 RS数据集记录为空的时候的处理
2、增加支持赋值多标签同值的支持:例如 tpl.d(“标签名1,标签名2”) = 相同值
3、修正多个子循环标签时候的标签路径
4、支持getAttr方法调用缺省属性,将会以数组方式返回同路径节点的所有属性字典数据
5、修正一些未定义的变量
6、增加getLabelValues方法,可以获取已经给标签赋值的值
7、增加调试模式,在有必要输出错误的地方,开启调试模式的时候会输出可能存在的错误
8、块标签的sql属性增加回调函数功能,以方便调用函数,返回正确的SQL语句
9、解决了一些标签大小写不一致时候获取不到值的BUG
10、修复 块标签提取 :body,:html,:eof方法失败
11、重新加入执行时间标签 {runtime},可返回页面执行的时间

[2010-01-16]
发布Taihom ASP Templates 模板引擎 4.0

使用说明

模板类的使用规范:

模板类的标签规则 说明
标签边界 { }、( ) 模板类的标签一共有三种标签:普通标签、块标签、功能标签 { }是模板标签边界,( )是在大括号引用标签时候使用的标签边界
普通标签 例子:{tpl:title len=”10″}

{ }是标签边界

tpl:标签头

title标签名

len=”10″标签属性

标签头、标签名、标签属性都是可以根据自己的需要自己定义,这个定义下面的块标签也一致
块标签 例子(标签名、属性可自定义):

{tpl:block} …. {/tpl:block}

{tpl:asdf name=”hellow”} …. {/tpl:asdf}

{tpl:loop id=”3″} …. {/tpl:loop}

{tpl:class id=”3″} …. {/tpl:class}

{tpl:class id=”3″} ..{class.name}.. {/tpl:class}

有开始+结束标签把模板代码包含起来,并且可以组成标签对的模板标签就是块标签,块标签是可以进行嵌套的。

块标签主要是用作数据块显示输出和数据循环输出

为了在设计中隐藏掉块标签代码,强烈建议在块标签前后加上HTML的注释符号,例如:
<!–{tpl:class id=”3″}–> ..{class.name}.. <!–{/tpl:class}–>

功能标签 include 功能标签目前有 {include }、{if }标签
插入文件标签 {include “模板文件”} 该模板类支持包含同模板目录下的文件,例如 {include(“head.html”)}
逻辑标签 {if “(tpl:name)”=”a”}…{ef “(tpl:name)”=”b”} …{else} ..{/if} 逻辑标签~ 故名肆意用来做判断用的,用法跟ASP的IF是一样的,也可以支持嵌套。不过建议在模板中少用逻辑标签,尽量把最终的结果给到模板,以提升模板运作的效率

下面是一个简单示例:

Dim tpl
Set tpl = New Taihom_tpl'实例化模板引擎
    '=====================================下面是模板公共设置
    '可选参数,如果用到循环块内容执行sql 的时候再使用
    tpl.conn = dbo.conn'设置数据库连接
    
    '可选参数,默认是utf-8
    'tpl.setCharset      = "utf-8" '模板文件编码,其他编码可能需要自行转换函数文件编码
    
    '可选设置,默认是相对于模板类调用的目录
    'tpl.setRootPath     = Server.MapPath("./")'设置站点根目录路径
    
    '可选参数,默认是 $
    'tpl.setTagHead      = "cms:"'自定义头标签,不能为空,数字+字母或字符 例如:[email protected]: 等自定义的
    
    '可选参数,默认是 /templates/ 目录
    tpl.setTemplatePath = "./templates/" '模板存放路径
    
    '=====================================下面是模板页面设置
    
    '可选参数,设置缓存,默认是不开启缓存
    tpl.setCache        = "cachename,3,10"'缓存名称,缓存方式,缓存时间(默认是秒)
    
    '必选参数:页面参数,设置指定一个模板的文件位置
    tpl.setTemplateFile = "index.html" '模板文件
    
    '=====================================下面是模板赋值
    
    tpl.d("title") = "这里是标题"
    tpl.d("content") = "这里是内容"
    tpl.d("tags") = "其他标签"
    
    '显示模板
    tpl.display
		
Set Tpl = Nothing

模板如下:





{$title}



内容:{$content}
标签:{$tags}


运行后,结果的源代码如下:





这里是标题



内容:这里是内容
标签:其他标签


说明文档

下载地址

asp常用自定义函数之InArray()

定义和用法
InArray()搜索数组中指定值并返回它的索引(如果没有找到则返回-1)

语法

InArray( value, array )
'value 必需。规定要在数组搜索的值。
'array 必需。规定要搜索的数组。

说明
如果给定的值 value 存在于数组 array 中则返回 它的索引。
如果没有在数组中找到参数,函数返回 -1。

示例

dim arr 
arr = array("Peter", "Joe", "Glenn", "Cleveland")
InArray("Peter",arr) '0
InArray("peter",arr) '-1
InArray("Cleveland",arr) '3
InArray("Pester",arr) '-1

代码

Function InArray(elem, arr)
	If IsArray(arr) then
	    dim i
		For i = 0 to UBound(arr)
			If arr(i) = elem Then
				InArray = i
				Exit Function
			End If
		Next
	End if
	InArray = -1 
End Function

Response.AddHeader使用实例

Response.AddHeader使用实例
1.文件下载,指定默认名
Response.AddHeader(“content-type”,”application/x-msdownload”);
Response.AddHeader(“Content-Disposition”,”attachment;filename=文件名.rar”);
2.刷新页面
Response.AddHeader (“REFRESH”, ”60;URL=newpath/newpage.asp”)
这等同于客户机端<META>元素:
<META HTTP-EQUIV=”REFRESH”, “60;URL=newpath/newpage.asp”>
3.页面转向
Response.Status = “302 Object Moved”
Response.Addheader “Location”, “newpath/newpage.asp”
这等同于使用Response.Redirect方法:
Response.Redirect “newpath/newpage.asp”
4.强制浏览器显示一个用户名/口令对话框
Response.Status= “401 Unauthorized”
Response.Addheader “WWW-Authenticate”, “BASIC”
强制浏览器显示一个用户名/口令对话框,然后使用BASIC验证把它们发送回服务器(将在本书后续部分看到验证方法)。
5.如何让网页不缓冲
Response.Expires = 0
Response.ExpiresAbsolute = Now() – 1
Response.Addheader “pragma”,”no-cache”
Response.Addheader “cache-control”,”private”
Response.CacheControl = “no-cache

ASP FileSystemObject 对象应用合集

FileSystemObject 对象用于访问服务器上的文件系统。此对象可对文件、文件夹以及目录路径进行操作。也可通过此对象获取文件系统的信息。
下面总结一下常用的应用:

创建文件

dim fso, f
set fso = server.CreateObject("Scripting.FileSystemObject")
set f = fso.CreateTextFile("C:\test.txt", true) '第二个参数表示目标文件存在时是否覆盖
f.Write("写入内容")
f.WriteLine("写入内容并换行")
f.WriteBlankLines(3) '写入三个空白行(相当于在文本编辑器中按三次回车)
f.Close()
set f = nothing
set fso = nothing

打开并读文件

dim fso, f
set fso = server.CreateObject("Scripting.FileSystemObject")
set f = fso.OpenTextFile("C:\test.txt", 1, false) '第二个参数 1 表示只读打开,第三个参数表示目标文件不存在时是否创建
f.Skip(3) '将当前位置向后移三个字符
f.SkipLine() '将当前位置移动到下一行的第一个字符,注意:无参数
response.Write f.Read(3) '从当前位置向后读取三个字符,并将当前位置向后移三个字符
response.Write f.ReadLine() '从当前位置向后读取直到遇到换行符(不读取换行符),并将当前位置移动到下一行的第一个字符,注意:无参数
response.Write f.ReadAll() '从当前位置向后读取,直到文件结束,并将当前位置移动到文件的最后
if f.atEndOfLine then
   response.Write("一行的结尾!")
end if
if f.atEndOfStream then
    response.Write("文件的结尾!")
end if
f.Close()
set f = nothing
set fso = nothing

打开并写文件

dim fso, f
set fso = server.CreateObject("Scripting.FileSystemObject")
set f = fso.OpenTextFile("C:\test.txt", 2, false) '第二个参数 2 表示重写,如果是 8 表示追加
f.Write("写入内容")
f.WriteLine("写入内容并换行")
f.WriteBlankLines(3) '写入三个空白行(相当于在文本编辑器中按三次回车)
f.Close()
set f = nothing
set fso = nothing

判断文件是否存在

dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
if fso.FileExists("C:\test.txt") then
    response.Write("目标文件存在")
else
    response.Write("目标文件不存在")
end if
set fso = nothing

移动文件

dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
call fso.MoveFile("C:\test.txt", "D:\test111.txt") '两个参数的文件名部分可以不同
set fso = nothing

复制文件

dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
call fso.CopyFile("C:\test.txt", "D:\test111.txt") '两个参数的文件名部分可以不同
set fso = nothing

删除文件

dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
fso.DeleteFile("C:\test.txt")
set fso = nothing

创建文件夹

dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
fso.CreateFolder("C:\test") '目标文件夹的父文件夹必须存在
set fso = nothing

判断文件夹是否存在

dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
if fso.FolderExists("C:\Windows") then
    response.Write("目标文件夹存在")
else
    response.Write("目标文件夹不存在")
end if
set fso = nothing

删除文件夹

dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder("C:\test") '文件夹不必为空
set fso = nothing

asp/asp.net随机验证码

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机和人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,百度社区),我们利用比较简易的方式实现了这个功能。

今天介绍的是一个asp/asp.net随机验证码,可随机生成数字或单词或字符和数字,支持自定义图片大小,背景颜色,字体颜色,干扰线条数和颜色等。
特点:

  • 完全免费。
  • 包括ASP和ASP.NET版本
  • 随机生成的验证码。
  • 动态图像处理。
  • 无需图像文件。
  • 无需任何额外的服务器组件。
  • 创建一个跨浏览器兼容BMP图像。
  • 自定义调色板图像。

效果图如下:

下载地址