Board logo

标题: [ASP] ASP编程中20个非常有用的例子 [打印本页]

作者: wangjunping    时间: 2006-11-21 12:16     标题: ASP编程中20个非常有用的例子

1.如何用asp判断你的网站的虚拟物理路径

  答:使用mappath方法

  
< p align="center" >< font size="4" face="arial" >< b >
the physical path to this virtual website is:
< /b >< /font >
< font color="#ff0000" size="6" face="arial" >
< %= server.mappath("\\")% >
< /font >< /p >

  2.我如何知道使用者所用的浏览器?

  答:使用the request object方法

  
strbrowser=request.servervariables("http_user_agent")
if instr(strbrowser,"msie") < > 0 then
  response.redirect("formsieonly.htm")
else
  response.redirect("forall.htm")
end if

  3.如何计算每天的平均反复访问人数

  答:解决方法

  
< % startdate=datediff("d",now,"01/01/1990")
if strdate< 0 then startdate=startdate*-1
avgvpd=int((usercnt)/startdate) % >

  显示结果

  
< % response.write(avgvpd) % >
that is it.this page have been viewed since november 10,1998

  4.如何显示随机图象

  
< % dim p,ppic,dpic
ppic=12
randomize
p=int((ppic*rnd)+1)
dpic="graphix/randompics/"&p&".gif"
% >
显示
< img src="< %=dpic% >" >

  5.如何回到先前的页面

  答:

  
< a href="< %=request.servervariables("http_referer")% >" >preivous page< /a > 或用图片如:< img src="arrowback.gif" alt="< %=request.servervariables("http_referer")% >" >

  6.如何确定对方的ip地址

  答:< %=request.servervariables("remote_addr)% >

  7.如何链结到一副图片上

  答:

  
< % @languages=vbscript % >
< % response.expires=0
strimagename="graphix/errors/erroriamge.gif"
response.redirect(strimagename)
% >

  8.强迫输入密码对话框

  答:把这句话放载页面的开头

  
< % response.status="401 not authorized"
  response.end
% >

  9.如何传递变量从一页到另一页

  答:用 hidden 类型来传递变量

  
< % form method="post" action="mynextpage.asp" >
< % for each item in request.form % >
< input namee="< %=item% >" type="hidden"
value="< %=server.htmlencode(request.form(item)) % >" >
< % next % >
< /form >

  10.为何我在 asp 程序内使用 msgbox,程序出错说没有权限

  答:由于 asp 是服务器运行的,如果可以在服务器显示一个对话框,那么你只好等有人按了确定之后,你的程序才能继续执行,而一般服务器不会有人守着,所以微软不得不禁止这个函数,并胡乱告诉你 ( 呵呵) 没有权限。但是asp和客户端脚本结合倒可以显示一个对话框,as follows:

  
< % yourvar="测试对话框"% >
< % script language='javascript' >
alert("< %=yourvar% >")
< /script >

  11.有没有办法保护自己的源代码,不给人看到

  答:可以去下载一个微软的windows script encoder,它可以对asp的脚本和客户端javascript/vbscript脚本进行加密。。。不过客户端加密后,只有ie5才能执行,服务器端脚本加密后,只有服务器上安装有script engine 5(装一个ie5就有了)才能执行。

  12.怎样才能将 query string 从一个 asp 文件传送到另一个?

  答:前者文件加入下句: response.redirect("second.asp?" & request.servervariables("query_string"))

  13.global.asa文件总是不起作用?

  答:只有web目录设置为web application, global.asa才有效,并且一个web application的根目录下 global.asa才有效。iis4可以使用internet service manager设置application setting 怎样才能使得htm文件如同asp文件一样可以执行脚本代码?

  14.怎样才能使得htm文件如同asp文件一样可以执行脚本代码?

  答:internet sevices manager - > 选择default web site - >右鼠键- >菜单属性-〉主目录- > 应用程序设置(application setting)- > 点击按钮 "配置"- > app mapping - >点击按钮"add" - > executable browse选择 \\winnt\\system32\\inetsrv\\asp.dll extension 输入 htm method exclusions 输入put.delete 全部确定即可。但是值得注意的是这样对htm也要由asp.dll处理,效率将降低。

  15.如何注册组件

  答:有两种方法。

  第一种方法:手工注册 dll 这种方法从iis 3.0一直使用到iis 4.0和其它的web server。它需要你在命令行方式下来执行,进入到包含有dll的目录,并输入:regsvr32 component_name.dll 例如 c:\\temp\\regsvr32 aspemail.dll 它会把dll的特定信息注册入服务器中的注册表中。然后这个组件就可以在服务器上使用了,但是这个方法有一个缺陷。当使用这种方法注册完毕组件后,该组件必须要相应的设置nt的匿名帐号有权限执行这个dll。特别是一些组件需要读取注册表,所以,这个注册组件的方法仅仅是使用在服务器上没有mts的情况下,要取消注册这个dll,使用:regsvr32 /u aspobject.dll example c:\\temp\\regsvr32 /u aneiodbc.dll

  第二种方法:使用mts(microsoft transaction server) mts是iis 4新增特色,但是它提供了巨大的改进。mts允许你指定只有有特权的用户才能够访问组件,大大提高了网站服务器上的安全性设置。在mts上注册组件的步骤如下:

  1) 打开iis管理控制台。

  2) 展开transaction server,右键单击"pkgs installed"然后选择"new package"。

  3) 单击"create an empty package"。

  4) 给该包命名。

  5) 指定administrator帐号或则使用"interactive"(如果服务器经常是使用administrator 登陆的话)。

  6) 现在使用右键单击你刚建立的那个包下面展开后的"components"。选择 "new then component"。

  7) 选择 "install new component" 。

  8) 找到你的.dll文件然后选择next到完成。

  要删除这个对象,只要选择它的图标,然后选择delete。

  附注:特别要注意第二种方法,它是用来调试自己编写组件的最好方法,而不必每次都需要重新启动机器了。

  16. asp与access数据库连接:

  
<%@ language=vbscript%>
<%
dim conn,mdbfile
mdbfile=server.mappath("数据库名称.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile
%>

  17. asp与sql数据库连接:

  
<%@ language=vbscript%>
<%
dim conn
set conn=server.createobject("adodb.connection")
con.open "provider=sqloledb;data source=sql服务器名称或ip地址;uid=sa;pwd=数据库密码;database=数据库名称
%>

  建立记录集对象:

  
set rs=server.createobject("adodb.recordset")
rs.open sql语句,conn,3,2

  18. sql常用命令使用方法:

  (1) 数据记录筛选:

  
sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"
sql="select * from 数据表 where 字段名 between 值1 and 值2"

  (2) 更新数据记录:

  
sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

  (3) 删除数据记录:

  
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)

  (4) 添加数据记录:

  
作者: wangjunping    时间: 2006-11-21 12:18

rs.delete 删除当前记录,但记录指针不会向下移动

  rs.addnew 添加记录到数据表末端

  rs.update 更新数据表记录

  20 recordset对象方法

  open方法

  recordset.open source,activeconnection,cursortype,locktype,options

  source

  recordset对象可以通过source属性来连接command对象。source参数可以是一个command对象名称、一段sql命令、一个指定的数据表名称或是一个stored procedure。假如省略这个参数,系统则采用recordset对象的source属性。

  activeconnection

  recordset对象可以通过activeconnection属性来连接connection对象。这里的activeconnection可以是一个connection对象或是一串包含数据库连接信息(connectionstring)的字符串参数。

  cursortype

  recordset对象open方法的cursortype参数表示将以什么样的游标类型启动数据,包括adopenforwardonly、adopenkeyset、adopendynamic及adopenstatic,分述如下:
作者: wangjunping    时间: 2006-11-21 12:20

asp是active server page的缩写,意为“活动服务器网页”。asp是微软公司开发的代替cgi脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。asp的网页文件的格式是.asp,现在常用于各种动态网站中。 asp是一种服务器端脚本编写环境,可以用来创建和运行动态网页或web应用程序。这套教程,能有效的帮助你从不懂asp到懂asp,从不会写asp程序到会写asp程序。祝你好运!

  1、内容提要:

  这是本套课程的第六十一讲,get介绍;post方式,后面会讲。

  2、在线学习:

  第一讲;(要想获得好的学习效果,请选择下载到本地。)

  3、下载学习:建议下载到本地观看;

  第一讲;(右键--选择工具下载即可。不能直接使用右键,另存为方式下载)

  flash播放器:flash player v9.0 简体中文版,使用播放器,效果更佳。

  查看全套"asp视频教程">>>>>
作者: wangjunping    时间: 2006-11-21 12:35

第一步:下载语音聊天室服务器端程序,我们要用的是bchat工作室的bchat server。

  1.进入http://bchat.yinsha.com/页面;

  2.页面右侧的“火热头条”中有“bchat推出10用户免费下载版”字样,我们需要的就是它;

  3.点击“bchat推出10用户免费下载版”的链接后,就到了免费版本下载页面;

  4.在下载页面中下载“windows版本”(其他版本我没用过,我就会使用windows版本);

  5.下载后的文件是bchat.zip,把他解压缩到一个目录中(为了以后你在网站的asp程序使用它,这个目录应当是你网站的某个目录,比如c:\inetpub\wwwroot\);

  6.按上面操作以后,bchat server就被安装到了c:\inetpub\wwwroot\bchat\目录下;

  7.进入c:\inetpub\wwwroot\bchat\目录,可以看到目录下有7个文件以及3个子目录;

  8.把gb子目录下的文件全部拷贝到当前目录(当前目录也就是c:\inetpub\wwwroot\bchat\目录),这样就安装好了具有简体中文界面的语音聊天室。(如果你想安装英文界面,那么拷贝english子目录下的文件到当前目录;如果你想安装繁体中文界面,那么拷贝big5子目录下的文件到当前目录。)

  第二步:建立一个数据库。(尽管不建立数据库也能使用语音聊天室,但是我们要的是功能强点的“asp”语音聊天室,因此要用数据库!)

  1.运行access建立一个空数据库,数据库名字取为bchat.mdb,数据库保存在c:\inetpub\wwwroot\bchat\目录下;

  2.选择“使用设计器创建表”;

  3.添加一个字段。字段名称bname,数据类型选择文本;

  4.再添加一个字段。字段名称bport,数据类型选择数字;

  5.关闭这个(设计器窗口)。点关闭后,提示你“是否保存更改”,选择“是y”,然后让你输入表名称,输入room,并确定。然后access会提示“尚未定义主键”,不用理他,选择“否n”。

  6.现在room表建立好了,但是里面还没有数据,我们手工给他加上几条数据。

  7.双击room表添加数据;bname那里输入“一号房间”(这个是房间名字,你可以随便写),bport那里输入5100(这个是bchat server运行的端口号,你也可以随便写。但是这个端口号不能是系统中已经使用的端口,如果你不熟悉端口,那这里先写上5100,5100一般是空闲的);

  8.再添加一条数据;bname填“二号房间”,bport填5200;
作者: wangjunping    时间: 2006-11-21 12:35

9.关闭access。

  第三步:写一个asp程序。(程序我都写好了,你把下面的代码拷贝一下就行了,然后把文件保存成index.asp,并保存到c:\inetpub\wwwroot\bchat\目录下。)

  以下内容为程序代码:

  
<%@language="vbscript" codepage="936"%>
<%option explicit%>
<%
'*************************************************************
'程序名称:asp语音聊天室
'程序实现:必须依赖bchat server,下载地址http://bchat.yinsha.com
'程序设计:madpolice
'完成时间:2003-2-23 17:36:00
'说  明:1.在本人的windows 2000 advanced server上测试通过,
'     不保证在其他环境中能正常运行。
'     2.本人不要求任何版权,但是请保留俺的名字,行不?
'**************************************************************
dim db,connstr,conn,rs,sql,serverip
db="bchat.mdb"
connstr="provider=microsoft.jet.oledb.4.0;data source="&server.mappath(db)
'如果你的服务器采用较老版本access驱动,请用下面连接方法
'connstr="driver={microsoft access driver (*.mdb)};dbq="&server.mappath(db)
set conn=server.createobject("adodb.connection")
conn.open connstr
set rs=server.createobject("adodb.recordset")
serverip=request.servervariables("local_addr")
sql="select * from room order by bport"
rs.open sql,conn,1,1
if rs.eof then
rs.close
set rs=nothing
conn.close
set conn=nothing
response.write "数据库中还没有记录呢!"
response.end
end if
if application("bchat_status")<>"running" then
call startbchat()
rs.movefirst
end if
%>
<html>
<head>
<title>语音聊天室</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<script language="javascript">
var wwwhost="<%=request.servervariables("server_name")%>";
function go(pport){
if(validname(document.form1.elements[0])){
document['form1'].action='http://'+wwwhost+':'+pport+'/';
launchchat();
document['form1'].method='post';
document.form1.submit();
}
}
function validname(str1)
{
var s,i,j;
if (str1.value.length <1) {
alert("请输入您的大名,名字不能为空!");
str1.focus();
return false;
}
return true;
}
var focusok=false;
if (navigator.appname == "netscape") {
focusok=true;
}
vers = navigator.appversion;
if (navigator.appname == "microsoft internet explorer") {
pos = vers.lastindexof('.');
vers = vers.substring(pos-1,vers.length);
}
proper_version = parsefloat(vers);
if(proper_version>=5){
focusok=true;
}
function launchchat() {
var chat = window.open("","chat",
  "top=0,left=0,toolbar=no,location=no,directories=no,status=no,
   menubar=no,scrollbars=yes,resizable=yes,width=790,height=530");
if(focusok){
chat.focus();
}
return true;
}
</script>
</head>
<body>
<form action=/ method=post name=form1 target="chat" align="center">
<p align=center>请先输大名:<input type="text" name="user" size="10" maxlength="15" ></p>
<center><div align=center>
<table border=1 width="60%">
<%do while not rs.eof%>
<tr height=20>
<td width="70%">
<li><%=rs("bname")%></td>
<td width="30%" align="center">
<input name="r" onclick="go('<%=rs("bport")%>')" type="button" value="进入">
</td></tr>
<%
rs.movenext
loop
rs.close
set rs=nothing
%>
<input type="hidden" name="pass" value="bchat">
</td></tr>
</table></div></center></form>
</body>
</html>
<%
conn.close
set conn = nothing
sub startbchat()
dim f1,f2,wsh,currentpath,sourcefile,targetfile,tempstring,tempcommand
currentpath=server.mappath(".")
sourcefile=currentpath&"\2000.ini"
do while not rs.eof
targetfile=currentpath&"\"&rs("bport")&".ini"
set f1=server.createobject("adodb.stream")
f1.type=2
f1.mode=3
f1.charset="gb2312"
f1.open
f1.loadfromfile sourcefile
tempstring=f1.readtext
f1.close
set f1=nothing
tempstring=replace(tempstring,"聊圆",rs("bname"))
tempstring=replace(tempstring,"d:\bchat",currentpath)
tempstring=replace(tempstring,"2000",rs("bport"))
tempstring=replace(tempstring,"0.0.0.0",serverip)
set f2=server.createobject("adodb.stream")
f2.type=2
f2.mode=3
f2.charset="gb2312"
f2.open
f2.writetext tempstring
f2.savetofile targetfile,2
f2.close
set f2=nothing
set f1=server.createobject("adodb.stream")
f1.type=2
f1.mode=3
f1.charset="gb2312"
f1.open
f1.loadfromfile currentpath&"\adminpass_2000.txt"
tempstring=f1.readtext
f1.close
set f1=nothing
set f2=server.createobject("adodb.stream")
f2.type=2
f2.mode=3
f2.charset="gb2312"
f2.open
f2.writetext tempstring
f2.savetofile currentpath&"\adminpass_"&rs("bport")&".txt",2
f2.close
set f2=nothing
tempcommand=currentpath&"\bchat.exe "&targetfile
set wsh=server.createobject("wscript.shell")
wsh.run tempcommand,0,false
set wsh=nothing
rs.movenext
loop
application("bchat_status")="running"
end sub
%>




欢迎光临 逐梦论坛 (http://temp2023.zhumeng.org/) Powered by Discuz! 7.2