收集了一些asp实用代码,省去了网页制作时大家查找的时间。
过滤字符:
Function GetSafeStr(str)
GetSafeStr=Replace(Replace(Replace(Replace(Replace(str,"’","‘"),"""","“"),"&",""),"<","<"),">",">")
End Function
阳历转农历
<%
Function Nongli()
Dim WeekName(7), MonthAdd(11), NongliData(99), TianGan(9), DiZhi(11), ShuXiang(11), DayName(30), MonName(12)
Dim curTime, curYear, curMonth, curDay, curWeekday
Dim GongliStr, WeekdayStr, NongliStr, NongliDayStr
Dim i, m, n, k, isEnd, bit, TheDate
’获取当前系统时间
curTime = Date
’星期名
WeekName(0) = " * "
WeekName(1) = "星期日"
WeekName(2) = "星期一"
WeekName(3) = "星期二"
WeekName(4) = "星期三"
WeekName(5) = "星期四"
WeekName(6) = "星期五"
WeekName(7) = "星期六"
’天干名称
TianGan(0) = "甲"
TianGan(1) = "乙"
TianGan(2) = "丙"
TianGan(3) = "丁"
TianGan(4) = "戊"
TianGan(5) = "己"
TianGan(6) = "庚"
TianGan(7) = "辛"
TianGan(8) = "壬"
TianGan(9) = "癸"
’地支名称
DiZhi(0) = "子"
DiZhi(1) = "丑"
DiZhi(2) = "寅"
DiZhi(3) = "卯"
DiZhi(4) = "辰"
DiZhi(5) = "巳"
DiZhi(6) = "午"
DiZhi(7) = "未"
DiZhi(8) = "申"
DiZhi(9) = "酉"
DiZhi(10) = "戌"
DiZhi(11) = "亥"
’属相名称
ShuXiang(0) = "鼠"
ShuXiang(1) = "牛"
ShuXiang(2) = "虎"
ShuXiang(3) = "兔"
ShuXiang(4) = "龙"
ShuXiang(5) = "蛇"
ShuXiang(6) = "马"
ShuXiang(7) = "羊"
ShuXiang(8) = "猴"
ShuXiang(9) = "鸡"
ShuXiang(10) = "狗"
ShuXiang(11) = "猪"
’农历日期名
DayName(0) = "*"
DayName(1) = "初一"
DayName(2) = "初二"
DayName(3) = "初三"
DayName(4) = "初四"
DayName(5) = "初五"
DayName(6) = "初六"
DayName(7) = "初七"
DayName(8) = "初八"
DayName(9) = "初九"
DayName(10) = "初十"
DayName(11) = "十一"
DayName(12) = "十二"
DayName(13) = "十三"
DayName(14) = "十四"
DayName(15) = "十五"
DayName(16) = "十六"
DayName(17) = "十七"
DayName(18) = "十八"
DayName(19) = "十九"
DayName(20) = "二十"
DayName(21) = "廿一"
DayName(22) = "廿二"
DayName(23) = "廿三"
DayName(24) = "廿四"
DayName(25) = "廿五"
DayName(26) = "廿六"
DayName(27) = "廿七"
DayName(28) = "廿八"
DayName(29) = "廿九"
DayName(30) = "三十"
’农历月份名
MonName(0) = "*"
MonName(1) = "正"
MonName(2) = "二"
MonName(3) = "三"
MonName(4) = "四"
MonName(5) = "五"
MonName(6) = "六"
MonName(7) = "七"
MonName(8) = "八"
MonName(9) = "九"
MonName(10) = "十"
MonName(11) = "十一"
MonName(12) = "腊"
’公历每月前面的天数
MonthAdd(0) = 0
MonthAdd(1) = 31
MonthAdd(2) = 59
MonthAdd(3) = 90
MonthAdd(4) = 120
MonthAdd(5) = 151
MonthAdd(6) = 181
MonthAdd(7) = 212
MonthAdd(8) = 243
MonthAdd(9) = 273
MonthAdd(10) = 304
MonthAdd(11) = 334
’农历数据
NongliData(0) = 2635
NongliData(1) = 333387
NongliData(2) = 1701
NongliData(3) = 1748
NongliData(4) = 267701
NongliData(5) = 694
NongliData(6) = 2391
NongliData(7) = 133423
NongliData(8) = 1175
NongliData(9) = 396438
NongliData(10) = 3402
NongliData(11) = 3749
NongliData(12) = 331177
NongliData(13) = 1453
NongliData(14) = 694
NongliData(15) = 201326
NongliData(16) = 2350
NongliData(17) = 465197
NongliData(18) = 3221
NongliData(19) = 3402
NongliData(20) = 400202
NongliData(21) = 2901
NongliData(22) = 1386
NongliData(23) = 267611
NongliData(24) = 605
NongliData(25) = 2349
NongliData(26) = 137515
NongliData(27) = 2709
NongliData(28) = 464533
NongliData(29) = 1738
NongliData(30) = 2901
NongliData(31) = 330421
NongliData(32) = 1242
NongliData(33) = 2651
NongliData(34) = 199255
NongliData(35) = 1323
NongliData(36) = 529706
NongliData(37) = 3733
NongliData(38) = 1706
NongliData(39) = 398762
NongliData(40) = 2741
NongliData(41) = 1206
NongliData(42) = 267438
NongliData(43) = 2647
NongliData(44) = 1318
NongliData(45) = 204070
NongliData(46) = 3477
NongliData(47) = 461653
NongliData(48) = 1386
NongliData(49) = 2413
NongliData(50) = 330077
NongliData(51) = 1197
NongliData(52) = 2637
NongliData(53) = 268877
NongliData(54) = 3365
NongliData(55) = 531109
NongliData(56) = 2900
NongliData(57) = 2922
NongliData(58) = 398042
NongliData(59) = 2395
NongliData(60) = 1179
NongliData(61) = 267415
NongliData(62) = 2635
NongliData(63) = 661067
NongliData(64) = 1701
NongliData(65) = 1748
NongliData(66) = 398772
NongliData(67) = 2742
NongliData(68) = 2391
NongliData(69) = 330031
NongliData(70) = 1175
NongliData(71) = 1611
NongliData(72) = 200010
NongliData(73) = 3749
NongliData(74) = 527717
NongliData(75) = 1452
NongliData(76) = 2742
NongliData(77) = 332397
NongliData(78) = 2350
NongliData(79) = 3222
NongliData(80) = 268949
NongliData(81) = 3402
NongliData(82) = 3493
NongliData(83) = 133973
NongliData(84) = 1386
NongliData(85) = 464219
NongliData(86) = 605
NongliData(87) = 2349
NongliData(88) = 334123
NongliData(89) = 2709
NongliData(90) = 2890
NongliData(91) = 267946
NongliData(92) = 2773
NongliData(93) = 592565
NongliData(94) = 1210
NongliData(95) = 2651
NongliData(96) = 395863
NongliData(97) = 1323
NongliData(98) = 2707
NongliData(99) = 265877
’生成当前公历年、月、日 ==> GongliStr
curYear = Year(curTime)
curMonth = Month(curTime)
curDay = Day(curTime)
GongliStr = curYear & "年"
If (curMonth < 10) Then
GongliStr = GongliStr & "0" & curMonth & "月"
Else
GongliStr = GongliStr & curMonth & "月"
End If
If (curDay < 10) Then
GongliStr = GongliStr & "0" & curDay & "日"
Else
GongliStr = GongliStr & curDay & "日"
End If
’生成当前公历星期 ==> WeekdayStr
curWeekday = Weekday(curTime)
WeekdayStr = WeekName(curWeekday)
’计算到初始时间1921年2月8日的天数:1921-2-8(正月初一)
TheDate = (curYear - 1921) * 365 + Int((curYear - 1921) / 4) + curDay + MonthAdd(curMonth - 1) - 38
If ((curYear Mod 4) = 0 And curMonth > 2) Then
TheDate = TheDate + 1
End If
’计算农历天干、地支、月、日
isEnd = 0
m = 0
Do
If (NongliData(m) < 4095) Then
k = 11
Else
k = 12
End If
n = k
Do
If (n < 0) Then
Exit Do
End If
’获取NongliData(m)的第n个二进制位的值
bit = NongliData(m)
For q = 1 To n Step 1
bit = Int(bit / 2)
Next
bit = bit Mod 2
If (TheDate <= 29 + bit) Then
isEnd = 1
Exit Do
End If
TheDate = TheDate - 29 - bit
n = n - 1
Loop
If (isEnd = 1) Then
Exit Do
End If
m = m + 1
Loop
curYear = 1921 + m
curMonth = k - n + 1
curDay = TheDate
If (k = 12) Then
If (curMonth = (Int(NongliData(m) / 65536) + 1)) Then
curMonth = 1 - curMonth
ElseIf (curMonth > (Int(NongliData(m) / 65536) + 1)) Then
curMonth = curMonth - 1
End If
End If
’生成农历天干、地支、属相 ==> NongliStr
NongliStr = TianGan(((curYear - 4) Mod 60) Mod 10) & DiZhi(((curYear - 4) Mod 60) Mod 12)
NongliStr = NongliStr & " <font color=’#ff9000’> <b>(" & ShuXiang(((curYear - 4) Mod 60) Mod 12) & ") </b> </font>年"
’生成农历月、日 ==> NongljDayStr
If (curMonth < 1) Then
NongliDayStr = "闰" & MonName(-1 * curMonth)
Else
NongliDayStr = MonName(curMonth)
End If
NongliDayStr = NongliDayStr & "月"
NongliDayStr = NongliDayStr & DayName(curDay)
NongLi= NongliStr & " " & NongliDayStr
end Function
dim sdate:sdate=Nongli()
response.Write(sdate)
%>
格式化的字符串
’函数名称: ZeroFill(Num,Num_Length)
’函数功能: 前面补0
’参数说明: Num 要操作的数字
’ Num_Length 显示的位数
’返回值 : 格式化的字符串
’
Function ZeroFill(Num,Num_Length)
Dim ZeroFill_i,ZeroFill_ReturnNum
For ZeroFill_i=len(Num) To Num_Length-1
ZeroFill_ReturnNum=ZeroFill_ReturnNum&"0"
Next
ZeroFill_ReturnNum=ZeroFill_ReturnNum&Num
ZeroFill=ZeroFill_ReturnNum
End Function
生成安全码的函数
function make_randomize(max_len,w_n) ’max_len 生成长度,w_n:0 可能包含字母,1:只为数字
randomize
for intcounter=1 to max_len
whatnext=int((1-0+1)*rnd+w_n)
if whatnext=0 then
upper=122
lower=97
else
upper=57
lower=48
end if
strnewpass=strnewpass & chr(int((upper-lower+1)*rnd)+lower)
next
make_randomize=strnewpass
end function
’safecode=make_randomize(4,0)
’response.Write(safecode)
%>
<%random_num=make_randomize(4,0) ’生成4位数字的安全码
session("random_num")=random_num ’为什么调用session,没有session的安全码是完全没有意义的。呵呵
Set Jpeg = Server.createObject("Persits.Jpeg") ’调用组件
Jpeg.Open Server.MapPath("1.jpg") ’打开准备的图片
Jpeg.Canvas.Font.Color = &H006699
Jpeg.Canvas.Font.Family = "Arial Black"
Jpeg.Canvas.Font.Bold = false
Jpeg.Canvas.PrintText 0, -2, random_num
jpeg.save Server.MapPath("random_index.jpg") ’保存
%> <img src="random_index.jpg" border="0" align="absmiddle">
彻底屏蔽鼠标右键
oncontextmenu="window.event.returnvalue=false"将彻底屏蔽鼠标右键
或者
<script language="javascript">
function click()
{
if (event.button==0) //event.button依环境值不同
{
alert("对不起,本页的内容不经允许不得拷备。");
}
}
window.document.onmousedown=click;
</script>
onpaste="returnfalse"不准粘贴
oncopy="returnfalse;"oncut="returnfalse;"防止复制
光标是停在文本框文字的最后
functioncc()
{
vare=event.srcElement;
varr=e.createTextRange();
r.moveStart(’character’,e.value.length);
r.collapse(true);
r.select();
}
判断上一页的来源
asp:request.servervariables("HTTP_REFERER")
javascript:document.referrer
网页不会被缓存
Response.Expires=-1
Response.ExpiresAbsolute=Now()-1
Response.cachecontrol="no-cache"
过滤HTML标签后的内容
’函数名:RemoveHTML
’作 用:清除HTML标签
’参 数:strHTML 内容
’返回值:过滤HTML标签后的内容
function RemoveHTML(strHTML)
Dim objRegExp, Match, Matches
Set objRegExp = New Regexp
objRegExp.IgnoreCase = True
objRegExp.Global = True
’取闭合的<>
objRegExp.Pattern = "<.+?>"
’进行匹配
Set Matches = objRegExp.Execute(strHTML)
’遍历匹配集合,并替换掉匹配的项目
For Each Match in Matches
strHtml=Replace(strHTML,Match.Value,"")
Next
RemoveHTML=strHTML
Set objRegExp = Nothing
End function
Function IIF(Expression,ReturnTrue,ReturnFalse)
If Expression Then
IIF = ReturnTrue
Else
IIF = ReturnFalse
End If
End Function
全功能安全过滤函数
’参数:请求方式,过滤类型,请求名,值类型,默认值
Function SafeRequest(Requester,FilterType,RequestName,RequestType,DefaultValue)
Dim tmpValue
Select Case Requester
Case 0 : tmpValue = RequestName
Case 1 : tmpValue = Request(RequestName)
Case 2 : tmpValue = Request.Form(RequestName)
Case 3 : tmpValue = Request.QueryString(RequestName)
Case 4 : tmpValue = Request.Cookies(RequestName)
End Select
Select Case RequestType
Case 0
If Not IsNumeric(tmpValue) Or Len(tmpValue) <=0 Then
tmpValue = CLng(DefaultValue)
Else
tmpValue = CLng(tmpValue)
End If
Case 1
If tmpValue="" Or IsNull(tmpValue) Then tmpValue=DefaultValue
Select Case FilterType
Case 0 : tmpValue = tmpValue
Case 1 : tmpValue = SafeSql(tmpValue)
Case 2 : tmpValue = FilterHtml(tmpValue)
End Select
Case 2
If Not IsDate(tmpValue) Or Len(tmpValue) <=0 Then
tmpValue = CDate(DefaultValue)
Else
tmpValue = CDate(tmpValue)
End If
End Select
SafeRequest = tmpValue
End Function
危险Sql过滤
’参数:Sql
’返回:过滤结果
Function SafeSql(str)
SafeSql = Replace(str, "’", "'")
End Function
’函数:过滤Html标签
’参数:字符串
’返回:过滤后的字符串
Function FilterHtml(str)
If IsNull(str) Or str="" Then FilterHtml="" : Exit Function
Dim r
Set r = New RegExp
r.IgnoreCase = True
r.Global = True
r.MultiLine = True
r.Pattern = " <.+?>"
FilterHtml = r.Replace(str,"")
Set r = Nothing
End Function
判断发言是否来自外部
’ChkPost=false 来自外部提交(非法)
’ChkPost=true 合法提交表单
function ChkPost()
dim server_v1,server_v2
chkpost=false
server_v1=LCase(Cstr(Request.ServerVariables("HTTP_REFERER")))
server_v2=LCase(Cstr(Request.ServerVariables("SERVER_NAME")))
if mid(server_v1,8,len(server_v2)) <>server_v2 then
chkpost=false
else
chkpost=true
end if
end function
ASP身份证号码验证函数
//var sss = "422324860305482";
//Response.Write(checkIDCard(sss, "03/05/1986", 0));
function checkIDCard(s, d, g)
{
if (!s) return false;
d = new Date(d);
if (!d.getTime()) return false;
var t, r;
t = "" + d.getFullYear() + dblNum(d.getMonth() + 1) + dblNum(d.getDate());
if (g == null || isNaN(g)) return false;
g = parseInt(g) % 2;
switch (s.length)
{
case 8 :
if (new Date() > d.setFullYear(d.getFullYear() + 19)) return false;
r = /^[\d]{8}$/;
if (!r.test(s)) return false;
if (s != t) return false;
break;
case 15 :
r = /^[\d]{15}$/;
if (!r.test(s)) return false;
if (s.substr(6, 6) != t.substr(2)) return false;
if (parseInt(s.charAt(14)) % 2 != g) return false;
break;
case 18 :
r = /^(?:[\d]{18}|[\d]{17}X)$/i;
if (!r.test(s)) return false;
if (s.substr(6, 8) != t) return false;
if (parseInt(s.charAt(16)) % 2 != g) return false;
var n = 0;
var w = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); // 加权因子
var c = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"); // 校验码
for (var i = 0; i < 17; i++)
{
n += parseInt(s.charAt(i)) * w[i];
}
if (s.charAt(17).toUpperCase() != c[n % 11]) return false;
break;
default :
return false;
}
return true;
}
function dblNum(n)
{
return parseInt(n) < 10 ? "0" + n : n;
}
格式化日期时间(显示)
’ 参数:n_Flag
’ 1:"yyyy-mm-dd hh:mm:ss"
’ 2:"yyyy-mm-dd"
’ 3:"hh:mm:ss"
’ 4:"yyyy年mm月dd日"
’ 5:"yyyymmdd"
’ 6:"yyyymmddhhmmss"
’ 7:"yy-mm-dd"
’ 8:"yy-mm-dd hh:mm:ss"
’ 9:"yyyy年mm月"
’ 10:"mm/dd/yyyy"
’ ============================================
Function Format_Time(s_Time, n_Flag)
Dim y, m, d, h, mi, s
Format_Time = ""
If IsDate(s_Time) = False Then Exit Function
y = cstr(year(s_Time))
if y = "1900" then Exit Function
m = right("0"&month(s_Time),2)
d = right("0"&day(s_Time),2)
h = right("0"&hour(s_Time),2)
mi = right("0"&minute(s_Time),2)
s = right("0"&second(s_Time),2)
Select Case n_Flag
Case 1
Format_Time = y & "-" & m & "-" & d & " " & h & ":" & mi & ":" & s
Case 2
Format_Time = y & "-" & m & "-" & d
Case 3
Format_Time = h & ":" & mi & ":" & s
Case 4
Format_Time = y & "年" & m & "月" & d & "日"
Case 5
Format_Time = y & m & d
case 6
Format_Time= y & m & d & h & mi & s
case 7
Format_Time= right(y,2) & "-" & m & "-" & d
case 8
Format_Time= right(y,2) & "-" & m & "-" & d & " " & h & ":" & mi & ":" & s
Case 9
Format_Time = y & "年" & m & "月"
Case 10
Format_Time = m & "/" & d & "/" & y & "/"
End Select
End Function
小写数字转大写
function int2chn(n)
dim i,j,k,strlen,retval,x,y,z,str
z=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖")
y=array("","拾","佰","仟")
x=Array("","万","亿","万万亿")
strlen=len(n)
str1=n
for i= 1 to strlen
j=mid(str1,i,1)
retval=retval&z(j)
if j>0 then retval=retval&y((strlen-i) mod 4)’如果大于零,加入十进位字符
retval=replace(retval,z(0)&z(0),z(0))’出现两个零只留一个
if ((strlen-i) mod 4)=0 and right(retval,1)=z(0) then retval=left(retval,len(retval)-1)’每四位加入进阶
if ((strlen-i) mod 4)=0 then retval=retval&x(int((strlen-i)/4))’把最后的零去掉
next
int2chn=retval
end function
小写金额转大写
Function UMoney(money)
Dim lnP,Prc,Tmp,NoB,Dx,Xx,Zhen
Dim China : China = "分角元拾佰仟万拾佰仟亿"
Dim str: str = Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")
Zhen = True
money = FormatNumber(money, 2)
Prc = CStr(money)
Prc = Replace(Prc, ",", "")
lnP = Len(Prc)
For i = lnP - 1 To 1 Step -1
If Mid(Prc, i, 1) = "." Then
Select Case lnP - i
Case 1
Prc = Replace(Prc, ".", "") + "0"
Case 2
Prc = Replace(Prc, ".", "")
End Select
Zhen = False
Exit For
End If
Next
If Zhen Then Prc = Prc + "00"
lnP = Len(Prc)
For i = 1 To lnP
Tmp = str(Mid(Prc, i, 1)) & Tmp
Next
UMoney = ""
fy = 1
For i = 1 To lnP
Xx = Mid(Tmp, i, 1)
Dx = Mid(China, i, 1)
If Xx <> "零" Then
UMoney = Xx & Dx & UMoney
f = 1
Else
If i = 3 Then
UMoney = Dx & UMoney
End If
If i = 7 Then
UMoney = Dx & UMoney
End If
If f Then
UMoney = "零" & UMoney
End If
f = 0
End If
Next
If Zhen Then UMoney = UMoney + "整"
UMoney = Replace(UMoney, "零万", "万")
UMoney = Replace(UMoney, "零元", "元")
End Function
随机选取5组彩票
Function rndtest(m_count,r_count) ’’参数m_count号码总数,r_count为要取出的号码数
dim x,st,i
i=1
st=""
do while i<=r_count
randomize
x=int(rnd*m_count)+1 ’’产生1~m_count的随机数
if i=r_count then
if not instr(st,x)>0 then
st=st&x
i=i+1
end if
else
if not instr(st,x)>0 then
st=st&x&"," ’’用,分割
i=i+1
end if
end if
if i>=m_count then
exit do ’’如果m_count小于r_count将出现死循环,于是判断并跳出循环
end if
loop
rndtest=st
end function
冒泡函数
function sort(ary)ck=true
do Until ck = false
ck=false
For f = 0 to UBound(ary) -1
if clng(ary(f))>clng(ary(f+1)) then
v1=clng(ary(f))
v2=clng(ary(f+1))
ary(f)=v2
ary(f+1)=v1
ck=true
end if
next
loop
sort=ary
end function
for i=0 to 4
Mycount=rndtest(33,7)
MyArray=split(Mycount,",")
newArray=sort(MyArray)
for i2=0 to UBound(newArray)
Response.Write(newArray(i2)&" ")
next
Response.Write("<br>")
next
搜索出的内容替换关键字
Function GoRed(Str,keyword)
’***************************************
’GoRed函数 Str,搜索出来的内容,keyword 要替换的关键字
’***************************************
Dim RegObj
Set RegObj= New RegExp ’定义新的正则表达式
With RegObj
.Global = True
.IgnoreCase = True
.Pattern="([.\n]*)("&Keyword&")([.\n]*)"
GoRed=.Replace(Str,"$1 <font color=’red’>$2 </font>$3")
End With
Set RegObj=Nothing
End Function
示例:title=GoRed("Fditffdsdads","f")
输出title 会显示 Fditffdsdads
设置过期策略
Response.buffer=true
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "No-Cache"
验证第一个字符是否为字母
’false :不是;true :是
function IsFirstStr(str)
IsFirstStr = true
str=LCase(str)
strSource ="abcdefghijklmnopqrstuvwxyz"
if InStr(strSource,mid(str,1,1)) <=0 then
IsFirstStr = false
else
IsFirstStr = true
end if
end function