千万个美丽的未来,抵不上一个温暖的现在,每一个真实的现在,都是我们曾经幻想的未来!
Apr
29
ASP 中,我们习惯使用 Response.Redirdect 来实现页面的跳转,但是这种跳转方式的状态是 302 的,属于临时跳转,对于搜索引擎来说,是一种不友好的重定向方式。
ASP 3.0 中,有了另一种方式,即 Response.Transfer 。关于这个,可以查询相关的信息。
我们这里要讨论的是 301 跳转,例如下面的代码:
<%@ Language="VBScript" %>
<%
Response.Status = "301 Moved Permanently"
Response.AddHeader "Location", "http://www.purewhite.cn"
%>
这种方式,对于搜索引擎来说,是永久性的,跳转后的页面的内容可以被采用。由此,想到一些人问到的,如何实现同一个空间绑定多个域名。其实,只要针对输入的域名进行识别,然后结合 301 跳转来选择目标就能很好实现。假设有域名 www.yunna.net 和 www.purewhite.cn ,分别针对同一个空间中的 yunna_net 和 purewhite_cn 两个目录,那么怎么通过两个域名来自动确定访问哪个目录呢?请看下面的代码:
<%
Dim strHost = LCase(Request.ServerVariables("HTTP_HOST"))
Response.Status = "301 Moved Permanently"
Select Case strHost
Case "www.xxxx.net"
Response.AddHeader "Location",
"http://www.xxxx.net/xxxx_net/"
Case "www.xxxx.cn"
Response.AddHeader "Location",
"http://www.xxxx.cn/xxxx_cn/"
Case Else
Response.AddHeader "Location",
"http://www.xxxx.cn/xxxx_cn/"
End Select
%>
ASP 3.0 中,有了另一种方式,即 Response.Transfer 。关于这个,可以查询相关的信息。
我们这里要讨论的是 301 跳转,例如下面的代码:
<%@ Language="VBScript" %>
<%
Response.Status = "301 Moved Permanently"
Response.AddHeader "Location", "http://www.purewhite.cn"
%>
这种方式,对于搜索引擎来说,是永久性的,跳转后的页面的内容可以被采用。由此,想到一些人问到的,如何实现同一个空间绑定多个域名。其实,只要针对输入的域名进行识别,然后结合 301 跳转来选择目标就能很好实现。假设有域名 www.yunna.net 和 www.purewhite.cn ,分别针对同一个空间中的 yunna_net 和 purewhite_cn 两个目录,那么怎么通过两个域名来自动确定访问哪个目录呢?请看下面的代码:
<%
Dim strHost = LCase(Request.ServerVariables("HTTP_HOST"))
Response.Status = "301 Moved Permanently"
Select Case strHost
Case "www.xxxx.net"
Response.AddHeader "Location",
"http://www.xxxx.net/xxxx_net/"
Case "www.xxxx.cn"
Response.AddHeader "Location",
"http://www.xxxx.cn/xxxx_cn/"
Case Else
Response.AddHeader "Location",
"http://www.xxxx.cn/xxxx_cn/"
End Select
%>
Feb
23
1. 现在的日期时间命令是
<%=now%> 即可
2.ASP取得表格(from)数据输入的方法,是使用一个内置的对象(object)—Requect,
它以get,post而异。
3.若要自己用VB或其它语言编写,.dll文件供ASP使用需将DLL文件注册方可:DOS下
输入 regsbr32 *.dll
4.显示五个重复的句子,字体越来越大
<% for i=1 to 5 %>
<font size=<% =i %> color=#00ffff>
快速ASP
</font>
<br>
<% next %>
5.传送字符串到用户端
response.write string
如:<% response.write "Welcome" %>
6.链接到指定的URL地址
response.redirect url
如:
<% response.redirect "homepage.asp"
%>
*但是如果此.ASP的文件内容已经传送到用户断,则再用redirect时会发生错误。
7.其他语言与ASP的结合:
如:早上显示早安,下午显示你好
<%
if time>+#12:00:00 AM# and time<#12:00:00 PM #
then
greeting="早安!"
else
greeting="你好!"
end if
%>
<%=greeting %>
8.<script>标记在ASP中的应用
例:
<html>
<body>
<% call function1 %>
</body>
</html>
<script runat=server language=javascript>
function function1()
{
...
}
</script>
9.#include 包括其它文件
<!--#include virtual|file="filename"-->
virtual指虚拟的文件地址。
file 代表绝对的文件地址。
如:
<!--#include virtual="/booksamp/test.asp"-->
<!--#include file="/test/test.asp"-->
而且可以层层嵌套。另外#include 不能在<%--%>之内
10.ASP取得表格输入数据的方法
:GET POST
一.get:用户端将数据加到URL后,格式为”?字段1=输入数据1&字段2=输入数据2&...",
再将其送到服务器。
如: actiowww.abc.com, 字段Name输入数据为jack,字段age的数据为15,则用get方法为
http://www.abc.com?Name=jack&Age=15
二.post:用户端用http信息数据传送到服务器
ASP中:
get:使用“输入数据= Request.QueryString("字段名")",将附加于URL的数据取出。
post:使用“输入数据=Request.Forml"(字段名")",读取HTTP信息数据字段。
* Request.QueryString范例
如:〈A hery="aspform.asp?Name=jack&Age=15">
按此〈/A〉〈p〉
Name:<%=request.QueryString("Name")%)
Age:<%=request.QeueryString("Age")%)
* get 范例
·aspturm.asp:
<form action="asp1b.asp" method="get">
姓名: <input type=text name="input1" value="Your name">
<p>
特征: <select name="input2">
<option>cool!
<option>handsome
<option>warmhearted
</select>
<input type=submit value="ok">
</form>
asp1b.asp的内容
<html><body>
<% =request.querystring("input1") %> hi, your character is
<%= request.querystring("input2") %>
</body></html>
11.request.From
语法: request.From(name)[(index)|.count]
name:字段名
index:当同一字段输入多个值时,指针值index指定要读取同一字段的那一个值,范围由1到
request.From(name).count
count:由request.From(name).count可知name字段输入几个值,若无此name字段,count为0
如下例:
<%
forI=1 to request.fron("input1").count
response.write request.From("input1")(I)&"<br>"
next
%>
若input1有两个值则都显示出
*若未采用index指定读取哪个.可用
〈%
for each item request.From("input"))
repomse.write item &"<br>"
next
%>
也可用" for each x in tewuest.From"重复取得所有字段的输入值。
<% for each x in request.Form %>
request.From (<%=x%)=<%=request.Form
(x)%> <br>
<% next %>
12.
获取客户端TCP/IP端口的方法:
如: tcp/ip port is <%=request("server_port")%>
使用server_port可以得到接收HTTP request的连接port信息
13.
通过HTTP_ACCEPT_LANGUAGE的HTTP表头信息,可以得到用户端的使用语言
环境.
以下例子判断用户端的语言环境,给出不同的页面.
<% language=request.servervariables("HTTP_ACCEPT_LANGUAGE")
if language="en" then %>
<!--#include file="english.asp">
<% else %>
<!--#include file="china.asp">
<% end if%>
14.主页保留的期限
如果用户端浏览器在一个主页保留的期限内,再度浏览此主页,则原在用
户端硬盘上的主页内容将被显示.
response.expires[=number]
其中NUMBER为记录数据盒(PAGE BOX)的保留期限,单位是分钟.
或:
response.expiresabsolute[=[date][time]]
如:设定一个主页保留期到某个日子.
15.连接到指定的URL地址
如:你希望确认用户已经看过INDEX.HTM,则可以检查是否已经看过,如
尚未确认,则自动连接到首页
<%
if not session("BEEN_to_home_page") then
response.redirect "index.asp"
end if
%>
16.判断是回到本页还是第一次进入
<%
if user_has_been_here_before then
response.write "<h3 align=center> Welcome Back
again"
else
response.write "Welcome!"
end if
%>
17.显示数据库中的图片与超级连接
<%
set conn=server.creatobject("ADODB.connection")
conn.open "myaddress"
set rs=conn.execute("select name,tel,url,image from
myaddress")
%>
<p>
<tabel>
<tr>
<% for i=0 to rs.fields.count-1 %>
<td>
<b>
<%=rs(i).name %>
</b>
</td>
<% next %>
</tr>
<% do while not rs.eof %>
<tr>
<% for i=0 to rs.fields.count-1 %>
<td valign =top>
<%
if rs(i).name="image" then
response.write "<img src="""&rs(i)&""" >"
else
if rs(i).name="url" then
response.write "<a href="""&rs(i)&""">"&rs(i)&"</a>"
else
response.write rs(i)
end if
end if
%>
</td>
<%next%>
</tr>
<% rs.movenext
loop
rs.close
conn.close
%>
</html>
18. 用ASP取得浏览器信息
<%
set a=server.creatobject("MSWC.BROWSERTYPE")
msg="您使用的浏览器是:"+a.browser+"version"+a.version
%>
<%=msg%>
19. asp访问cookies的方式(使用response和request)
如下:
写入cookies:
response.cookies("待写入的coookies名称")
="待写入数据“
读取cookies:
读取数据=request.cookies("待读的cookies名称")
* 写入时注意
@ 写入cookies的response.cookies程序段必须放在<html>标记
之前。而且不可以有任何的其他html代码
@ COOKIES中必须使用expires设定有效期, COOKIES才能真正的
写入客户端硬盘中。如:
response.cookies("待写入的名称“).expires=#july 1,1998#
或response.cookies("名称").expires=DATE+365
<%=now%> 即可
2.ASP取得表格(from)数据输入的方法,是使用一个内置的对象(object)—Requect,
它以get,post而异。
3.若要自己用VB或其它语言编写,.dll文件供ASP使用需将DLL文件注册方可:DOS下
输入 regsbr32 *.dll
4.显示五个重复的句子,字体越来越大
<% for i=1 to 5 %>
<font size=<% =i %> color=#00ffff>
快速ASP
</font>
<br>
<% next %>
5.传送字符串到用户端
response.write string
如:<% response.write "Welcome" %>
6.链接到指定的URL地址
response.redirect url
如:
<% response.redirect "homepage.asp"
%>
*但是如果此.ASP的文件内容已经传送到用户断,则再用redirect时会发生错误。
7.其他语言与ASP的结合:
如:早上显示早安,下午显示你好
<%
if time>+#12:00:00 AM# and time<#12:00:00 PM #
then
greeting="早安!"
else
greeting="你好!"
end if
%>
<%=greeting %>
8.<script>标记在ASP中的应用
例:
<html>
<body>
<% call function1 %>
</body>
</html>
<script runat=server language=javascript>
function function1()
{
...
}
</script>
9.#include 包括其它文件
<!--#include virtual|file="filename"-->
virtual指虚拟的文件地址。
file 代表绝对的文件地址。
如:
<!--#include virtual="/booksamp/test.asp"-->
<!--#include file="/test/test.asp"-->
而且可以层层嵌套。另外#include 不能在<%--%>之内
10.ASP取得表格输入数据的方法
:GET POST
一.get:用户端将数据加到URL后,格式为”?字段1=输入数据1&字段2=输入数据2&...",
再将其送到服务器。
如: actiowww.abc.com, 字段Name输入数据为jack,字段age的数据为15,则用get方法为
http://www.abc.com?Name=jack&Age=15
二.post:用户端用http信息数据传送到服务器
ASP中:
get:使用“输入数据= Request.QueryString("字段名")",将附加于URL的数据取出。
post:使用“输入数据=Request.Forml"(字段名")",读取HTTP信息数据字段。
* Request.QueryString范例
如:〈A hery="aspform.asp?Name=jack&Age=15">
按此〈/A〉〈p〉
Name:<%=request.QueryString("Name")%)
Age:<%=request.QeueryString("Age")%)
* get 范例
·aspturm.asp:
<form action="asp1b.asp" method="get">
姓名: <input type=text name="input1" value="Your name">
<p>
特征: <select name="input2">
<option>cool!
<option>handsome
<option>warmhearted
</select>
<input type=submit value="ok">
</form>
asp1b.asp的内容
<html><body>
<% =request.querystring("input1") %> hi, your character is
<%= request.querystring("input2") %>
</body></html>
11.request.From
语法: request.From(name)[(index)|.count]
name:字段名
index:当同一字段输入多个值时,指针值index指定要读取同一字段的那一个值,范围由1到
request.From(name).count
count:由request.From(name).count可知name字段输入几个值,若无此name字段,count为0
如下例:
<%
forI=1 to request.fron("input1").count
response.write request.From("input1")(I)&"<br>"
next
%>
若input1有两个值则都显示出
*若未采用index指定读取哪个.可用
〈%
for each item request.From("input"))
repomse.write item &"<br>"
next
%>
也可用" for each x in tewuest.From"重复取得所有字段的输入值。
<% for each x in request.Form %>
request.From (<%=x%)=<%=request.Form
(x)%> <br>
<% next %>
12.
获取客户端TCP/IP端口的方法:
如: tcp/ip port is <%=request("server_port")%>
使用server_port可以得到接收HTTP request的连接port信息
13.
通过HTTP_ACCEPT_LANGUAGE的HTTP表头信息,可以得到用户端的使用语言
环境.
以下例子判断用户端的语言环境,给出不同的页面.
<% language=request.servervariables("HTTP_ACCEPT_LANGUAGE")
if language="en" then %>
<!--#include file="english.asp">
<% else %>
<!--#include file="china.asp">
<% end if%>
14.主页保留的期限
如果用户端浏览器在一个主页保留的期限内,再度浏览此主页,则原在用
户端硬盘上的主页内容将被显示.
response.expires[=number]
其中NUMBER为记录数据盒(PAGE BOX)的保留期限,单位是分钟.
或:
response.expiresabsolute[=[date][time]]
如:设定一个主页保留期到某个日子.
15.连接到指定的URL地址
如:你希望确认用户已经看过INDEX.HTM,则可以检查是否已经看过,如
尚未确认,则自动连接到首页
<%
if not session("BEEN_to_home_page") then
response.redirect "index.asp"
end if
%>
16.判断是回到本页还是第一次进入
<%
if user_has_been_here_before then
response.write "<h3 align=center> Welcome Back
again"
else
response.write "Welcome!"
end if
%>
17.显示数据库中的图片与超级连接
<%
set conn=server.creatobject("ADODB.connection")
conn.open "myaddress"
set rs=conn.execute("select name,tel,url,image from
myaddress")
%>
<p>
<tabel>
<tr>
<% for i=0 to rs.fields.count-1 %>
<td>
<b>
<%=rs(i).name %>
</b>
</td>
<% next %>
</tr>
<% do while not rs.eof %>
<tr>
<% for i=0 to rs.fields.count-1 %>
<td valign =top>
<%
if rs(i).name="image" then
response.write "<img src="""&rs(i)&""" >"
else
if rs(i).name="url" then
response.write "<a href="""&rs(i)&""">"&rs(i)&"</a>"
else
response.write rs(i)
end if
end if
%>
</td>
<%next%>
</tr>
<% rs.movenext
loop
rs.close
conn.close
%>
</html>
18. 用ASP取得浏览器信息
<%
set a=server.creatobject("MSWC.BROWSERTYPE")
msg="您使用的浏览器是:"+a.browser+"version"+a.version
%>
<%=msg%>
19. asp访问cookies的方式(使用response和request)
如下:
写入cookies:
response.cookies("待写入的coookies名称")
="待写入数据“
读取cookies:
读取数据=request.cookies("待读的cookies名称")
* 写入时注意
@ 写入cookies的response.cookies程序段必须放在<html>标记
之前。而且不可以有任何的其他html代码
@ COOKIES中必须使用expires设定有效期, COOKIES才能真正的
写入客户端硬盘中。如:
response.cookies("待写入的名称“).expires=#july 1,1998#
或response.cookies("名称").expires=DATE+365
Dec
25
CMS(Content Management System),译为网站内容管理系统,大概2004以前,如果想进行网站内容管理,基本上都是靠手工维护,但千变万化的信息流,如果没有好的程序支持,继续靠手工完成是不可能的事,如果有一个好的系统来支撑你的网站,那将节省大量的人力物力,开发者就可能给客户一个软件包,可以用它定期人工修改网站,甚至是使用采集功能,大批量添加数据。只要你配置安装好,你的编辑,在线记者,更新员只要定期更新数据,剩下的事就交给CMS去处理。
动易
http://www.powereasy.net/
这套是国产AspCMS中非常强大的系统,一路走来,动易不断完善,而且也不断加强功能,包括个人版,学校版,政府版,企业版,后台包括的功能,信息发布,类别管理,权限控制,信息采集,而且跟第三方的程序,比如论坛,商城, blog可以完美结合,基本上可以满足一个中大型网站的要求,但Asp和Access的的局限性,还有本身功能Dll的限制,使得免费版差不多成鸡肋。这套系统比较适合非专业人士使用,在使用操作方面做的非常人性话,而如果说想自己修改或者二次开发的话就有点免为其难了。
风讯
http://www.foosun.cn/
风讯的系统功能强大,自由度高,是现在人气比较高的系统之一,可以根据自己的想法做出一个网页从而建立一个有自我风格的网站,更新速度快,一直有新的版本出现,现在又开放采集、下载、投稿、图片整站管理系统,第三方整合等功能,开源是它最大特点,希望保持。然后缺点就是后台人性化差了一点,上手有点难度,而且连一套默认的模板都没有,因为自由度太高了,让一些新手更难上手,还有就是免费版的生成静态发布的效率不高。
创力
http://www.aspoo.com/
创力是一套无任何文件加密,不需要注册组件,不需要绑定域名,经过完善设计、精心打造的一个适用于各种服务器环境的安全、稳定、快速、强大、高效、易用、优秀的网站建设解决方案。系统功能齐全,集成文章、下载、图片、影视、商城、留言、用户等大模块,并可无限制N个与文章、下载、图片等模块相同的的模块,每个模块下更可无限栏目分类,加上Rss订阅、公告、广告、统计、关键字、友情链接、JS代码、站点地图……等等,综合来说是一套不错的网站系统。
JTBC
http://www.jetiben.com/
JTBC也是新出不久的一套可对现有模块进行扩充与克隆的网站系统核心,采用UTF-8编码,是目前ASPCMS界中唯一一款真正意义上做到代码与程序全脱离的程序,似乎采用了xml的散存储技术,而且在代码与程序脱离的技术上,又加人了语言与代码脱离,语言与程序脱离的两两脱离关系,基于这种特性,JTBC就具有了非常强大的可扩充性和可二次开发性,目前具有文章系统,下载系统,商城系统三大传统模块,有友情链接,在线支付,网站留言,网站评论等常规管理项目,JTBC可能对于未上手的人来说是一套很头大的系统,但对于熟悉的人而言使用起来非常有效率,做企业网站与其他网站均可。
TSYS
http://www.tsyschina.com/
非常遗憾 2.0刚刚出测试版,作者就好像人间蒸发一样消失了,官方网站也在不久后处于管理状态,不过对于一个免费开源,没有版权的CMS来说我们也没有什么可要求的!在TSYS的各个版本中均没有出现过重大的安全漏洞而且对于目前1.1来说已经是很完善成熟的了,TSYS和一般的Asp 的CMS不大一样,他的功能并非由本身而定,而是根据使用者的能力而定。使用者越厉害 TSYS本身也可以变的更厉害。强大的诸如碎片等的信息管理,可以将信息在显示的时候重新整合,说白了就是只有对TSYS非常熟悉的人才可以将TSYS的优势发挥出来,因此,光就这点也就注定了TSYS流行不起来,除非具有人性话操作的修改版本出来。
乔客
http://www.joekoe.com/
这个系统已经很久了,但好像一直存活在动易和风讯两者之间,现在3.0的Joekoe CMS出来了,但另我比较失望,相比免费版的1.2,功能是增强了,但也Dll,这个可能也是国产程序的一个特色罢了。它本身已经是一个融合度非常高的系统,有商城,新闻,下载,论坛,留言,影视,博客圈等,感觉有那么点WEB2.0 的味道,不想怎么修改的朋友直接拿去就可以用了。
科汛
http://www.kesion.com/
科汛是一套新出的网站系统,其功能非常强大,目前主流网站的功能在其系统内均能实现,具有强大的标签(JS)管理功能,个性化的标签(JS)参数配置功能,做一个个性的大站不再是梦想。网站整体开源,具有文章模块,图片模块,下载模块,动漫模块,音乐模块,会员模块,采集模块等等,功能非常不错。
新云
http://www.newasp.cn/
新云最初做的是下载站,后来转为多模块的系统,最近发现有不少的网站都在使用。由文章、下载、商城、留言、用户管理五大功能模块和广告、公告、连接、统计、采集、模板管理、数据库管理等多个通用模块组成,而且功能确实有一些值得称道的地方,不过又是DLL的,免费版有不少的限制,但对一个简单基本的网站来说,功能够用了。
在上述的CMS中,具有开源性质的有风讯,创力,JTBC,TSYS,科汛,对于长期建站的专业人士来说,开源无疑具有非常重大的意义!支持开源!
动易
http://www.powereasy.net/
这套是国产AspCMS中非常强大的系统,一路走来,动易不断完善,而且也不断加强功能,包括个人版,学校版,政府版,企业版,后台包括的功能,信息发布,类别管理,权限控制,信息采集,而且跟第三方的程序,比如论坛,商城, blog可以完美结合,基本上可以满足一个中大型网站的要求,但Asp和Access的的局限性,还有本身功能Dll的限制,使得免费版差不多成鸡肋。这套系统比较适合非专业人士使用,在使用操作方面做的非常人性话,而如果说想自己修改或者二次开发的话就有点免为其难了。
风讯
http://www.foosun.cn/
风讯的系统功能强大,自由度高,是现在人气比较高的系统之一,可以根据自己的想法做出一个网页从而建立一个有自我风格的网站,更新速度快,一直有新的版本出现,现在又开放采集、下载、投稿、图片整站管理系统,第三方整合等功能,开源是它最大特点,希望保持。然后缺点就是后台人性化差了一点,上手有点难度,而且连一套默认的模板都没有,因为自由度太高了,让一些新手更难上手,还有就是免费版的生成静态发布的效率不高。
创力
http://www.aspoo.com/
创力是一套无任何文件加密,不需要注册组件,不需要绑定域名,经过完善设计、精心打造的一个适用于各种服务器环境的安全、稳定、快速、强大、高效、易用、优秀的网站建设解决方案。系统功能齐全,集成文章、下载、图片、影视、商城、留言、用户等大模块,并可无限制N个与文章、下载、图片等模块相同的的模块,每个模块下更可无限栏目分类,加上Rss订阅、公告、广告、统计、关键字、友情链接、JS代码、站点地图……等等,综合来说是一套不错的网站系统。
JTBC
http://www.jetiben.com/
JTBC也是新出不久的一套可对现有模块进行扩充与克隆的网站系统核心,采用UTF-8编码,是目前ASPCMS界中唯一一款真正意义上做到代码与程序全脱离的程序,似乎采用了xml的散存储技术,而且在代码与程序脱离的技术上,又加人了语言与代码脱离,语言与程序脱离的两两脱离关系,基于这种特性,JTBC就具有了非常强大的可扩充性和可二次开发性,目前具有文章系统,下载系统,商城系统三大传统模块,有友情链接,在线支付,网站留言,网站评论等常规管理项目,JTBC可能对于未上手的人来说是一套很头大的系统,但对于熟悉的人而言使用起来非常有效率,做企业网站与其他网站均可。
TSYS
http://www.tsyschina.com/
非常遗憾 2.0刚刚出测试版,作者就好像人间蒸发一样消失了,官方网站也在不久后处于管理状态,不过对于一个免费开源,没有版权的CMS来说我们也没有什么可要求的!在TSYS的各个版本中均没有出现过重大的安全漏洞而且对于目前1.1来说已经是很完善成熟的了,TSYS和一般的Asp 的CMS不大一样,他的功能并非由本身而定,而是根据使用者的能力而定。使用者越厉害 TSYS本身也可以变的更厉害。强大的诸如碎片等的信息管理,可以将信息在显示的时候重新整合,说白了就是只有对TSYS非常熟悉的人才可以将TSYS的优势发挥出来,因此,光就这点也就注定了TSYS流行不起来,除非具有人性话操作的修改版本出来。
乔客
http://www.joekoe.com/
这个系统已经很久了,但好像一直存活在动易和风讯两者之间,现在3.0的Joekoe CMS出来了,但另我比较失望,相比免费版的1.2,功能是增强了,但也Dll,这个可能也是国产程序的一个特色罢了。它本身已经是一个融合度非常高的系统,有商城,新闻,下载,论坛,留言,影视,博客圈等,感觉有那么点WEB2.0 的味道,不想怎么修改的朋友直接拿去就可以用了。
科汛
http://www.kesion.com/
科汛是一套新出的网站系统,其功能非常强大,目前主流网站的功能在其系统内均能实现,具有强大的标签(JS)管理功能,个性化的标签(JS)参数配置功能,做一个个性的大站不再是梦想。网站整体开源,具有文章模块,图片模块,下载模块,动漫模块,音乐模块,会员模块,采集模块等等,功能非常不错。
新云
http://www.newasp.cn/
新云最初做的是下载站,后来转为多模块的系统,最近发现有不少的网站都在使用。由文章、下载、商城、留言、用户管理五大功能模块和广告、公告、连接、统计、采集、模板管理、数据库管理等多个通用模块组成,而且功能确实有一些值得称道的地方,不过又是DLL的,免费版有不少的限制,但对一个简单基本的网站来说,功能够用了。
在上述的CMS中,具有开源性质的有风讯,创力,JTBC,TSYS,科汛,对于长期建站的专业人士来说,开源无疑具有非常重大的意义!支持开源!
Jun
25
三、JavaScript中正则表达式的使用
在JavaScript 1.2版以后,JavaScript也支持正则表达式。
1、replace
replace在一个字符串中通过正则表达式查找替换相应的内容。replace并不改变原来的字符串,只是重新生成了一个新的字符串。如果需要执行全局查找或忽略大小写,那么在正则表达式的最后添加g和i。
例:
<SCRIPT>
re = /apples/gi;
str = "Apples are round, and apples are juicy.";
newstr=str.replace(re, "oranges");
document.write(newstr)
</SCRIPT>
结果是:"oranges are round, and oranges are juicy."
例:
<SCRIPT>
str = "Twas the night before Xmas...";
newstr=str.replace(/xmas/i, "Christmas");
document.write(newstr)
</SCRIPT>
结果是:"Twas the night before Christmas..."
例:
<SCRIPT>
re = /(\w+)\s(\w+)/;str = "John Smith";
newstr = str.replace(re, "$2, $1");
document.write(newstr)
</SCRIPT>
结果是:"Smith, John".
2、search
search通过正则表达式查找相应的字符串,只是判断有无匹配的字符串。如果查找成功,search返回匹配串的位置,否则返回-1。
search(regexp)
<SCRIPT>
function testinput(re, str){
if (str.search(re) != -1)
midstring = " contains ";
else
midstring = " does not contain ";
document.write (str + midstring + re.source);
}
testinput(/^[1-9]/i,"123")
</SCRIPT>
3、match
match方法执行全局查找,查找结果存放在一个数组里。
例一:
<SCRIPT>
str = "For more information, see Chapter 3.4.5.1";
re = /(chapter \d+(\.\d)*)/i;
found = str.match(re);
document.write(found);
</SCRIPT>
显示结果:Chapter 3.4.5.1,Chapter 3.4.5.1,.1
例二:
<SCRIPT>
str = "abcDdcba";
newArray = str.match(/d/gi);
document.write(newArray);
</SCRIPT>
显示结果D, d.
四、示例
1 、判断数字的正确性
<%@ Language=VBScript %>
<script language="javascript" runat="server">
function isNumeric(strNumber) {
return (strNumber.search(/^(-|\+)?\d+(\.\d+)?$/) != -1);
}
function isUnsignedNumeric(strNumber) {
return (strNumber.search(/^\d+(\.\d+)?$/) != -1);
}
function isInteger(strInteger) {
return (strInteger.search(/^(-|\+)?\d+$/) != -1);
}
function isUnsignedInteger(strInteger) {
return (strInteger.search(/^\d+$/) != -1);
}
</script>
<HTML>
<BODY>
<b>判断数字的正确性</b>
<%
Dim strTemp
strTemp = CStr(Request.Form("inputstring"))
If strTemp = "" Then strTemp = "0"
%>
<TABLE BORDER="1" CELLPADDING="4" CELLSPACING="2">
<TR>
<TD ALIGN="right"><B>原始字符串</B></TD>
<TD><%= strTemp %></TD>
</TR>
<TR>
<TD ALIGN="right"><B>数字</B></TD>
<TD><%=isNumeric(strTemp)%></TD>
</TR>
<TR>
<TD ALIGN="right"><B>非负数字</B></TD>
<TD><%=isUnsignedNumeric(strTemp)%></TD>
</TR>
<TR>
<TD ALIGN="right"><B>整数</B></TD>
<TD><%=isInteger(strTemp)%></TD>
</TR>
<TR>
<TD ALIGN="right"><B>非负整数()</B></TD>
<TD><%=isUnsignedInteger(strTemp)%></TD>
</TR>
</TABLE>
<FORM ACTION="<%=Request.ServerVariables("SCRIPT_NAME")%>" METHOD="post">
请输入一个数字:<BR>
<INPUT TYPE="text" NAME="inputstring" SIZE="50"></INPUT><BR>
<INPUT TYPE="submit" Value="提交"></INPUT><BR>
</FORM>
</BODY>
</HTML>
2、判断Email地址的正确性
<%
Function isemail(strng)
isemail = false
Dim regEx, Match
Set regEx = New RegExp
regEx.Pattern = "^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$"
regEx.IgnoreCase = True
Set Match = regEx.Execute(strng)
if match.count then isemail= true
End Function
%>
五、总结
上面我们介绍了正则表达式的基本概念,以及在VBScript和JavaScript中如何使用正则表达式,同时,通过一些实例让大家有了感性的认识。正则表达式的应用范围很广,能为大家解决很多实际中的问题。本文介绍的内容只是一些初步的知识,还有很多语法规则需要大家继续学习,在实践中发现问题,解决问题。
在JavaScript 1.2版以后,JavaScript也支持正则表达式。
1、replace
replace在一个字符串中通过正则表达式查找替换相应的内容。replace并不改变原来的字符串,只是重新生成了一个新的字符串。如果需要执行全局查找或忽略大小写,那么在正则表达式的最后添加g和i。
例:
<SCRIPT>
re = /apples/gi;
str = "Apples are round, and apples are juicy.";
newstr=str.replace(re, "oranges");
document.write(newstr)
</SCRIPT>
结果是:"oranges are round, and oranges are juicy."
例:
<SCRIPT>
str = "Twas the night before Xmas...";
newstr=str.replace(/xmas/i, "Christmas");
document.write(newstr)
</SCRIPT>
结果是:"Twas the night before Christmas..."
例:
<SCRIPT>
re = /(\w+)\s(\w+)/;str = "John Smith";
newstr = str.replace(re, "$2, $1");
document.write(newstr)
</SCRIPT>
结果是:"Smith, John".
2、search
search通过正则表达式查找相应的字符串,只是判断有无匹配的字符串。如果查找成功,search返回匹配串的位置,否则返回-1。
search(regexp)
<SCRIPT>
function testinput(re, str){
if (str.search(re) != -1)
midstring = " contains ";
else
midstring = " does not contain ";
document.write (str + midstring + re.source);
}
testinput(/^[1-9]/i,"123")
</SCRIPT>
3、match
match方法执行全局查找,查找结果存放在一个数组里。
例一:
<SCRIPT>
str = "For more information, see Chapter 3.4.5.1";
re = /(chapter \d+(\.\d)*)/i;
found = str.match(re);
document.write(found);
</SCRIPT>
显示结果:Chapter 3.4.5.1,Chapter 3.4.5.1,.1
例二:
<SCRIPT>
str = "abcDdcba";
newArray = str.match(/d/gi);
document.write(newArray);
</SCRIPT>
显示结果D, d.
四、示例
1 、判断数字的正确性
<%@ Language=VBScript %>
<script language="javascript" runat="server">
function isNumeric(strNumber) {
return (strNumber.search(/^(-|\+)?\d+(\.\d+)?$/) != -1);
}
function isUnsignedNumeric(strNumber) {
return (strNumber.search(/^\d+(\.\d+)?$/) != -1);
}
function isInteger(strInteger) {
return (strInteger.search(/^(-|\+)?\d+$/) != -1);
}
function isUnsignedInteger(strInteger) {
return (strInteger.search(/^\d+$/) != -1);
}
</script>
<HTML>
<BODY>
<b>判断数字的正确性</b>
<%
Dim strTemp
strTemp = CStr(Request.Form("inputstring"))
If strTemp = "" Then strTemp = "0"
%>
<TABLE BORDER="1" CELLPADDING="4" CELLSPACING="2">
<TR>
<TD ALIGN="right"><B>原始字符串</B></TD>
<TD><%= strTemp %></TD>
</TR>
<TR>
<TD ALIGN="right"><B>数字</B></TD>
<TD><%=isNumeric(strTemp)%></TD>
</TR>
<TR>
<TD ALIGN="right"><B>非负数字</B></TD>
<TD><%=isUnsignedNumeric(strTemp)%></TD>
</TR>
<TR>
<TD ALIGN="right"><B>整数</B></TD>
<TD><%=isInteger(strTemp)%></TD>
</TR>
<TR>
<TD ALIGN="right"><B>非负整数()</B></TD>
<TD><%=isUnsignedInteger(strTemp)%></TD>
</TR>
</TABLE>
<FORM ACTION="<%=Request.ServerVariables("SCRIPT_NAME")%>" METHOD="post">
请输入一个数字:<BR>
<INPUT TYPE="text" NAME="inputstring" SIZE="50"></INPUT><BR>
<INPUT TYPE="submit" Value="提交"></INPUT><BR>
</FORM>
</BODY>
</HTML>
2、判断Email地址的正确性
<%
Function isemail(strng)
isemail = false
Dim regEx, Match
Set regEx = New RegExp
regEx.Pattern = "^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$"
regEx.IgnoreCase = True
Set Match = regEx.Execute(strng)
if match.count then isemail= true
End Function
%>
五、总结
上面我们介绍了正则表达式的基本概念,以及在VBScript和JavaScript中如何使用正则表达式,同时,通过一些实例让大家有了感性的认识。正则表达式的应用范围很广,能为大家解决很多实际中的问题。本文介绍的内容只是一些初步的知识,还有很多语法规则需要大家继续学习,在实践中发现问题,解决问题。
Dec
25
语句
Call
[call] name [argumentlist]
把控制转移到函数或子程序。当调用函数或子程序时,Call是可写可不写的。但是如果你用了Call,那么argumentlist必须用括号括起来。
Const
[Public | Private] Const constantname=expression
用于申明常数。你可以在一行里申明多个常数,此时你必须用逗号把常数赋值语句隔开。
Dim
Dim varname[ ( [subscripts])][, varname [( [subscripts])]...
创建一个新变量并且分配存储空间。
DO . . . LOOP
语法 1:
Do [{While | Until } condition ]
[statements]
[Exit Do]
[statements]
LOOP
语法 2:
Do
[statements]
[Exit Do]
[statements]
LOOP [{While | Until } condition ]
当条件condition为真时或直到条件condition为真时,两种形式都重复执行语句。
Erase
Erase array
清理数组,对于固定长度的数组,重新初始化元素;对于动态数组,重置存储空间。
Exit
Exit Do
退出一个 DO . . . LOOP 循环。
Exit For
退出一个 For . . . Next 循环或For Each . . . Next循环。
Exit Function
退出一个 函数。
Exit Sub
退出一个子程序。
For . . . Next
For counter = start To End [Step step]
[statements]
[Exit For]
[statements]
Next
由loop 计数器指定的次数重复执行statements语句群。
For Each . . . Next
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
对于每一个在数组或集合中的元素,重复执行statements语句群。
Function
[Public | Private] Function name [(arglist)]
[statements]
[name=expression]
[Exit Function]
[statements]
[name=expression]
End Function
定义一个函数,指明函数名,参数及代码。
If . . . Then . . . Else
语法1:
If condition Then statements [Else elsestatements]
语法2:
If condition Then
statements
[ElseIf condition-n Then
[elseifstatements]] . . .
[Else
[elsestatements]]
End If
两种格式都条件执行一系列语句。
On Error
On Error Resume Next
当一个错误发生时,这条语句就执行紧靠发生错误语句后面的语句,或者执行紧靠调用进程后面的语句。
Option Explicit
Option Explicit
在使用变量之前强制明确定义该变量,可以用Dim,Private,Public或 ReDim语句定义变量。
Private
Private varname[([下标])][, varname[([下标])] . . .
创建私有变量并且分配存储空间。(私有变量只能在定义该变量的脚本中可用)
Public
Public varname[([下标])][, varname[([下标])] . . .
创建公有变量并且分配存储空间。(公有变量在程序的任何地方均可使用)
Randomize
Randomize [number]
给Rnd函数的随机数发生器一个新种子值。
ReDim
ReDim [Preserve] varname(subscripts)[, varname(subscripts)] . . .
修改维的下标,大小;或重置动态数组的大小。Preserve 保护已存数组的数据。
Rem
语法1:
Rem comment
语法2:
‘comment
这两种语句形式都能使注释的句子不被处理。如果Rem和其它语句在同一行上,Rem 语句必须在后且二者之间必须用冒号隔开。
Select Case
Select Case testexpression
[Case expressionlist-n
[statements-n]] . . .
[Case Else expressionlist-n
[elsestatements-n]]
End Select
如果某一个expressionlist 和testexpression 匹配,则执行和expressionlist对应的语句;如果没有一个expressionlist 和testexpression 相匹配,则执行和Case Else 相对应的语句。
Set
Set obectvar= {objectexpression | Nothing}
赋予一个变量或一个性质对象引用。当赋予的值为Nothing 时,使obectva 和任何以前指明的对象解除关系。
Sub
[Public | Private] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub
定义一个子程序,指明名称,参数及代码。
While . . . Wend
While condition
[statements]
[color=Maroon]Wend
不停地连续执行语句statements 直到条件condition为True。
Call
[call] name [argumentlist]
把控制转移到函数或子程序。当调用函数或子程序时,Call是可写可不写的。但是如果你用了Call,那么argumentlist必须用括号括起来。
Const
[Public | Private] Const constantname=expression
用于申明常数。你可以在一行里申明多个常数,此时你必须用逗号把常数赋值语句隔开。
Dim
Dim varname[ ( [subscripts])][, varname [( [subscripts])]...
创建一个新变量并且分配存储空间。
DO . . . LOOP
语法 1:
Do [{While | Until } condition ]
[statements]
[Exit Do]
[statements]
LOOP
语法 2:
Do
[statements]
[Exit Do]
[statements]
LOOP [{While | Until } condition ]
当条件condition为真时或直到条件condition为真时,两种形式都重复执行语句。
Erase
Erase array
清理数组,对于固定长度的数组,重新初始化元素;对于动态数组,重置存储空间。
Exit
Exit Do
退出一个 DO . . . LOOP 循环。
Exit For
退出一个 For . . . Next 循环或For Each . . . Next循环。
Exit Function
退出一个 函数。
Exit Sub
退出一个子程序。
For . . . Next
For counter = start To End [Step step]
[statements]
[Exit For]
[statements]
Next
由loop 计数器指定的次数重复执行statements语句群。
For Each . . . Next
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
对于每一个在数组或集合中的元素,重复执行statements语句群。
Function
[Public | Private] Function name [(arglist)]
[statements]
[name=expression]
[Exit Function]
[statements]
[name=expression]
End Function
定义一个函数,指明函数名,参数及代码。
If . . . Then . . . Else
语法1:
If condition Then statements [Else elsestatements]
语法2:
If condition Then
statements
[ElseIf condition-n Then
[elseifstatements]] . . .
[Else
[elsestatements]]
End If
两种格式都条件执行一系列语句。
On Error
On Error Resume Next
当一个错误发生时,这条语句就执行紧靠发生错误语句后面的语句,或者执行紧靠调用进程后面的语句。
Option Explicit
Option Explicit
在使用变量之前强制明确定义该变量,可以用Dim,Private,Public或 ReDim语句定义变量。
Private
Private varname[([下标])][, varname[([下标])] . . .
创建私有变量并且分配存储空间。(私有变量只能在定义该变量的脚本中可用)
Public
Public varname[([下标])][, varname[([下标])] . . .
创建公有变量并且分配存储空间。(公有变量在程序的任何地方均可使用)
Randomize
Randomize [number]
给Rnd函数的随机数发生器一个新种子值。
ReDim
ReDim [Preserve] varname(subscripts)[, varname(subscripts)] . . .
修改维的下标,大小;或重置动态数组的大小。Preserve 保护已存数组的数据。
Rem
语法1:
Rem comment
语法2:
‘comment
这两种语句形式都能使注释的句子不被处理。如果Rem和其它语句在同一行上,Rem 语句必须在后且二者之间必须用冒号隔开。
Select Case
Select Case testexpression
[Case expressionlist-n
[statements-n]] . . .
[Case Else expressionlist-n
[elsestatements-n]]
End Select
如果某一个expressionlist 和testexpression 匹配,则执行和expressionlist对应的语句;如果没有一个expressionlist 和testexpression 相匹配,则执行和Case Else 相对应的语句。
Set
Set obectvar= {objectexpression | Nothing}
赋予一个变量或一个性质对象引用。当赋予的值为Nothing 时,使obectva 和任何以前指明的对象解除关系。
Sub
[Public | Private] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub
定义一个子程序,指明名称,参数及代码。
While . . . Wend
While condition
[statements]
[color=Maroon]Wend
不停地连续执行语句statements 直到条件condition为True。