论坛: 网站建设 标题: ASP源代码集(一) 复制本贴地址    
作者: Aoming [aoming]    版主   登录
以下都是从电脑报2003电脑应用精华本的光盘中copy上来的。
==============
ASP备份数据库
==============
文件1:BackupDB.asp

<%@ Language=VBScript %>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft FrontPage 4.0">
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!--



Sub btnbak_onclick
if frmbak.txtsvr.value="" then
window.alert(""Server Name" is empty!")
frmbak.txtsvr.focus
exit sub
end if
if frmbak.txtuid.value="" then
window.alert(""Administrators" is empty!")
frmbak.txtuid.focus
exit sub
end if
if frmbak.txtdb.value="" then
window.alert(""Database" is empty!")
frmbak.txtdb.focus
exit sub
end if
if frmbak.txtto.value="" then
window.alert(""Backup To" is empty!")
frmbak.txtto.focus
exit sub
end if
frmbak.submit
End Sub



-->
</SCRIPT>
<link rel="stylesheet" href="../../sheets/B2BStyle.css">
</HEAD>
<form action="backupdbsave.asp" method="post" id=frmbak name=frmbak>
<body class="bg_frame_up">
<p class=heading> Database --> Backup</p>
<P align=center>
<div align="center">
<center>
<table width="60%" cellpadding=1 cellspacing=1 border=0 align=center>
<tr>
<td class=TD_Mand_FN align="center" height="35" width="40%">Server Name:</td>
<td class=TD_Mand_F height="35" width="59%"> 
<INPUT id=txtsvr name=txtsvr size="20" style="font-family: Arial; font-size: 9pt"></td>
</tr>
<tr>
<td class=TD_Mand_FN align="center" height="35" width="40%">Administrators:</td>
<td class=TD_Mand_F height="35" width="59%"> 
<INPUT id=txtuid name=txtuid size="20" style="font-family: Arial; font-size: 9pt"></td>
</tr>
<tr>
<td class=TD_Mand_FN align="center" height="35" width="40%">Password:</td>
<td class=TD_Mand_F height="35" width="59%"> 
<INPUT id=txtpwd name=txtpwd type=password style="font-family: Arial; font-size: 9pt"></td>
</tr>
<tr>
<td class=TD_Mand_FN align="center" height="35" width="40%">Database:</td>
<td class=TD_Mand_F height="35" width="59%">
<p align="left">
<INPUT id=txtdb name=txtdb size="20" style="font-family: Arial; font-size: 9pt"></p>
</td>
</tr>



<td class=TD_Mand_FN align="center" height="35" width="40%">Backup To:<br>
<u>(Server Path)</u></td>
<td class=TD_Mand_F height="35" width="59%"> 
<input id=txtto name=txtto style="font-family: Arial; font-size: 9pt"></td>
</tr>
</table>
</center> </div>
<p align=center><input id=btnbak name=btnbak type=button value="Start Backup" style="font-family: Arial; font-size: 9pt"></p>
</body>
</form>
</HTML>




文件2:BackupDBSave.asp



<%@ Language=VBScript %>
<%
dim msvr,muid,mpwd,mdb,mto
msvr=Request.Form("txtsvr")
muid=Request.Form("txtuid")
mpwd=Request.Form("txtpwd")
mdb=Request.Form("txtdb")
mto=Request.Form("txtto")
if mpwd="" then mpwd=""""



on error resume next
set dmosvr=server.CreateObject("SQLDMO.SQLServer")
dmosvr.connect msvr,muid,mpwd



if err.number>0 then Response.Redirect("http:backuperr.asp?err="&err.number)



mdevname="Backup_"&muid&"_"&mdb
set dmodev=server.CreateObject("SQLDMO.BackupDevice")
dmodev.name=mdevname
dmodev.type=2
dmodev.PhysicalLocation=mto
dmosvr.BackupDevices.Add dmodev



if err.number>0 then Response.Redirect("http:backuperr.asp?err="&err.number)



set dmobak=server.CreateObject("SQLDMO.Backup")
dmobak.database=mdb
dmobak.devices=mdevname
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<body background="../../Images/dot.gif">



<p><strong>Backuping, wait please...</strong></p>
<%
dmobak.sqlbackup dmosvr
if err.number>0 then Response.Redirect("http:backuperr.asp?err="&err.number)



dmosvr.backupdevices(mdevname).remove
set dmobak=nothing
set dmodev=nothing
dmosvr.disconnect
set dmosvr=nothing
%>
<p><strong>Database "<%=mdb%>" backup successed!</strong></p>
</BODY>
</HTML>




文件3:BackupErr.asp



<%@ Language=VBScript %>
<%
dim errno,errstr
errno=Request.QueryString("err")
errstr=""
select case cstr(errno)
case "18456"
errstr="administrators or password error!"
case "20482"
errstr="server name error or server cannot connect!"
case "911"
errstr="database not found!"
case "15026"
errstr="server path not found!"
case "3201"
errstr="server path not found!"
case "3254"
errstr="restore from file lawlessness!"
case else
errstr="unknown error! retry later please!"
end select
%>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft FrontPage 4.0">
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!--



Sub btnret_onclick
history.back
End Sub



-->
</SCRIPT>
<title></title>
</HEAD>
<body class="bg_frame_up">
<p align=center><font color=#006666><%=errstr%></font></p>
<p align=center><input id=btnret name=btnret type=button value=Return style="font-family: Arial; font-size: 9pt"></p>
</BODY>
</HTML>


[此贴被 Aoming(aoming) 在 11月10日20时34分 编辑过]

地主 发表时间: 11/10 20:42

回复: Aoming [aoming]   版主   登录
=================
asp实现k线图(在线)
=================

MsChart是微软制作的功能强大的图表工具,用它可以很方便的建立各种图表。制作各种3维2维的直方图,折线图。结合前一段时间我对Mschart组件的认识,谈谈Mschart组件的使用方法。
1、 Chart Activex控件:
In the HTML page, insert an <OBJECT> tag for the License Manager object before any other <OBJECT> tags. The License Manager is an ActiveX control that is installed with Internet Explorer. 
NOTE: This CLASSID, "5220cb21-c88d-11cf-b347-00aa00a28331", is for the License Manager and not for your ActiveX controls. You must use the same CLASSID every time you refer to the LPK file. In addition, you should keep the Name property of the <PARAM> tag as "LPKPath", and set the Value property for the <PARAM> tag of the License Manager object to the LPK file name and path. This path may be a relative path but must not refer to a UNC share or a URL on another domain. 
Because you can only have one LPK file for each HTML page, make sure that you include all of the licensed ActiveX Controls for the page when you generate your LPK file. For example:
<object CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331"
id="Microsoft_Licensed_Class_Manager_1_0">
<param NAME="LPKPath" VALUE="mschart.lpk">
</object>
Insert the <OBJECT> tag for your licensed control afterward. For example, an HTML page that displays the Microsoft Masked Edit control looks like this.
Here I downloaded the file mschart.cab from Microsoft''s website. It has been digitally signed.
<OBJECT classid="clsid:3A2B370C-BA0A-11D1-B137-0000F8753F5D" 
id=mschart1 style="HEIGHT: 326px; WIDTH: 651px" CODEBASE="mschart.cab"></OBJECT>
You can look this acticle if you need help.  http://support.microsoft.com/support/kb/articles/Q159/9/23.ASP
2、 Mschart组件的一些常用属性介绍
a、charttype:图形的类型
charttype=0>三维直方图
charttype=1>二维直方图
charttype=2>三维折线图
charttype=3>二维折线图
charttype=4>三维面积图
charttype=5>二维面积图
charttype=14>饼图
b、showlegend:是否显示解说
c、titletext:标题
d、Columncount: The number of data columns
e、Rowcount:The number of data rows
f、Footnotetext:The footnote text.
g、Plot: Returns a reference to a Plot object that describes the area upon which a chart is displayed.
h、row: A row number in the current column. Rows are numbered from top to bottom beginning with 1. column: The current data column.
i、Rowlabel: The text for a row label. The label you specify sets the label for the data points identified by the Row property. This label appears along the category axis for most chart types and is used as the label for each individual pie in a pie chart. Label text may not be displayed if it is too long to fit on a chart.columnlabel: . Label text associated with a column in the data grid.
j、Data: The data point value. If the current data point already contains a value, it is replaced by the new value. The chart is redrawn to reflect the new value for the current data point.
k、ChartData: A two-dimensional array that holds the data used to draw the chart. If the first series of a multi-dimensional array contains strings, those strings will become the labels of the chart.ChartData is the default property for the MSChart control.
It is so many properities about Mschart Activex.I only introduce so much.Now,I will provide your two example to you!I wish it can help you understand it.
Example 1:It come from:  http://www.4guysfromrolla.com/webtech/MSChartExample.shtm
<object CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331"
id="Microsoft_Licensed_Class_Manager_1_0">
<param NAME="LPKPath" VALUE="mschart.lpk">
</object>
<OBJECT classid="clsid:3A2B370C-BA0A-11D1-B137-0000F8753F5D" 
id=mschart1 style="HEIGHT: 326px; WIDTH: 651px" CODEBASE="mschart.cab"></OBJECT> 
<script LANGUAGE="Vbscript">
MSChart1.ChartType =1
MSChart1.Plot.SeriesCollection(1).Pen.VtColor.Set 0,0,0
MSChart1.Plot.SeriesCollection(1).Pen.Width = 50
For i = 1 To MSChart1.Plot.Axis(1).Labels.Count
MSChart1.Plot.Axis(1).Labels(i).Format = "$0,###"
MSChart1.Plot.Axis(1).Labels(i).VtFont.Name = "Tahoma"
MSChart1.Plot.Axis(1).Labels(i).VtFont.Size = 10
Next
MSChart1.RowCount = 5
MSChart1.ColumnCount =2
MSChart1.ShowLegend = True
for y = 1 to 2
for x = 1 to 5 
MSChart1.Row = x
MsChart1.Column= y
MSChart1.RowLabel = "Row " & x
call MSChart1.DataGrid.SetData(x, 1, x*5,nullFlag)
call MSChart1.DataGrid.SetData(x, 2, x*10,nullFlag)
next
Mschart1.ColumnLable=y
next 
</script>
Example 2:We almost can see it everywhere.
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
<!--
function window_onload() 
{
t=0;
mschart1.TitleText = "标题";
mschart1.ShowLegend =true;
mschart1.ColumnCount =2;
mschart1.RowCount =3;
for (i=0;i<3;i++)
{for (j=0;j<2;j++)
{ mschart1.Row=i+1;
mschart1.Column=j+1;
if (2>1)
mschart1.ColumnLabel =document.form1.cname(j).value;
else
mschart1.ColumnLabel =document.form1.cname.value;
if ((document.form1.rcount.value*document.form1.ccount.value)>1)
mschart1.Data=document.form1.rc_data(t).value;
else
mschart1.Data=document.form1.rc_data.value;
t++;
}
if (document.form1.rcount.value>1)
mschart1.RowLabel =document.form1.rname(i).value ;
else
mschart1.RowLabel =document.form1.rname.value;
}
}
function select1_onchange() {
mschart1.chartType =select1.value
mschart1.Plot
}
//-->
</SCRIPT>
<TITLE>数据显示图</TITLE>
</HEAD>
<BODY LANGUAGE=javascript onload="return window_onload()">
<object CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331"
id="Microsoft_Licensed_Class_Manager_1_0">
<param NAME="LPKPath" VALUE="mschart.lpk">
</object>
<OBJECT classid="clsid:3A2B370C-BA0A-11D1-B137-0000F8753F5D" 
id=mschart1 style="HEIGHT: 326px; WIDTH: 651px" CODEBASE="mschart.cab"></OBJECT> 
<BR>
显示方式
<SELECT id=select1 name=select1 LANGUAGE=javascript onchange="return select1_onchange()">
<OPTION value=1>二维直方图</OPTION>
<OPTION value=0>三维直方图</OPTION>
<OPTION value=3>二维折线图</OPTION>
<OPTION value=2>三维折线图</OPTION>
<OPTION value=5>二维面积图</OPTION>
<OPTION value=4>三维面积图</OPTION>
<OPTION value=14>饼图</OPTION></SELECT>
<!
chtitle 标题
rcount 列数
ccount 行数
rc_type 排列方式(1 以行方式,2以列方式)
rc_data 数据
rname 列名数组
cname 行名数组>
<form name=form1 id=form1>
<input type="hidden" name=rname id=rname value=1993>
<input type="hidden" name=rname id=rname value=1996>
<input type="hidden" name=rname id=rname value=1999>
<input type="hidden" name=cname id=cname value=身高>
<input type="hidden" name=cname id=cname value=体重>
<input type="hidden" name=rcount id=rcount value=3>
<input type="hidden" name=chtitle id=chtitle value=CoolFatMan的成长里程>
<input type="hidden" name=ccount id=ccount value=2>
<input type="hidden" name=rc_data id=rc_data value=179>
<input type="hidden" name=rc_data id=rc_data value=160>
<input type="hidden" name=rc_data id=rc_data value=180>
<input type="hidden" name=rc_data id=rc_data value=170>
<input type="hidden" name=rc_data id=rc_data value=182>
<input type="hidden" name=rc_data id=rc_data value=182>
</form></BODY></HTML> 


B1层 发表时间: 11/10 20:44

回复: Aoming [aoming]   版主   登录
=======================
ASP限制只能中文输入的方法
=======================

实现函数: 
function isCharsInBag (s, bag) 

var i,c; 
for (i = 0; i < s.length; i++) 

 
c = s.charAt(i);//字符串s中的字符 
if (bag.indexOf(c) > -1) 
return c; 

return \"\"; 

检查函数: 
function ischinese(s) 

var errorChar; 
var badChar = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789><,[]{}?/+=|\\\\\''\\\":;~!#$%()`\"; 
errorChar = isCharsInBag( s, badChar) 
if (errorChar != \"\" ) 

report=report+\"请重新输入中文\\n\"; 
return false; 


return true; 
}


B2层 发表时间: 11/10 20:45

回复: Aoming [aoming]   版主   登录
===============================
asp中关于帖子分页显示的基本方法
===============================


    我们建立这样一个简单的BBS应用程序,它的数据库中分别有以下五个字段:“ID”,每个帖子的自动编号;“subject”,每个帖子的主题;“name”,加帖用户的姓名;“email”,用户的电子邮件地址;“postdate”,加帖的时间。数据库的DSN为“bbs”。我们将显示帖子分页的所有步骤放在一个名为“ShowList()”的过程中,方便调用。程序如下: 

’----BBS显示帖子分页---- 
< Sub ShowList() > 

PgSz=20 ’设定开关,指定每一页所显示的帖子数目,默认为20帖一页 
Set Conn = Server.CreateObject("ADODB.Connection") 
Set RS = Server.CreateObject("ADODB.RecordSet") 
sql = "SELECT * FROM message order by ID DESC" 
’查询所有帖子,并按帖子的ID倒序排列 
Conn.Open "bbs" 
RS.open sql,Conn,1,1 
If RS.RecordCount=0 then 
response.write "< P>< center>对不起,数据库中没有相关信息!< /center>< /P>" 
else 
RS.PageSize = Cint(PgSz) ’设定PageSize属性的值 
Total=INT(RS.recordcount / PgSz * -1)*-1 ’计算可显示页面的总数 
PageNo=Request("pageno") 
if PageNo="" Then 
PageNo = 1 
else 
PageNo=PageNo+1 
PageNo=PageNo-1 
end if 
ScrollAction = Request("ScrollAction") 
if ScrollAction = " 上一页 " Then 
PageNo=PageNo-1 
end if 
if ScrollAction = " 下一页 " Then 
PageNo=PageNo+1 
end if 
if PageNo < 1 Then 
PageNo = 1 
end if 
n=1 
RS.AbsolutePage = PageNo 
Response.Write "< CENTER>" 
position=RS.PageSize*PageNo 
pagebegin=position-RS.PageSize+1 
if position < RS.RecordCount then 
pagend=position 
else 
pagend= RS.RecordCount 
end if 
Response.Write "< P>< font color=’Navy’>< B>数 据 库 查 询 结 果:< /B>" 
Response.Write "(共有"&RS.RecordCount &"条符合条件的信息,显示"&pagebegin&"-"&pagend&")< font>< /p>" 
Response.Write "< TABLE WIDTH=600 BORDER=1 CELLPADDING=4 CELLSPACING=0 BGCOLOR=#FFFFFF>" 
Response.Write "< TR BGCOLOR=#5FB5E2 >< FONT SIZE=2 >< TD >< B >主 题< /B >< /TD >< TD >< B >用 户< /B >< /TD >< TD >< B >Email< /B >< /TD >< TD >< B >发 布 日 期< /B >< /TD >< /FONT >< TR BGCOLOR=#FFFFFF >" 
Do while not (RS is nothing) 
RowCount = RS.PageSize 
Do While Not RS.EOF and rowcount > 0 
If n=1 then 
Response.Write "< TR BGCOLOR=#FFFFFF>" 
ELSE 
Response.Write "< TR BGCOLOR=#EEEEEE>" 
End If 
n=1-n > 
< TD>< span style="font-size:9pt">< A href=’view.asp?key=< =RS("ID")>’>< =RS("subject")>< A>< /span>< /td> 
< TD>< span style="font-size:9pt">< =RS("name")>< /A>< /span>< /td> 
< TD>< span style="font-size:9pt">< a href="mailto:< =RS("email")>">< =RS("email")>< /a>< /span> < /TD> 
< TD>< span style="font-size:9pt">< =RS("postdate")>< /span> < /td> 
< /TR> 

RowCount = RowCount - 1 
RS.MoveNext 
Loop 
set RS = RS.NextRecordSet 
Loop 
Conn.Close 
set rs = nothing 
set Conn = nothing 

< /TABLE > 
< FORM METHOD=GET ACTION="list.asp" > 
< INPUT TYPE="HIDDEN" NAME="pageno" VALUE="< =PageNo >" > 

if PageNo > 1 Then 
response.write "< INPUT TYPE=SUBMIT NAME=’ScrollAction’ VALUE=’ 上一页 ’>" 
end if 
if RowCount = 0 and PageNo < >Total then 
response.write "< INPUT TYPE=SUBMIT NAME=’ScrollAction’ VALUE=’ 下一页 ’>" 
end if 
response.write "< /FORM>" 
End if 

< End Sub %>


B3层 发表时间: 11/10 20:47

回复: Aoming [aoming]   版主   登录
==============================
asp中页面限权访问的几种方法
==============================


    某一页面只让某些用户浏览 
  将这些客户的信息保存在数据库中,若能在数据库中检索到客户输入的姓名和密码就允许访问该页面。 
Protect.asp文件 ′需限权访问的页面 
<html〉〈head〉〈title〉赛迪主页〈/title〉〈/head〉〈body bgcolor="#00FFFF"〉 
′此处可输入该页面的其它内容 
〈form action="Protect.asp" method="post"〉 
请输入姓名: 
〈input type="text" name="text"〉 
请输入密码:〈input type="password" size="20" name="password"〉 
〈input type="submit" name="B1" value="查询"〉〈/p〉〈/form〉 
〈%set conn=server.createobject("adodb.connection") 
conn.open "asptest" 
′asptest是存放客户信息的表单permission所在的数据库的名字 
sql1="select �� from permission where xm=''"&&request.form("text") && "'' and mima=''"&&request.form("password")&&"''" 
set rs=conn.execute(sql1)%〉 
′如果数据库中存在客户输入的姓名和密码,就显示页面product.asp的超级链接 
〈% if not rs.eof then%〉〈a href="product.asp"〉本公司的产品〈/a〉 
〈%end if%〉〈/body〉〈/html〉 
    二、某些页面只让某些用户浏览 
  我们可以设计一登录页面register.asp,如果客户没有登录,在进入每个需限权访问的页面时强制客户先访问页面register.asp实现登录。成功登录之后自动返回到刚才要访问的页面。我们可用cookies和session两种方法来实现。 
    1.用cookies实现 

  如果客户已经登录过,就把登录的信息记录在客户端的cookies中,之后客户就可直接浏览其它限权访问的页面。 
register.asp 
〈% if request.form("b1")="提交" then 
set conn=server.createobject("adodb.connection") 
conn.open "asptest" 
sql1="select * from permission where xm=''"&&request.form("name") &&"'' and mima=''"&&request.form("password")&&"''" 
set rs=conn.execute(sql1) 
if not rs.eof then 
response.cookies("register")="true" 
rs.close 
conn.close 
end if 
′若数据库中存在该用户的信息,就记录该用户成功登录的标记到cookies中 
end if%〉 
〈html〉〈head〉〈/head〉 
〈body bgcolor="#c0c0c0" 〉 
〈p align="center"〉〈big〉〈big〉〈big〉亲爱的客户,请您登录!〈/big〉〈/big〉〈/big〉〈/p〉〈hr〉 
〈form action="register.asp" method="post" name="form1"〉 
〈div align="center"〉〈p〉姓名: 
〈input name="name" size="13"〉〈/p〉 
〈p〉密码:〈input name="password" 
size="13"type="password"〉〈/p〉〈/div〉 
〈div align="right"〉〈input type="submit" name="b1" value="提交" 〉 〈/div〉〈/form〉〈/body〉〈/html〉 
Protect.asp文件 ′需限权访问的页面 
〈%if request.cookies("register")〈〉"true" then 
response.redirect "register.asp" 
end if%〉 
′若客户未登录,则强制客户登录 
〈html〉〈head〉〈/head〉 
〈body bgcolor="#00FFFF"〉 
′此处是需保护的页面内容 
〈/body〉〈/html〉 
    2.用session实现 
  session是用户级的全局变量, 我们将客户成功登录的信息记录到session中后,用户就可直接浏览其它限权访问的页面了。 
global.asp 
〈script language=vbscript runat=server〉 
sub Session_onstart 
session("register")="false" 
′记录客户成功登录的信息 
session("lognumber")=0 
′记录客户尝试登录的次数,最多允许尝试三次 
session("prescript")="" 
′记录客户要访问的页面,以便登录后返回该页 
end sub 
〈/script〉 
register.asp 
〈% if request.form("b1")="提交" then 
set 
conn=server.createobject("adodb.connection") 
conn.open "asptest" 
sql1="select * from permission where xm=''"&&request.form("name") &&"'' and ima=''"&&request.form("password")&&"''" 
set rs=conn.execute(sql1) 
if not rs.eof then 
session("register")="true" 
′若数据库中存在该用户的信息,就记录该用户成功登录的标记到register变量中 
rs.close 
conn.close 
response.redirect session("prescript") 
′成功登录后自动返回刚才要访问的页面 
end if 
if session("lognumber")〈3 then 
session("lognumber")= 
session("lognumber")+1 
response.redirect "register.asp" 
else 
response.redirect "sorry.asp" 
end if 
′允许尝试登录三次,若均未成功,则禁止访问并同时显示页面sorry.asp 
end if%〉 
〈html〉〈head〉〈/head〉 
<body bgcolor="#c0c0c0" 〉 
〈p align="center"〉〈big〉〈big〉 
〈marquee align="middle" 
behavior="alternate" 〉欢迎您的光临,请您先登录!〈/marquee〉〈br〉 
〈%if session("lognumber")〉0 then%〉 
输入有误!请重新输入姓名和密码! 
〈% end if%〉 
</big〉〈/big〉〈/p〉〈hr〉 
〈form action="register.asp" method="post" name="form1"〉 
〈div align="center"〉〈p〉姓名: 
〈input name="name" size="13"〉〈/p〉 
〈p〉密码:〈input name="password" 
size="13"type="password"〉〈/p〉〈/div〉 
〈div align="right"〉〈input type="submit" name="b1" value="提交" 〉 
〈/div〉〈/form〉〈/body〉〈/html〉 
Protect.asp文件   ′需限权访问的页面 
〈% if session("register")〈 〉"true" then 
session("prescript")= 
request.servervariables("script_name") 
response.redirect "register.asp" 
end if%〉 
′记录该页面的路径到prescript变量中并强制客户登录 
〈html〉〈head〉 
〈meta http-equiv="Content-Type" 
content="text/html; charset=gb_2312-80"〉〈/head〉 
〈body bgcolor="#00FFFF"〉 
′此处可输入该页面其它内容的脚本 
〈/body〉〈/html〉 
以上几种方法,设计者可以根据系统的需要进行灵活运用。


B4层 发表时间: 11/10 20:48

回复: Aoming [aoming]   版主   登录
================
asp作品保护方案
================

各ASP文件的编写操作如下: 

1.用FrontPage(或NotePad),新建一个ASP文件Default.asp,录入以下程序代码: 

<html>
<head>
<title>Sample</title>
</head>
<% dim conn,fs,f
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=kxj;dbq="&server.mappath("id.mdb")
set fs=server.createObject("scripting.filesystemobject")
testDrive=Server.MapPath("/DRIVEINFO.ASP")
''通过MapPath获得当前盘盘符
testDrive=Left(testDrive,3)
set f=fs.getdrive(testDrive)
''调用GetDrive方法,将驱动器赋予一个变量
Mysql="SELECT * From driveinfo where id=1" 
set rsCheck = Server.CreateObject("ADODB.Recordset")
rsCheck.open Mysql,conn,1,1
FSER=trim(f.serialnumber)
''获得当前盘序列号
StrSerno=trim(rsCheck.fields("SERNO"))
StrMark=rsCheck.fields("WRIMARK")
if StrSerno<>FSER and StrMark=0 then
''若是首次安装,则置写盘标志为1
session("pass")=true
''定义用户Session,并置为全局ASP文档标识变量
set rsMain = Server.CreateObject("ADODB.Recordset")
Mysql1="update driveinfo SET SERNO="&FSER&", WRIMARK=1" 
rsMain.open Mysql1,conn,1,2
response.write("<a href=''success.asp''>SETUP 
SUCCESSFUL!WELCOME TO ACCESS THE WEBSITE!</a>")
set rsMain=nothing
else 
if StrSerno=FSER then
''若是合法用户再次合法进入
session("pass")=true
response.write("<a href=''success.asp''>YOU ARE AUTHORIZED BY THE WEBSITE MANAGER,WELCOME TO ACCESS !</a>")
else
''非法拷贝用户
session("pass")=false
response.write("<a href=''fail.htm''>IT IS ILLEGAL TO COPY THE WEBSITE''S ASP DOCUMENT.YOU ARE NOT RIGRT TO USE THE PROGRAM.</a>")
end if
end if 
response.write("<br>") 
response.write("Volume Serial Number in drive "&testDrive)
response.write(f.serialnumber)
response.write("<br>")
response.write("Volume hex Serial Number in drive "&testDrive)
response.write(hex(f.serialnumber))
response.write("<br>")
''作为演示,本程序把当前盘序列号列出来(16进制)
set f=nothing
set fs=nothing
%>
</html>


2.在合法用户可以访问的各个ASP文件头部,添加如下代码: 

<% if Session("pass")=false then
''对Session变量进行判定,非法则跳出本ASP文件
response.redirect("fail.htm")
end if 
%>


3.用ASP加密程序(例如微软公司的SCRENC.EXE,别的ASP加密程序也可以)对各个ASP文件进行加密。 

在DOS状态下运行SCRENC -l vbscript source.asp destination.asp,即把源文件source.asp生成了包含密文ASP脚本的新文件destination.asp。SCRENC.EXE可以在微软公司站点(http://www.microsoft.com免费下载)。 


B5层 发表时间: 11/10 20:48

回复: Aoming [aoming]   版主   登录
=====================================
检查字符串strSource是否为big或big5码
=====================================


Public Function CheckBIG(strSource As String) As Boolean 
Dim idx As Long 
Dim ByteTemp() As Byte 
CheckBIG 
= False 
For idx = 1 To Len(strSource) 
  ByteTemp = StrConv(Mid(strSource, idx, 1), vbFromUnicode) 
  If UBound(ByteTemp) > 0 Then 
    If (ByteTemp(1) >= 64) And (ByteTemp(1) <= 126) Then 
      CheckBIG = True 
      Exit For 
    End If 
  End If 
Next idx 
End Function 


B6层 发表时间: 11/10 20:50

回复: Aoming [aoming]   版主   登录
===============
禁用浏览器后退
===============


< % 
Response.Buffer = True 
Response.ExpiresAbsolute = Now() - 1 
Response.Expires = 0 
Response.CacheControl = "no-cache" 
% > 



==========================
树型结构在asp中的简单解决
==========================

拿个实例来讲吧,譬如下面一个数据:


文档管理 1

|----新建文档 2

|----文档修改 3

|----文档归档 4

| |----查看归档信息 5

| |----删除归档信息 6

| | |----删除历史文档 7

| | |----删除正式文档 8

|----系统管理 9

|----用户管理 10

人事管理 11

行政管理 12

财务管理 13


  这是一个很典型的层次型结构数据,那么大家想一想,如何将其通过二维表的形式来表达呢?初


看上去很难,是吧。可是仔细推敲一番还是有门路可钻的。


  可以这样,将上面所有的权限视为一个权限字段,那么这个权限字段肯定是要有一个ID值的。我


们再给这个关系型数据表再强行加一个字段――隶属ID字段,也就是表明这个权限是属于哪一级权限


之下的,即这个ID值隶属于哪一个ID值。比如:“查看归档信息”权限ID值为“5”,它是隶属于“文


档归档”权限之下的,那么它的隶属ID字段的值就应该是“4”。OK,如果这一点能理解的话,那么我


们的关系转化工作也就算基本完成了。


  下面我们就开始设计这张关系型数据表(以Sql Server 7.0 为例):


+-----------+-----------+-----------+-----------+----------+

  | 字段名 | 字段含义 | 字段类型 | 字段大小 | 字段属性 |

+-----------+-----------+-----------+-----------+----------+

| SelfID | 权限ID | Int | 4 | PK |

| PowerName | 权限名  | Varchar | 50 | Not Null |

| PowerInfo | 权限信息 | Varchar | 500 | |

| BelongID | 隶属ID | Int | 4 | |

+-----------+-----------+-----------+-----------+----------+


  好了,结构设计好你就可以轻松输入你的测试数据了。


  然后,我们就针对如何在网页中模仿层次结构显示这功能的ASP程序,这也是最关键的一步了。


程序清单:powerlist.asp


<%

''数据库连接

set conn=Server.CreateObject("ADODB.Connection")

conn.open "driver={SQL Server};server=chaiwei;DATABASE=chaiwei;UID=sa;PWD="


''打开所有父层数据

set rs=Server.CreateObject("ADODB.Recordset")

rs.Open "select * from powers where belongid is null order by powerid",conn,1,3


''层次数表态变量赋初值

format_i=1


''列表主程序段

do while not rs.eof


''打印父层数据信息

response.write "<a href=''powerlist.asp?SelfID=" & rs("powerid") & "&BelongID=" & rs("belongid") & "''>" & rs("powername") & "</a>"

response.write "<br>"


''子程序调用,子层数据处理

Call ListSubPower(rs("powerid"))


rs.movenext


loop


''关闭父层数据集

rs.close

set rs=nothing



''子层数据处理子程序

Sub ListSubPower(id)


''打开隶属于上层 powerid 的所有子层数据信息

set rs_sub=Server.CreateObject("ADODB.Recordset")

rs_sub.Open "select * from powers where belongid=" & id & " order by powerid",conn,1,3 


''列子层数据

do while not rs_sub.eof


''层次数表态变量递进累加

format_i=format_i+1


''循环缩进格式控制,因为顶层与二层不需要缩进,所以从第三层开始引用此程序段

for i=format_i to 3 step -1

response.write " |"

response.write " "

next


''打印子层数据信息

response.write " |----"

response.write "<a href=''powerlist.asp?SelfID=" & rs_sub("powerid") & "&BelongID=" & rs_sub("belongid") &"''>" & rs_sub("powername") & "</a>"

response.write "<br>"


''递归调用子程序本身,对子层数据进行逐渐处理

ListSubPower(rs_sub("powerid"))


rs_sub.movenext


loop


''层次数表态变量递退累减 

format_i=format_i-1 


''关闭子层数据集

rs_sub.close

set rs_sub=nothing 

End Sub

%>


  powerlist.asp程序中,我们先打开顶层数据,在循环中显示出来;然后又设计一个子程序ListSubPower,通过递归算法在循环中调用,以此来打开子层数据信息,并且在子程序内部循环中又反复调用自己,以此来逐层展开深层数据。

  另外,在程序中还用了一个静态变量format_i来控制缩进显示格式。


  本文就树型结构在数据设计、程序控制方面做简单尝试,目的在于抛砖引玉,希望读者通过本文得到更多启示。


B7层 发表时间: 11/10 20:52

回复: darkangel [eson]   论坛用户   登录
我顶~~~
斑竹真好人!

B8层 发表时间: 11/13 11:54

论坛: 网站建设

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号