惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
Forbes - Security
Forbes - Security
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
V
Visual Studio Blog
月光博客
月光博客
博客园 - Franky
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
博客园 - 三生石上(FineUI控件)
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
The Register - Security
The Register - Security
S
SegmentFault 最新的问题
博客园 - 司徒正美
P
Proofpoint News Feed
Know Your Adversary
Know Your Adversary
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
Arctic Wolf
Cyberwarzone
Cyberwarzone
Simon Willison's Weblog
Simon Willison's Weblog
U
Unit 42
P
Proofpoint News Feed
Scott Helme
Scott Helme
MyScale Blog
MyScale Blog
T
Tenable Blog
Hugging Face - Blog
Hugging Face - Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
小众软件
小众软件
C
CERT Recently Published Vulnerability Notes
P
Palo Alto Networks Blog
V
V2EX
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tailwind CSS Blog
V
Vulnerabilities – Threatpost
Latest news
Latest news
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
Intezer
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
博客园 - 【当耐特】
B
Blog RSS Feed
N
Netflix TechBlog - Medium
Recent Announcements
Recent Announcements
NISL@THU
NISL@THU
C
Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security

博客园 - 探路者

编辑用户资料的时候,让用户的密码以星花显示 模仿层遮盖网页浏览区 gridview列 数字、货币和日期 显示格式 Blog常用拖动模块 注册时阅读条款倒计时控制 通用JS倒计时代码 去除网页FLASH"单击并激活此控件"解决办法 Js实现Checkbox的全选/反选 实用天气代码 银行软键盘代码 改善用户体验之密码强度提示 div制作三角图标 IE滚动条样式 【WEB控件】[GridView系列]Panel+GridView 【Web控件】[GridView系列]给GridView添加滚动条 常用CSS样式 【HTML控件】[TextBox系列]搜索输入关键字 可以移动的漂浮层 Div滚动条样式 - 探路者
摘录小代码合集[1]
探路者 · 2007-10-15 · via 博客园 - 探路者

执行完毕后将数据库改成 .asp 后缀文件

 程序代码
<%
db="Database.mdb" '这里改成您的数据库地址
set conn=server.createobject("Adodb.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db)
conn.open connstr
conn.execute("create table ET_NotDownload(NotDown oleobject)")
set rs=server.createobject("adodb.recordset")
sql="select * from ET_NotDownload"
rs.open sql,conn,1,3
rs.addnew
rs("NotDown").appendchunk(chrB(asc("<")) & chrB(asc("%")))
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing
%>

<script>
function autoResize() {
try {
document.all["main"].style.height=main.document.body.scrollHeight
}
catch(e){}
}
</script>
<iframe id="main" name="main" src="" style="height:expression(1); aho:expression(autoResize())"></iframe>

 程序代码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>提交时自动复制到剪贴板</title>
</head>

<script language="javascript">
/*功能:提交时自动复制到剪贴板 */

function copyText(obj) {
ie = (document.all)? true:false
if (ie){
var rng = document.body.createTextRange();
rng.moveToElementText(obj);
rng.scrollIntoView();
rng.select();
rng.execCommand("Copy");
rng.collapse(false);
}
}

function autocopy() {
if (this.document.formname.isautocopy.checked) {
copyText(this.document.formname.icontent);
}
}
</script>

<body>
<form action="" method="post" name="formname" onsubmit="autocopy();">
<textarea name="icontent" rows="4" cols="50"></textarea><br>
<input name="isautocopy" checked="checked" value="1" type="checkbox" />
提交时复制内容到剪贴板<br/><input type="submit" value="提交" /> </form>

</body>
</html>

Htmlmaker.asp 类文件
<%
Class Htmlmaker
'/ 属性设置说明
'/ foldename "文件夹名"
'/ 如果不设置,将自动生成[年月日]时间格式的文件夹名
'/ Filename "文件名"(含前后缀)
'/ 如果不设置,将自动生成[时分秒]时间格式的文件名,后缀为.html
'/ Htmlstr "生成的代码内容"
'/*************************
Private HtmlFolder,HtmlFilename,HtmlContent
Public property let foldename(str)
HtmlFolder=str
End property
Public property let Filename(str)
HtmlFilename=str
End property
Public property let Htmlstr(str)
HtmlContent=str
End property
'/*************************
'/ 文件名转换日期函数
'/*************************
Private Function Datename1(timestr)
dim s_year,s_month,s_day
s_year=year(timestr)
if len(s_year)=2 then s_year="20"&s_year
s_month=month(timestr)
if s_month<10 then s_month="0"&s_month
s_day=day(timestr)
if s_day<10 then s_day="0"&s_day
Datename1=s_year & s_month & s_day
End Function
Private Function Datename2(timestr)
dim s_hour,s_minute,s_ss
s_hour=hour(timestr)
if s_hour<10 then s_hour="0"&s_hour
s_minute=minute(timestr)
if s_minute<10 then s_minute="0"&s_minute
s_ss=second(timestr)
if s_ss<10 then s_ss="0"&s_ss
Datename2 = s_hour & s_minute & s_ss
End Function
'/*************************
'/ 初试化
'/*************************

Private Sub class_initialize()
HtmlFolder=Datename1(now)
HtmlFilename=Datename2(now)&".html"
HtmlContent=""
End Sub
Private Sub class_terminate()
End Sub
'/*************************
'/ Html文件生成
'/*************************
Public Sub Htmlmake()
On Error Resume Next
dim filepath,fso,fout
filepath = HtmlFolder&"/"&HtmlFilename
Set fso = Server.CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(HtmlFolder) Then
Else
fso.CreateFolder(Server.MapPath(HtmlFolder))
End If
Set fout = fso.CreateTextFile(Server.MapPath(filepath),true)
fout.WriteLine HtmlContent
fout.close
End Sub
'/*************************
'/ Html文件删除
'/*************************
Public Sub Htmldel()
dim filepath,fso
filepath = HtmlFolder&"/"&HtmlFilename
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile(Server.mappath(filepath))
Set fso = nothing
End Sub
End class
%>

test.asp
<!--#include file="Htmlmaker.asp" -->
<%
set myhtml= new Htmlmaker
'myhtml.foldename = "test"
'myhtml.Filename = "ok.shtml"
myhtml.Htmlstr = "<head></head><html><body>测试测试测试测试</body></html>"
myhtml.Htmlmake
set myhtml=nothing
Response.Write("生成成功!!")
%>

<html>
<head>
<title>超级漂浮的代码(漂的够猛)</title>
<SCRIPT>
var imagepath="/Learning/UploadFiles_9072/200608/20060831225502598.gif" //这里写图片的URL
var imagewidth=100  //这两行写图片的大小
var imageheight=100
var speed=3;
var imageclick="http://www.158188.com/" //这里写点击到的广告地址
var hideafter=0
var isie=0;
if(window.navigator.appName=="Microsoft Internet Explorer"&&window.navigator.appVersion.substring(window.navigator.appVersion.indexOf("MSIE")+5,window.navigator.appVersion.indexOf("MSIE")+8)>=5.5) {
isie=1;
}
else {
isie=0;
}
if(isie){
var preloadit=new Image()
preloadit.src=imagepath
}
function pop() {
if(isie) {
x=x+dx;y=y+dy;
oPopup.show(x, y, imagewidth, imageheight);
if(x+imagewidth+5>screen.width) dx=-dx;
if(y+imageheight+5>screen.height) dy=-dy;
if(x<0) dx=-dx;
if(y<0) dy=-dy;
startani=setTimeout("pop();",50);
}
}
function dismisspopup(){
clearTimeout(startani)
oPopup.hide()
}
function dowhat(){
if (imageclick=="dismiss")
dismisspopup()
else
window.open(imageclick);
}
if(isie) {
var x=0,y=0,dx=speed,dy=speed;
var oPopup = window.createPopup();
var oPopupBody = oPopup.document.body;
oPopupBody.style.cursor="hand"
oPopupBody.innerHTML = '<IMG SRC="'+preloadit.src+'">';
oPopup.document.body.onmouseover=new Function("clearTimeout(startani)")
oPopup.document.body.onmouseout=pop
oPopup.document.body.onclick=dowhat
pop();
if (hideafter>0)
setTimeout("dismisspopup()",hideafter*1000)
}
</SCRIPT>
</head>
<body>
</body>
</html>

<!--#include file="conn.asp"-->
<%
set rs = server.CreateObject("ADODB.RecordSet")
sql="select top 10 * from news order by newsid desc"
set rs = conn.Execute (Sql)
do while not rs.eof
title=rs("title")
AddNewsDate=rs("AddNewsDate")
goaler = goaler + "<li><a target=_blank href=shownews.asp?id="&rs("newsid")&">" &title&" "&AddNewsDate&"</a></li><br>"
rs.movenext
loop
'生成JS文件
goaler = "" + goaler + ""
goaler = "document.write('" & goaler & "')"
FolderPath = Server.MapPath("./jsfile")
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fout = fso.CreateTextFile(FolderPath&"\top.js")
fout.WriteLine goaler
'关闭连接
fout.close
set fout = nothing
rs.close
set rs = nothing
conn.close
set conn=nothing
%>

然后在你需要的页面写入这句代码:<script src="jsfile/top.js"></script>
在后台页面你可以点击按钮进行生成js代码:
生成最新新闻10条js文件:<button onclick="window.location='Creatjs.asp'">生成js文件</button>

1.取消按钮按下时的虚线框
  在input里添加属性值 hideFocus 或者 HideFocus=true

2.只读文本框内容
在input里添加属性值 readonly

3.防止退后清空的TEXT文档(可把style内容做做为类引用)
  <INPUT style=behavior:url(#default#savehistory); type=text id=oPersistInput>

4.ENTER键可以让光标移到下一个输入框
  <input onkeydown="if(event.keyCode==13)event.keyCode=9" >

5.只能为中文(有闪动)
  <input onkeyup="value=value.replace(/[ -~]/g,'')" onkeydown="if(event.keyCode==13)event.keyCode=9">

6.只能为数字(有闪动)
  <input onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">

7.只能为数字(无闪动)
  <input style="ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9" onKeyPress="if ((event.keyCode<48 || event.keyCode>57)) event.returnValue=false">

8.只能输入英文和数字(有闪动)
  <input onkeyup="value=value.replace(/[\W]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">

9.屏蔽输入法
  <input type="text" name="url" style="ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9">

10. 只能输入 数字,小数点,减号(-) 字符(无闪动)
  <input onKeyPress="if (event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false">

11. 只能输入两位小数,三位小数(有闪动)
  <input maxlength=9 onkeyup="if(value.match(/^\d{3}$/))value=value.replace(value,parseInt(value/10)) ;value=value.replace(/\.\d*\./g,'.')" onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 && event.keyCode!=45 || value.match(/^\d{3}$/) || /\.\d{3}$/.test(value)) {event.returnValue=false}" id=text_kfxe name=text_kfxe>
======================================================
下拉框选项分组
<select name="f" onchange="this.form.submit();">
<optgroup label="网站范围">
<option value="-1" selected="selected">请选择一个</option>
<option value="cp" >控制面板</option>
<option value="pm" >私人信息</option>
<option value="subs" >订阅</option>
<option value="wol" >看谁在线</option>
<option value="search" >搜索论坛</option>
<option value="home" >论坛首页</option>
<option value="-1">--------------------</option>
</optgroup>
</select>

======================================================

取得数组最大值:
snum="345,231,56,786,1100,356,1200,300,685,111,134,765"

function GetMax(str)
num=split(str,",")
max=num(0)
for ii=0 to ubound(num)
if cint(num(ii))>cint(max) then max=num(ii)
response.Write "num="&num(ii)&",max="&max&"<br />"
next
GetMax=max
end function

response.Write "数组"&snum&"<br />最大值:"&GetMax(snum)

我们有时候遇到的日期格式可能是2004-1-12 ,系统自动将月份中的0去掉了,但是有时候我们需要完整的日期格式 ,如:2004-01-12 那么怎么办呢?下面的几个函数可以轻松搞定。
'将一个一位的数字前面加零

function FillZero(str)
ttt=str
if len(str)=1 then
ttt="0" & str
end if
FillZero=ttt
end function

'转化日期,将 一位补上零 2003-1-2 --> 2003-01-02

function ConvertDate(tDate)
ttt=tDate
if isdate(tDate) then
ttt=year(tDate) & "-" & FillZero(month(tDate)) & "-" & FillZero(day(tDate))
end if
ConvertDate=ttt
end function

'输入一个日期时间串,转换成年四位,其他两位的新的日期时间串

function ConvertDateTime(tDateTime)
ttt=tDateTime
if isdate(tDateTime) then
ttt=year(tDateTime) & "-" & FillZero(month(tDateTime)) & "-" & FillZero(day(tDateTime)) & " " & FillZero(cstr(hour(tDateTime))) & ":" & FillZero(cstr(minute(tDateTime))) & ":" & FillZero(cstr(second(tDateTime)))
end if
ConvertDateTime=ttt
end function

函数名称:FormatDate
作用:将获得的时间格式化成你想要的样式显示出来,并且如果日期时间某个数值是1位数,则在其前面添加0
    如:获得的时间格式是 2006-6-25 14:6:41,在单位数字前加0将其变更成两位 2006-06-25 14:06:41
函数所含参数:DateAndTime, para
    DateAndTime:获得具体时间参数如 Now
    para:格式化后的时间样式,目前有10种样式可自行修改
    样式效果(Y 表示年,M 表示月,D 表示日,H 表示小时,MI 表示分钟,S 表示秒):
        1. Y-M-D H:MI:S
        2. Y-M-D
        3. Y/M/D
        4. Y年M月D日
        5. M-D
        6. M/D
        7. M月D日
        8. Y年M月
        9. Y-M
        10. Y/M

Function FormatDate(DateAndTime, para)
  On Error Resume Next
  Dim y, m, d, h, mi, s, strDateTime
  FormatDate = DateAndTime
  If Not IsNumeric(para) Then Exit Function
  If Not IsDate(DateAndTime) Then Exit Function
  y = Mid(CStr(Year(DateAndTime)),3)
  m = CStr(Month(DateAndTime))
  If Len(m) = 1 Then m = "0" & m
  d = CStr(Day(DateAndTime))
  If Len(d) = 1 Then d = "0" & d
  h = CStr(Hour(DateAndTime))
  If Len(h) = 1 Then h = "0" & h
  mi = CStr(Minute(DateAndTime))
  If Len(mi) = 1 Then mi = "0" & mi
  s = CStr(Second(DateAndTime))
  If Len(s) = 1 Then s = "0" & s
  Select Case para
  Case "1"
   strDateTime = y & "-" & m & "-" & d & " " & h & ":" & mi & ":" & s
  Case "2"
   strDateTime = y & "-" & m & "-" & d
  Case "3"
   strDateTime = y & "/" & m & "/" & d
  Case "4"
   strDateTime = y & "年" & m & "月" & d & "日"
  Case "5"
   strDateTime = m & "-" & d
  Case "6"
   strDateTime = m & "/" & d
  Case "7"
   strDateTime = m & "月" & d & "日"
  Case "8"
   strDateTime = y & "年" & m & "月"
  Case "9"
   strDateTime = y & "-" & m
  Case "10"
   strDateTime = y & "/" & m
  Case Else
   strDateTime = DateAndTime
  End Select
  FormatDate = strDateTime
End Function

第一种 - 这种方法用在ACCESS中最多
strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" _
& Server.MapPath("aspfree.mdb")
set conn = server.createobject("adodb.connection")
conn.open strconn

第二种-这种方法用在SQL SERVER中多
strconn = "Driver={SQL Server};Description=sqldemo;SERVER=127.0.0.1;" _
&"UID=LoginID;Password=;DATABASE=Database_Name"
set conn = server.createobject("adodb.connection")
conn.open strconn

第三种
strconn="Driver={Microsoft Access Driver(*.mdb)};" _
&"DBQ=F:\\Inetpub\\wwwroot\\somedir\\db1.mdb;DefaultDir=" _
&"f:\\Inetpub\\wwwroot\\somedir;uid=LoginID;" _
&"pwd=Password;DriverId=25;FIL=MSAccess;"
set conn = server.createobject("adodb.connection")
conn.open strconn

第四种运用系统数据源
The following uses a Data Source Name: Example
set conn = server.createobject("adodb.connection")
conn.open "Example"

第五种运用ODBC数据源,前提是你必须在控制面板的ODBC中设置数据源
set rs = server.createobject("adodb.recordset")
rs.open "tblname", "DSNName", 3, 3  第一种 - 这种方法用在ACCESS中最多
strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" _
& Server.MapPath("aspfree.mdb")
set conn = server.createobject("adodb.connection")
conn.open strconn

第六种ASP连接Oracle
ConnString = "Provider=OraOLEDB.Oracle;PLSQLRSet=1;Password=gqshad;User ID=gqshad;Data Source=mip"
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open ConnString

在数据库中新建一个字段用来存放IP,字段格式为备注
IP在该字段中格式如:1033218851----1033218865$$$1033218816----1033218848|||1033218851----1033218865$$$1033218816----1033218848
$$$表示IP在文本框内换行的回车符,也就是每个IP段用回车分隔,然后替换成$$$
|||表示黑白名单分隔符
1033218851----1033218865表示一个IP段

添加多个限定IP段,请用回车分隔。
限制IP段的书写方式,中间请用英文四个小横杠连接
如:255.255.255.0----255.255.255.255

///////////////////////////////////////////////////////////////////////////////////
在conn.asp中插入以下代码,并 Call IsIpLock 来判断和限制IP访问,此部分尚未调试
///////////////////////////////////////////////////////////////////////////////////
<%
Sub IsIpLock()
    If Session("IPlock") = "" Then
        Session("IPlock") = ChecKIPlock(/*取得限制IP属性*/, /*取得数据库中IP段*/, /*取得用户真实IP*/)    '//ip属性1为白名单,2为黑名单
    End If
    If Session("IPlock") = True Then
        Response.Write "<html>" & vbCrLf
        Response.Write "<head>" & vbCrLf
        Response.Write "<meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312"">" & vbCrLf
        Response.Write "<title></title>" & vbCrLf
        Response.Write "</head>" & vbCrLf
        Response.Write "<body>" & vbCrLf
        Response.write "<br><p align=center><font color=""#ff0000"">对不起!您的IP(" & /*取得用户真实IP*/ & ")被系统限制。</font></p>" & vbCrLf
        Response.Write "</body>" & vbCrLf
        Response.Write "</html>"
        Response.End
    End If
End Sub

Function ChecKIPlock(ByVal sLockType, ByVal sLockList, ByVal sUserIP)
    Dim IpLock,rsLockIP,i
    Dim arrLockIPW, arrLockIPB, arrLockIPWCut, arrLockIPBCut
    IpLock = False
    ChecKIPlock = IpLock
    If sLockType = "" or IsNull(sLockType) Then Exit Function
    If sLockList = "" or IsNull(sLockList) Then Exit Function
    If sUserIP = "" or IsNull(sUserIP) Then Exit Function
    sUserIP = Etosky.EncodeIP(sUserIP)
    rsLockIP = Split(sLockList, "|||")
    If sLockType = 1 Then
        arrLockIPW = Split(Trim(rsLockIP(0)), "$$$")
        For i = 0 To UBound(arrLockIPW)
            If arrLockIPW(i) <> "" Then
                arrLockIPWCut = Split(Trim(arrLockIPW(i)), "----")
                IpLock = True
                If arrLockIPWCut(0) <= sUserIP And sUserIP <= arrLockIPWCut(1) Then IpLock = False
                If IpLock Then Exit For
            End If
        Next
    End If
    If IPlock = False And sLockType = 2 Then
        arrLockIPB = Split(Trim(rsLockIP(1)), "$$$")
        For i = 0 To UBound(arrLockIPB)
            If arrLockIPB(i) <> "" Then
                arrLockIPBCut = Split(Trim(arrLockIPB(i)), "----")
                IpLock = True
                If arrLockIPBCut(0) > sUserIP And sUserIP > arrLockIPBCut(1) Then IpLock = False
                If IpLock Then Exit For
            End If
        Next
    End If
    ChecKIPLock = IpLock
End Function
%>

///////////////////////////////////////////////////////////////////////////////////
在适当位置插入以下代码,用来简单加密、解密IP地址
///////////////////////////////////////////////////////////////////////////////////
<%
'加密IP
Public Function EncodeIP(Sip)
    Dim strIP
    strIP = Split(Sip, ".")
    If UBound(strIP) < 3 Then
        EncodeIP = 0
        Exit Function
    End If
    If IsNumeric(strIP(0)) = 0 or IsNumeric(strIP(1)) = 0 or IsNumeric(strIP(2)) = 0 or IsNumeric(strIP(3)) = 0 Then
        Sip = 0
    Else
        Sip = Int(strIP(0)) * 256 * 256 * 256 + Int(strIP(1)) * 256 * 256 + Int(strIP(2)) * 256 + Int(strIP(3)) - 1
    End If
    EncodeIP = Sip
End Function

'解密IP
Public Function DecodeIp(Sip)
    Dim strIp,sIp1,sIp2,sIp3,sIp4
    strIp = Sip
    If Not IsNumeric(strIp) Then
        DecodeIP = 0
        Exit Function
    End If
    sIp1 = Int(strIp / 256 / 256 / 256)
    sIp2 = Int((strIp - sIp1 * 256 * 256 * 256) / 256 / 256)
    sIp3 = Int((strIp - sIp1 * 256 * 256 * 256 - sIp2 *256 * 256) / 256)
    sIp4 = Int((strIp - sIp1 * 256 * 256 * 256 - sIp2 *256 * 256 - sIp3 * 256) + 1)
    Sip = sIp1 & "." & sIp2 & "." & sIp3 & "." & sIp4
    DecodeIp = Sip
End Function
%>

///////////////////////////////////////////////////////////////////////////////////
格式化显示IP地址,用后后台编辑限制的IP段
///////////////////////////////////////////////////////////////////////////////////
<%
'用来格式化最后得到的IP段
Function RightCut(Tempstr,strTemp,sNum)
    If Right(Tempstr,sNum) = strTemp Then
        RightCut = Left(Tempstr,Len(Tempstr)-sNum)
    Else
        RightCut = Tempstr
    End If
End Function

'这个用来表示读出数据库中的限制IP的字段内容
LockIp = "1033218851----1033218865$$$1033218816----1033218848|||1033218851----1033218865$$$1033218816----1033218848"
LockIp = Split(LockIP,"|||"
%>
白名单
<textarea name="LockIpWhite" id="LockIpWhite" cols="50" rows="5">
<%
Dim arrLockIPW,arrLockIPWCut,arrLockIpWhite,LockIpWhite
arrLockIPW = Split(LockIp(0),"$$$")
For i = 0 To UBound(arrLockIPW)
    arrLockIPWCut = Split(Trim(arrLockIPW(i)), "----")
    arrLockIpWhite = DecodeIp(arrLockIPWCut(0)) & "----" & DecodeIp(arrLockIPWCut(1))
    LockIpWhite = LockIpWhite + arrLockIpWhite & "$$$"
Next
Response.Write Replace(RightCut(LockIpWhite,"$$$",3),"$$$",Chr(13))
%></textarea>

黑名单
<textarea name="LockIpBlack" id="LockIpBlack" cols="50" rows="5">
<%
Dim arrLockIPB,arrLockIPBCut,arrLockIpBlack,LockIpBlack
arrLockIPB = Split(LockIp(1),"$$$")
For i = 0 To UBound(arrLockIPB)
    arrLockIPBCut = Split(Trim(arrLockIPB(i)), "----")
    arrLockIpBlack = DecodeIp(arrLockIPBCut(0)) & "----" & DecodeIp(arrLockIPBCut(1))
    LockIpBlack = LockIpBlack + arrLockIpBlack & "$$$"
Next
Response.Write Replace(RightCut(LockIpBlack,"$$$",3),"$$$",Chr(13))
%></textarea>

///////////////////////////////////////////////////////////////////////////////////
IP段提交保存部分
///////////////////////////////////////////////////////////////////////////////////
Function ChkIP(Ip,Num)   '用正则判断IP和IP段格式是否正确
    Dim RegEx
    Set RegEx = New RegExp
    If Num = 1 Then
        RegEx.Pattern = "^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$"
    Else
        RegEx.Pattern = "^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}----\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$"
    End If
    ChkIP = RegEx.Test(Ip)
End Function

Dim WhiteIP,arrLockIPW,arrLockIPWCut,arrLockIpWhite,LockIpWhite
Dim BlackIP,arrLockIPB,arrLockIPBCut,arrLockIpBlack,LockIpBlack

'IP白名单保存
WhiteIP = Trim(Request.Form("LockIpWhite"))
WhiteIP = Replace(WhiteIP,Chr(10),"")
arrLockIPW = Split(WhiteIP,Chr(13))

For i = 0 To Ubound(arrLockIPW)
    If Instr(arrLockIPW(i),"----") = 0 Then
        Response.Write "<br><li>请正确填写黑白名单IP地址。</li>"
        Exit For
    End If
    arrLockIPWCut = Split(arrLockIPW(i),"----")
    If Not ChkIP(arrLockIPWCut(0),1) or Not ChkIP(arrLockIPWCut(1),1) or Not ChkIp(arrLockIPWCut(0) & "----" & arrLockIPWCut(1),0) Then
        Response.Write "<br><li>请正确填写黑白名单IP地址。</li>"
        Exit For
    End If
    arrLockIpWhite = EncodeIP(arrLockIPWCut(0)) & "----" & EncodeIP(arrLockIPWCut(1))
    LockIpWhite = LockIpWhite & arrLockIpWhite & "$$$"
Next
LockIpWhite = RightCut(LockIpWhite,"$$$",3)

'IP黑名单保存
BlackIP = Trim(Request.Form("LockIpBlack"))
BlackIP = Replace(BlackIP,Chr(10),"")
arrLockIPB = Split(BlackIP,Chr(13))

For i = 0 To Ubound(arrLockIPB)
    If Instr(arrLockIPB(i),"----") = 0 Then
        Response.Write "<br><li>请正确填写黑白名单IP地址。</li>"
        Exit For
    End If
    arrLockIPBCut = Split(arrLockIPB(i),"----")
    If Not ChkIP(arrLockIPBCut(0),1) or Not ChkIP(arrLockIPBCut(1),1) or Not ChkIp(arrLockIPBCut(0) & "----" & arrLockIPBCut(1),0) Then
        Response.Write "<br><li>请正确填写黑白名单IP地址。</li>"
        Exit For
    End If
    arrLockIpBlack = EncodeIP(arrLockIPBCut(0)) & "----" & EncodeIP(arrLockIPBCut(1))
    LockIpBlack = LockIpBlack & arrLockIpBlack & "$$$"
Next
LockIpBlack = RightCut(LockIpBlack,"$$$",3)

'保存进数据库的IP段
LockIp = LockIpWhite & "|||" & LockIpBlack

Conn.Execute("Update [TableName] Set LockIp = '" & LockIp & "'")

--------------------------------------------over-----------------------------------------