爱国设计
业内动态 | 技术文章 | 相关下载 | 设计素材 | 酷站欣赏 | 网站设计 | 娱乐新区 | 论坛交流
您的位置:首页 > 技术专栏 > 网页制作 > 网页教程 >  
DW MX ASP编程基础
作者:李飞 | 时间:2005-01-12 | 来自:mxsky
浏览数: | 文章有0条评论 | 发布者:
                                                       

预读提示:要读懂本文,请确保你已经学会使用DW MX ASPVBScript模式的“服务器行为”,但你不须懂得asp语法。

本文如有阐述错误或技术性错误的话,请各位高手在论坛发贴予以更正。

自从本人在UDSKY论坛发布有关于用DW MX设计论坛的消息后,网友反响热切,大多数网友是支持的。而且据我了解,许多朋友只熟悉用DW MX来设计静态页,后台程序方面也不太熟。所以笔者先尝试撰写此文供“菜鸟”们事前好好地“补习”一翻。笔者相信,“菜鸟”们个个都不是傻瓜,如果肯努力,别人能做到的,你也能行!

因局限于DW MX的服务器行为模板功能,完全用它来设计结构复杂的论坛较困难(当然,如果你只是做个比留言本功能更强些的“实用型论坛”是没问题的)。下面和大家切磋一下ASP的基本语法,考虑到我们的““菜鸟””一般对ASP不太熟,本文也不是ASP基础完全教程,但是针对忠于DW MX而初学ASP的用户而写,只简单介绍几个基本对象,方法、属性及简单应用实例,这些在DW MX的ASP服务器程序设计中使用极频繁的;也即是说,先前你并不须要对ASP有丝毫的了解,只要花点时间,练练文中介绍的小例子,记住这几个对象使用方法,然后配合DW MX强大的服务器行为,设计出属于你自己的服务器应用程序。

如果你是ASP高手,此文对你没什么可读之处,如有错误,请赐教!我们的“菜鸟”级朋友们却不然,虽然网上、书籍有关于此的教程文章多得满天飞,但很少有针对DW MX而作的,而且太多的“语法简介”,令人心烦气燥。好了,闲话少说,转入正题。

本文涉及到的几个基本对象:

  • Request对象
  • Response对象
  • session对象

明眼人一看就知这是ASP内建对象的其中三个,使用极频繁,如果你要学好ASP,这几个对象必须熟练掌握。下面一一介绍这几个对象的使用方法、属性等,每讲完一个知识点便即时剖析DW MX生成代码功用,并尝试动手编写实现DW MX的一些功能的代码,不过代码要比DW MX自动生成的简单得多,只要以实例为主,使大家有个感性认识,易于理解和消化。

一、Request对象——接收客户端数据

“request”的中文译义为“请求”。Request对象是ASP的“眼睛”和“耳朵”,客户端的明暗动静,由它来负责监督,诸如表单提交,URL参数传递等,均被它一一辑拿于手。多说无益,先试试身手再说。打开DW MX,执行“文件”——“新建”命令,弹出“新建文档”对话框,在“常规”选项卡的“类别”中选中“动态页”,动态页项选中“ASP VBScript”,因为我们只要是使用VBScript作为AS的脚本语言,点击“创建”。

Request对象的语法格式:

request[集合|属性|方法|(变量)]

使用request对象可以访问任何基于HTTP请求传递的信息,包括从客户端HTML表单用POSP或GET方法传递的参数、Cookie和用户户认证。

实例一,使用request对象的form方法

分别插入表单、文本域和扭按,文本域名称为“oo”,表单方法为“POST”,其它两个东东不用理。

在<body></body>标签中写入以下代码:

<%=request.form("oo")%>

完整的代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<%=request.Form("oo")%>
<form name="form1" method="post" action="">
<input name="oo" type="text" id="oo">
<input type="submit" name="Submit" value="提交">
</form>
</body>
</html>

其中,文本域名称一定要与request.Form("oo")中的Form("变量")集合中的变量名匹配,才能接收客户端表单提交过来的数据,如本例的“oo”。试按“F12”键预览,在文本域中随便输入一些内容,按“提交”按扭,是不是把刚才输入的内容显示出来了?

在本例中,我们用到了Request.form方法,它是用来接收表单变量的,还有“<%”、“%>”、“=”这几个符号,“<%”和“%>”是ASP的定界符,凡包含有ASP语句的代码均要用该定界符以区别开其它的HTML代码,并且服务器能对它进行解释。“=”具有输出功能,没有它将不能向客户端输出数据,你可以把这个符号去掉试试与刚才的反应有什么不同(什么也没有显示)。

除了request.form方法外,还有request.QueryString方法,与request.form不同的是,它是接收URL参数的,诸如大家浏览网页时看到这样的格式地址:

http://localhost/asp/uio.asp?oo=request对象的使用

这个地址格式中,用“?”在分开地址信息URL参数,“?”前的“http://localhost/asp/uio.asp”为地址信息,“?”后的“oo=request对象的使用”为URL参数,其中“oo”是承载数据的变量,这个变量名你可以随便叫,应该以英文字母为主,可以包括下划线“_”,但不要以下划线开头。下面,就以request对象的QueryString方法,点击页面中超链接打开另一个页面的同时把附带的数据传递到该页。

实例二,使用request对象的QueryString方法

目标页:文件名为bbb.asp

ASP语句:

<%=request.QueryString("uu")%>

完整代码:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<p><%=request.QueryString("uu")%></p>
<form name="form1" method="post" action="">
<input name="oo" type="text" id="oo">
<input type="submit" name="Submit" value="提交">
</form>
</body>
</html>

传递页:文件名为aa.htm

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<a href="bbb.asp?uu=把我传递到bbb.asp页去!">点击这儿,把数据传递到bbb.asp页
</a>
</body>
</html>

超链接格式为<a href="Untitled-3.asp?uu=把我传递到bbb.asp页去!">链接文本</a>

先执行aa.htm页,点击超链接,是不是把“把我传递到bbb.asp页去!”传递到目标页中去了?

request.formrequest.QueryString的比较

两者除了接收方法不同外,还有传递数据量大小的问题,request.form方法能接收的数据没有限制,而request.QueryString只能接收数据量小于2KB数据,当然后者的执行速度要比前者快。一般往数据库请求查询时用request.QueryString方法,因为查询时只不过那么几个关键词,没有必要用request.form方法而导致查询速度变慢。另外,request.QueryString方法还会把数据信息显示在客户端浏览器地址栏中,安全性较差。  request.form方法不存在上述问题,因此大量被应用在多个文本域提交数据和用户登陆的场合。

request对象也可以不指明具体使用QueryString或是form方法,如request("变量"),因为它能自动识别,不过还是指明为好,否则,要它自己判断也得花些微时间,影响程序执行效率。

DW MX中的代码剖析

以下所示,是插入Command1命令服务器行为时接收URL参数的语句

<%

if(Request.QueryString("ID") <> "") then Command1__MMid = Request.QueryString("ID")

%>

这句代码的作用是,当由Request对象的QueryString方法接收的URL参数“ID”不为空时,则把“ID”承载的数据信息赋值给变量“Command1__MMid”(说白了,也就是Command1__MMid=ID),以便下一个须要调用“Command1__MMid”变量的程序使用。这里有一个if.....then的判断语句,稍后会讲到的。

<>   不相等,当左右两边的表达式的值不相等时,结果为真。例如,1<>2,结果为真。

=     相等,当左右两边的表达式的值相等时,结果为真。例如,to=to,结果为真。

>    大于,当左边表达式的值大于右边表达式的值时,结果为真例如,5>3 ,结果为真。

<    小于,当左边表达式的值小于右边表达式的值时,结果为真。例如,3<5 ,结果为假。

>=  当左边表达式的值大于或等于右边表达式的值时,结果为真。

<=  当左边表达式的值小于或等于右边表达式的值时,结果为真。

 

实例三,使用request对象结合条件判断语句

在学习这个实例前,先要试试VBScript脚本的几个超简单的东西,因为ASP的主体部分是靠VBScript脚本来控制的啊,如循环(DW MX中称为“重复区域”)、利用条件判断执行命令等。这里不会介绍太多的VBScript语法,请放心,呵呵!

1、常用的 if...then...else...end if 选择语句

如果你懂英文(我用金山快译翻译才知道的呀,唉!谁叫俺是英文肓呢)的话,也可以大概看得出这个语句的意思了,就是“如果.....然后...别的...结束”,没错,它的作用被它自己说明了,也即是:

if (如果什么什么时)....then(然后)

执行asp语句命令.....

elseif(上一个条件不满足,重新判断当什么什么时)....then(然后)

执行asp语句命令.....

...................

else(否则,最后的)

执行asp语句命令....

end if (结束)

这么直截了当的说明,你应该明白了一点点吧?什么???还不明白?我们都用实例来增强理解它。

实例三(1)、新建asp文件,文件名为:ccc.asp(随便吧)

插入表单、列表/菜单和按扭,表单方法为“POST”,按扭类型为“提交表单”,“列表/菜单”名称为“bb”

其它的不用理了。

在<body></body>标签中间敲入以语句:

<% if request.form("bb")=1 then
response.write"你好!你是普通网友!"
elseif request.form("bb")=2 then
response.write"你好!你是高级站友!"
elseif request.form("bb")=3 then
response.write"你好!你是管理员!"
else
response.write"很抱歉!我不知道你是谁!"
end if
%>

完整代码为:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>
<% if request.form("bb")=1 then
response.write"你好!你是普通网友!"
elseif request.form("bb")=2 then
response.write"你好!你是高级站友!"
elseif request.form("bb")=3 then
response.write"你好!你是管理员!"
else
response.write"很抱歉!我不知道你是谁!"
end if
%>
<form name="form1" method="post" action="">
<select name="bb" id="bb">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="0">0</option>
</select>
<input type="submit" name="Submit" value="提交">
</form>
</body>
</html>

按“F12”键预览,选择“1”时,页面将输出:你好!你是普通网友!

                                 选择“2”时,页面将输出:你好!你是高级网友!

                                 选择“3”时,页面将输出:你好!你是管理员!

                                 选择“0”时,页面将输出:很抱歉!我不知道你是谁!

这个例子使用到了elseif子句,以便在多个条件中进行选择,你可以任意添加多个elseif子句。

本例用到一个“response.write”的对象向客户端输出数据,稍后将讲到它。

也可以用if....then....else来按制HTML代码的输出(隐藏和显示)

<% if request.form("bb")=1 then%>
你好!你是普通网友!
<%elseif request.form("bb")=2 then%>
你好!你是高级站友!
<% elseif request.form("bb")=3 then%>
你好!你是管理员!
<%else%>
很抱歉!我不知道你是谁!
<% end if%>

2.select case 结构选择语句

前面介绍的if....then....else结构虽然好用,但是添加太多的elseif子句时,会使代码变得繁琐起来。

select case是if...then...else结构的一种变通形式,可使代码变得简练易读。下面例子:

实例三(2):  把实例三(1)的代码:

<% if request.form("bb")=1 then
response.write"你好!你是普通网友!"
elseif request.form("bb")=2 then
response.write"你好!你是高级站友!"
elseif request.form("bb")=3 then
response.write"你好!你是管理员!"
else
response.write"很抱歉!我不知道你是谁!"
end if
%>

修改成:

<% select case request.form("bb")
case "1"
response.write"你好!你是普通网友!"
case "2"
response.write"你好!你是高级站友!"
case "3"
response.write"你好!你是管理员!"
case else
response.write"很抱歉!我不知道你是谁!"
end select
%>

执行结果与实例三(1)完全一样。

可见,select case结构简结易读得多,select case结构只在其开始处使用一个仅计算一次简单测试表达式,并将表达式的结果与每个case的值比较,如果匹配,则执行相关联的语句块。select case结构格式如下:

select case <变量>

case <值1>

ASP程序语句1

case<值2>

ASP程序语句2

....

case else

ASP程序语句n

end select

当然也可以用select case语句来按制HTML代码的输出(隐藏和显示)

<% select case request.form("bb")%>
<% case "1"%>
你好!你是普通网友!
<% case "2"%>
你好!你是高级站友!
<%case "3"%>
你好!你是管理员!
<%case else%>
很抱歉!我不知道你是谁!
<%end select%>

实例四、结合DW MX服务器行为在服务器端检验表单的合法性

虽然大家可以使用DW MX的“行为”的检查表单生成JS代码来检查用户提交的表单数据是否合法,但这是在客户端执行的,我们的用户千奇百样,如果使用较低版本的浏览器可能会使客户端检验失败,把不合法的信息插入到数据库中。这是不允许的。下面我们利用上面学习的request对象和判断语句添加到DW MX“服务器行为”代码中,实现服务器端检验表单,以杜绝不合法的表单信息。

新建一个ASP页,用ACCESS创建一个数据表,设计两个字段:“uers”、“pws”,设这两个字段为必填字段。用“自定字符串”连接数据库。在页面中插入表单、三个文本域、一个按扭,表单方法为:“POST”,按扭类型为“提交表单”,三个文本域名称对应如下:

用 户 名:uers

密    码:pws

重复密码:pws2

现在,要求这三项为必填项,并且“密码”必须等于“重复密码”,否则告诉操作者,输入有误,请返回!。操作步骤以下:

实例三(3)

1、插入“插入记录”服务器行为,按“F12”键预览页面,能正常插入记录。

2、找到以下几句代码:

<%
*** Insert Record: set variables

If (CStr(Request("MM_insert")) = "form1") Then

MM_editConnection = MM_new_STRING
MM_editTable = "use"
MM_editRedirectUrl = ""
MM_fieldsStr = "uers|value|pws|value"
MM_columnsStr = "Cuse|,none,|pws|,none,"

create the MM_fields and MM_columns arrays
MM_fields = Split(MM_fieldsStr, "|")
MM_columns = Split(MM_columnsStr, "|")

..........

插入记录代码....

%>

在上面这句“If (CStr(Request("MM_insert")) = "form1") Then”下面输入以下代码:

if request.Form("uers")="" then
response.write"对不起!请输入用户名!请<a href=untitled-5.asp>返回!</a>"
response.end
elseif request.form("pws")="" then
response.write"对不起!请输入密码!请<a href=untitled-5.asp>返回!</a>"
response.end
elseif request.form("pws2")="" then
response.write"对不起!请输入重复密码!请<a href=untitled-5.asp>返回!</a>"
response.end
elseif request.form("pws")<>request.form("pws2") then
response.write"对不起!两输入的密码不相符!请<a href=untitled-5.asp>返回!</a>"
response.end
end if

形如:

If (CStr(Request("MM_insert")) = "form1") Then

手写代码始
if request.Form("uers")="" then
response.write"对不起!请输入用户名!请<a href=untitled-5.asp>返回!</a>"
response.end
elseif request.form("pws")="" then
response.write"对不起!请输入密码!请<a href=untitled-5.asp>返回!</a>"
response.end
elseif request.form("pws2")="" then
response.write"对不起!请输入重复密码!请<a href=untitled-5.asp>返回!</a>"
response.end
elseif request.form("pws")<>request.form("pws2") then
response.write"对不起!两输入的密码不相符!请<a href=untitled-5.asp>返回!</a>"
response.end
end if手写代码结束
MM_editConnection = MM_new_STRING
MM_editTable = "use"
MM_editRedirectUrl = ""
MM_fieldsStr = "uers|value|pws|value"
MM_columnsStr = "Cuse|,none,|pws|,none,"

本例中,除了request对象外,我们用到了response对象的write方法输出提示信息,和end方法来结束脚本执行,阻止response.end以后的代码继续执行,这样就轮不到数据插入那一段代码了。

好了,关于判断语句的介绍就到这儿了,你可要掌握这点内容,在设计论坛时,它大有用处。

--------------------------------------------------------------------------------------------

二、response对象——向客户端输出数据

前面介绍的例子有用到了Response对象的write方法向客户端输出数据和和end方法结束脚本执行。本节将详细介绍它。

response对象与request对象工作原理相反,response对象是把由request对象从客户端接收过来的数据进行加工处理后,再把“加工“好的“成品”输出给客户端浏览器。

response对象语法格式:

response[(集合)|属性|方法]

先试试response对象的神奇魅力。

1、response.write方法的使用——向直接客户端浏览器输出数据

实例一、使用response对象向客户端输出数据信息

新建ASP页,在<body></body>标签内输入以下语句:

<%response.write("欢迎学习response对象实例!") %>

完整代码:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>
<%response.write("欢迎学习response对象实例!") %>
</body>
</html>

按“F12”键试试,是不是把文字显示出来?

response.writ方法还可以输出字串的结果或函数,如果是变量的话,就要先定义和赋值。response.write可输出HTML标准格式代码。

实例二、使用response.write输出当前系统时间及HTML超链接

在新建文件的<body>和</body>标签间输入下面代码:

<p>
<%response.write (now()) %>
</p>
<p>
<% response.write("<a href=index.asp>打开主页</a>")%>

这里的<a href=index.asp>打开主页</a>是标准的HTML格式,不过index.asp用的是单引号,以避免与ASP脚本冲突混淆。

按“F12”试试效果。

注:常用的时间函数:

now()                    获取当前系统日期和时间,ASP输出可以这样写:<%=now()%>

Year(now())         获取年份, ASP输出:<%=Year(now())%>

Month(now())       获取当前月份,ASP输出:<%=Month(now())%>

day(now())           获取当天数,ASP输出:<%=day(now())%>

Minute(now())      获取分钟数,ASP输出:<%=Minute(now())%>

Second(now())     获取秒钟数,ASP输出:<%=Second(now())%>

date()                   获取当前系统日期,格式为:2004-2-28

time()                  获取当前系统时间,格式为:22:24:59

用response.write方法输出字符串信息时,“()”集合内必须在英文方式下的一对“""”双引号。如果是函数和数字类数据就不用了,如:

文本字符串输出:<% response.write ("输出文本信息")%>  

函数输出:<% response.write (now())%>  

数字输出:<% response.write (1142568147)%>

还可用“&”来正确区分数字或函数和文本混合输出:

<% yy="这里输出变量的值了"赋值给变量“yy”,如果是文本加“""”
response.write ( now()&"&nbsp;&nbsp;这儿输出文本"&"&nbsp;&nbsp;"&yy ) %>

2、response.redirect方法——链接到新网址

如果希望用户能在浏览器链接到另外一个网址的话,response.redirect方法可实现此功能。也许有些朋友会想到用js代码也能实现这个功能呀!不过,我们是在服务器端执行的,不受客户端浏览器版本影响。

实例三、“友情链接”的页面

新建一个ASP页,插入表单、列表/菜单、按扭,表单方法为“GET”,“列表/菜单”名称为“url”,“目标”为“_blank”,动作选择它自己。如下图:

列表/菜单的值和标签如下:


在<html>标签上方输入以下代码:

<% select case request.QueryString("url")
case "1"
response.Redirect("http://www.163.com")
case "2"
response.Redirect("http://www.sina.com")
case "3"
response.Redirect("http://www.sohu.com")
case "4"
response.Redirect("http://www.6to23.com")
end select
%>

完整的代码以下:

按“F12”键,选择你想去的网站吧!

3、使response.write方法实现循环输出

这里要涉及到一个VBScript脚本语言,很简单的,却很有用,以后我们要做记录集分页的时候,要用到它。

for...next循环语句结构:

for 变量=起始值 to 终值 step 步长值

循环体

next

下面做一个小例子:

实例五、循环输出字符数

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<% for y=1 to 50%>
<%response.Write("字") %>
<%next%>
</body>
</html>

按“F12”键预览,执行结果如下:

可见,它把一个字重复50次后输出,如果没有设置步长值,将按默认值(为1)处理。设置步长值:

执行结果如下:

可见,输出是以“2”为步进的。

还可以改:

<%response.Write("字") %>

为:

<%response.write(y)%>&nbsp;

看看执行结果以下:

它把从“1”开始循环以1为步进值输出直至“50”终始。

我们就只先学这个循环语句。还有其它的do...loop、do while...loop、do until...loop、while...wend循环结构这里就不讲了,也许我们暂时会用不到手工接触这些东西。

4、response对象属性

response对象有下属性:

  • buffer 服务器缓冲。
  • charset 将字符集合名称附加到response对象中的content-type标题的后面。
  • contenttype  指定服务器响应的HTTP内容类型。
  • expires          指定在浏览器上缓冲存储页面过期时间。
  • expiresabsolute  指定在浏览器上缓冲存储页面的确切到期时间。

response对象方法:

  • write 向客户端直接输出信息。
  • redirect  转向地址。
  • end        停止程序执行。
  • flush   用于立即发送服务器缓冲区中的输出,必须设置response.buffer=true,否则报错。
  • clear清除服务器缓冲区中的所有HTML输出。

response集合:

  • cookies  用于设置cookie的值。

response.cookies集合语法格式:

response.cookies(变量名称)[(key)|属性]=等于写入的信息

“变量名称”则是指定cookies的名称,以便页面可以读取不同的cookies里的数据。

 

“session”对象在DW MX的帮助文档中称为“阶段变量”,当我们在页面插入“登陆用户”和“限制对页的访问”服务器行为后,它就是利用session对象来识别用户是否登陆。当创建该会话后,服务器对该页面进行跟踪,并分配内存存储session会话信息。session会话信息只有创建它的用户才能看到。

实例一、使用request.form方法将信息存储在session会话中

新建ASP页,在<HTML>标签上方输入这句代码:

<%session("MM")=request.Form("y")%>

在<body>和</body>间输入以下代码:

<form action="Untitled-6.asp" method="post" name="form1">
<select name="y" id="y">
<option value="网易">网易</option>
<option value="新浪">新浪</option>
<option value="搜狐">搜狐</option>
<option value="中国学生网">中国学生网</option>
</select>
<input type="submit" name="Submit" value="提交">
</form>

<p><%= Session("MM") %></p>

其中,<%= Session("MM") %>为读取session变量的值显示在页面上。

按“F12”键预览执行结果。

如果用request.QueryString方法数数据存储于session对象中的话,将<%session("MM")=request.Form("y")%>

改为:

<%session("MM")=request.QueryString("y")%>

即可。

1、session.adandon方法

session对象只有一个方法,即abandon方法,它的作用是删除所有存储在session对象的数据,并释访这些资源。如果未明确地调用adandon方法,当会话超时(IIS服务器默认超时时间为900秒,这由空间服务器商决定),服务器将删除这些会话,以释放资源。

语法以下:

<%session.adandon%>

DW MX的“注销用户”代码剖析

<%
*** Logout the current user.
MM_logoutRedirectPage = "index.asp"
Session.Contents.Remove("MM_Username")
Session.Contents.Remove("MM_UserAuthorization")
If (MM_logoutRedirectPage <> "") Then Response.Redirect(MM_logoutRedirectPage)
%>

这段代码中就使用到的是Session.Contents.Remove属性来指定要删除的某个session变量,如果不指定“Contents.Remove”而使用“adandon”的话,它会把该页面创建的所有会话删除,但有时我们只需要删除其中一个或几个会话,而保留其它的会话状态。

删除多个会话:

Session.Contents.Remove("MM_Username")
Session.Contents.Remove("MM_UserAuthorization")
...

下面是DW MX的“限制对页的访问”服务器行为生成的代码:

<%
*** Restrict Access To Page: Grant or deny access to this page
MM_authorizedUsers=""
MM_authFailedURL="yesno.asp"
MM_grantAccess=false
If Session("MM_Username") <> "" Then
If (true Or CStr(Session("MM_UserAuthorization"))="") Or _
(InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then
MM_grantAccess = true
End If
End If
If Not MM_grantAccess Then
MM_qsChar = "?"
If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&"
MM_referrer = Request.ServerVariables("URL")
if (Len(Request.QueryString()) > 0) Then MM_referrer = MM_referrer & "?" & Request.QueryString()
MM_authFailedURL = MM_authFailedURL & MM_qsChar & "accessdenied=" & Server.URLEncode(MM_referrer)
Response.Redirect(MM_authFailedURL)
End If
%>

其中这句“If Session("MM_Username") <> "" Then”就是用来判断“MM_Username”会话变量是否有值,否则由“Response.Redirect(MM_authFailedURL)”转向出错页。

其实我们可以写个更简单的:

<% if session("MM_Uesrname")="" then
response.Redirect("出错页.asp")
response.end
end if
%>

该段代码判断“MM_Uesrname”session变量是否为空,是的话,用response.Redirect("出错页.asp")方法将用户带到“出错页.asp”,并用response.end方法来停上所有脚本处理,所以这段代码最好放在页面头部。

也可以把

response.Redirect("index.asp")

改为:

response.write("对不起!请登陆!")

这样直接在同一个页面完成错误提示,不用那么的页转来转去,以便于站点文件管理。

好了,如果能熟练地使用以上三个ASP内建的基本对象,就可以对DW MX的服务器行为进行修改,达到我们的目的。还有其它的一些对象这里就不讲了,因为DW MX的服务器行为能为我们生成这些代码,不必你从头到尾把ASP学个底朝天一样可以编出不一般的程序来。

有疑问请发布到李飞老师的教程论坛专区


验证码: 匿名
 信息检索
COPYRIGHT 2005-2006 BY EGZ'DESIGN ALL RIGHTS 程序支持 | 联系我们 | 信息反馈 | 在线留言 |


爱国设计
版权所有 陕ICP备05002767号 联系QQ

本站采用符合W3C标准的XHTML1.1代码格式编写  本站使用符合W3C标准的CSS+DIV格式布局排版    服务器端脚本采用PHP4编写  本站后台数据库采用MySQL