用Cookie实现仅弹出一次窗口
作者:cmscn 日期:2007-01-07
脚本说明:
第一步:把如下代码加入<head>区域中
<SCRIPT language="JavaScript">
<!--
function openpopup(){
window.open("welcome.htm","","width=300,height=300")
}
function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) { // if cookie exists
offset += search.length
// set index of beginning of value
end = document.cookie.indexOf(";", offset);
// set index of end of cookie value
if (end == -1)
end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
function loadpopup(){
if (get_cookie('popped')==''){
openpopup()
document.cookie="popped=yes"
}
}
//-->
</SCRIPT>
第二步:把<body>中内容改为:
<body bgcolor="#fef4d9" onunload="loadpopup()">
管理常用SQL语句---写在SQL数据库出来之前
作者:cmscn 日期:2006-12-23
select @@version
2. 查看数据库所在机器操作系统参数
exec master..xp_msver
3. 查看数据库启动的参数
sp_configure
4. 查看数据库启动时间
select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1
查看数据库服务器名和实例名
print 'Server Name...............:' + convert(varchar(30),@@SERVERNAME)
print 'Instance..................:' + convert(varchar(30),@@SERVICENAME)
5. 查看所有数据库名称及大小
sp_helpdb
重命名数据库用的SQL
sp_renamedb 'old_dbname', 'new_dbname'
6. 查看所有数据库用户登录信息
sp_helplogins
查看所有数据库用户所属的角色信息
sp_helpsrvrolemember
修复迁移服务器时孤立用户时,可以用的fix_orphan_user脚本或者LoneUser过程
更改某个数据对象的用户属主
sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner'
注意:更改对象名的任一部分都可能破坏脚本和存储过程。
把一台服务器上的数据库用户登录信息备份出来可以用add_login_to_aserver脚本
查看某数据库下,对象级用户权限
sp_helprotect
7. 查看链接服务器
sp_helplinkedsrvlogin
查看远端数据库用户登录信息
sp_helpremotelogin
8.查看某数据库下某个数据对象的大小
sp_spaceused @objname
还可以用sp_toptables过程看最大的N(默认为50)个表
查看某数据库下某个数据对象的索引信息
sp_helpindex @objname
还可以用SP_NChelpindex过程查看更详细的索引情况
SP_NChelpindex @objname
clustered索引是把记录按物理顺序排列的,索引占的空间比较少。
对键值DML操作十分频繁的表我建议用非clustered索引和约束,fillfactor参数都用默认值。
查看某数据库下某个数据对象的的约束信息
sp_helpconstraint @objname
9.查看数据库里所有的存储过程和函数
use @database_name
sp_stored_procedures
查看存储过程和函数的源代码
sp_helptext '@procedure_name'
查看包含某个字符串@str的数据对象名称
select distinct object_name(id) from syscomments where text like '%@str%'
创建加密的存储过程或函数在AS前面加WITH ENCRYPTION参数
解密加密过的存储过程和函数可以用sp_decrypt过程
10.查看数据库里用户和进程的信息
sp_who
查看SQL Server数据库里的活动用户和进程的信息
sp_who 'active'
查看SQL Server数据库里的锁的情...
[ASP]提高数据显示效率--缓存探幽
作者:cmscn 日期:2006-12-21
写在前面的话:此篇还是asp相关的,相信玩ASP的都有这个感觉,当数据有5万多条时-------just like音乐网,要调用最新的10条在页面显示,糟糕的是,当n多用户打开页面访问的时候,每个用户每次都要读取数据库一次,这无疑降低了效率,很明显,如果能把数据能保存在内存上,然后读取,无疑加快了速度. 所谓缓存其实就是在内存中开辟一个用来保存数据的空间,使用缓存你就不用频繁的访问你保存在硬盘上的数据了,因为这些数据我们希望每个用户都能看到效果一样,考虑使用的是application对象,因为它是所有访问者的共用的对象,存储的信息和定义的事件能够为所有者访问者使用,这里要使用asp内置对象APPLICATION了,关于application,有2个方法[lock和unlock],2个集合[content和staticobjects],2个事件[开始的application_onstart和application_end],application变量不会因为用户的离开而消失,一旦建立,一直等到网站关闭和程序卸载为止,正因为如此,使用的时候要特别小心!,否则会占用内存,我在这里不用多说,有兴趣的查阅相关资料吧,大体是这样.我们是把数据写入一个自定义的application里面,在制定的时间读取刷新的,大体思路就是这样.
实例演示.先建立一个简单的数据库,写个function读取一下,写入一个dim变量temp中:
temp = temp & "</table>"
'这个函数原来给一个变量temp付上记录的值
Dim sql, conn, rs
'符合条件的sql语句
sql = "Select id, [szd_f], [szd_t] FROM admin"
'打开数据库连接
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("db.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 1, 3
'当符合sq语句l的数据没有显示完毕时
If Not rs.EOF Then
'给temp变量赋值
Dim temp
temp = "<table width=""90%"" align=""center"""
temp = temp & " border=""1"" bordercolor=""silver"""
temp = temp & " cellspacing=""2"" cellpadding=""0"">"
temp = temp & "<tr bgcolor=""#CCDDEE""><td width=""5%"""
temp = temp & ">ID</td><td>操作</td>"
temp = temp & "<td>数值</td></tr>"
'存在数据,接着赋值
While Not rs.EOF
temp = temp & "<tr><td bgcolor=""#CCDDEE"">"
temp = temp & rs("ID") & "</td><td>" & rs("szd_f")
temp = temp & "</td><td>" & rs("szd_t")
temp = temp & "</td></tr>"
rs.MoveNext
Wend
'temp赋值完毕,把它再返回给函数
DisplayRecords = temp
Else
DisplayRecords = "Data Not Available."
End If
'释放内存
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
End Function
For...Next 语句
作者:cmscn 日期:2006-12-19
以指定次数重复执行一组语句。
For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next
参数
counter
用做循环计数器的数值变量。这个变量不能是数组元素或用户自定义类型的元素。
start
counter 的初值。
end
counter 的终值。
step
counter 的步长。如果没有指定,则 step 的默认值为 1。
statements
For 和 Next 之间的一条或多条语句,将被执行指定次数。
说明
step 参数可以是正数或负数。step 参数值决定循环的执行情况,如下所示:
值 如果 ... 则循环执行
正数或 0 counter <= end
负数 counter >= end
当循环启动并且所有循环中的语句都执行后,step 值被加到 counter 中。这时,或者循环中的语句再次执行(基于循环开始执行时同样的测试),或者退出循环并从 Next 语句之后的语句继续执行。
注意 在循环体内改变 counter 的值,将会使程序代码的阅读和调试变得更加困难。
Exit For 只能用于 For Each...Next 或 For...Next 结构中,提供另一种退出循环的方法。可在语句中的任意位置放置任意个 Exit For 语句。Exit For 经常和条件判断语句一起使用(例如 If...Then),并立即将控制权转移到 Next 之后的语句。
可以将一个 For...Next 循环放置在另一个 For...Next 循环中,组成嵌套循环。每个循环中的 counter 要使用不同的变量名。下面的结构是正确的:
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
. . .
Next
Next
Next
用磁盘序列号对ASP进行加密
作者:cmscn 日期:2006-12-17
磁盘序列号,简称磁盘ID,是对磁盘进行格式化时随机产生的磁盘标识信息,是一个卷序列号。同一机器两次格式化随机产生固定格式的序列号相同几率几乎为零, DOS的后期版本和WINDOWS、WINNT均采用了这种磁盘标识方式,因而磁盘序列号常被运用用于商业化软件进行加密使用。从WINDOWS9.X切换到MS-DOS方式,键入DIR命令后回车,屏幕出现当前卷标序列号信息,这个类似"0A48-1CD7"的序列号是一个16进制数。一些限期使用的软件,在使用期限到了之后,会要求使用者在线申请新的授权序列号(使用许可)。这种授权序列号相当一部分是采用了静态磁盘序列号结合时间产生的。安装完毕之后的软件,程序即使被非法拷贝到非初始安装环境中,也不能使用。
上述思想用VC、VB及DELIPHI编程语言都容易实现,那么,在ASP中又如何实现呢?VBScript作为一种健壮的、安全的用户语言,是受客户机系统限制的,不能处理客户机上API的调用,也不能直接操纵客户机上的文件和文件系统之外的控件。因而本文采用VBScript并结合ASP内置组件FileSystem来实现上述思想。 以下程序根据具体情况略加修改,可以应用于实际的ASP应用系统。
作为讲解实例,本文用到Access数据库安全机制,实际应用中,可以用其它格式的文件存放的数据。为便于阐述,我们先建一个Access数据库ID.mdb(密码为"kxj"),内建一个DriveInfo表,数据结构如下:
id(自动编号) ;
Serno(文本,12,磁盘序列号(10进制)) ;
Wrimark(数字,1,写盘标志,)。
说明
Wrimark 值为0代表合法用户未安装系统,值为1代表该系统已安装。当值为1且序列号与当前盘不符时,则判定为非法拷贝用户。
初始化时先定义一个新记录,各字段初始值分别为1,12345678,0。
在同一目录下,例如C:\INTERPUB\WWWROOT下,放置首页Default.asp,合法用户首页Success.asp,非法安装用户提示页Fail.htm及ID.mdb序列号存放库。
各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 WEBS99vE!</a>")
set rsMain=nothing
else
if StrSerno=FSER then
'若是合法用户再次合法进入
session("pass")=true
response.write("<a href='success.asp'>YOU ARE AUTHORIZED BY THE WEBS99vE MANAGER,WELCOME TO ACCESS !</a>")
else
'非法拷贝用户
session("pass")=false
response.write("<a href='fail.htm'>99v&nb...
Access转Excel AND Excel导入ACC 代码。
作者:cmscn 日期:2006-12-14
<!--#include file=common.asp-->
<%
'**********************************************
' Code by ASP导出EXCEL通用
' 修改引用 By 子言(JaStudio)
' QQ:23638564 Email:kpggdf@163.com
' web:www.gdsspt.com
'**********************************************
Dim xibua
Dim mysql
xibua = Request.QueryString("ids")
if xibua="all" Then
mysql = "select * from singup"
Else
mysql = "select * from singup where [系部]='"&xibua&"'"
End If
server.scripttimeout=100000 '处理时间较长,设置值应大一点
On Error Resume Next
set objExcelApp = CreateObject("Excel.Application")
objExcelApp.DisplayAlerts = false
objExcelApp.Application.Visible = false
objExcelApp.WorkBooks.add
set objExcelBook = objExcelApp.ActiveWorkBook
set objExcelSheets = objExcelBook.Worksheets
set objSpreadsheet = objExcelBook.Sheets(1)
Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open mysql,conn,1,3
If objRS.EOF then
response.write("Error")
respose.end
End if
Dim objField, iCol, iRow
iCol = 1 '取得列号
iRow = 1 '取得行号
objSpreadsheet.Cells(iRow, iCol).Value = ""&xibua&"部的报名情况" '单元格插入数据
objSpreadsheet.Columns(iCol).ShrinkToFit=true '设定是否自动适应表格单元大小(单元格宽不变)
'设置Excel表里的字体
objSpreadsheet.Cells(iRow, iCol).Font.Bold = True '单元格字体加粗
objSpreadsheet.Cells(iRow, iCol).Font.Italic = False '单元格字体倾斜
objSpreadsheet.Cells(iRow, iCol).Font.Size = 20 '设置单元格字号
objSpreadsheet.Cells(iRow, iCol).ParagraphFormat.Alignment=1 '设置单元格对齐格式:居中
objspreadsheet.Cells(iRow,iCol).font.name="宋体" '设置单元格字体
objspreadsheet.Cells(iRow,iCol).font.ColorIndex=2 '设置单元格文字的颜色,颜色可以查询,2为白色
objSpreadsheet.Range("A1:F1").merge '合并单元格(单元区域)
objSpreadsheet.Range("A1:F1").Interior.ColorIndex = 1 '设计单元络背景色
'objSpreadsheet.Range("A2:F2").WrapText=true '设置字符回卷(自动换行)
iRow=iRow+1
For Each objField in objRS.Fields
'objSpreadsheet.Columns(iCol).ShrinkToFit=true
objSpreadsheet.Cells(iRow, iCol).Value = objField.Name
'设置Excel表里的字体
objSpreadsheet.Cells(iRow, iCol).Font.Bold = True
objSpreadsheet.Cells(iRow, iCol).Font.Italic = False
objSpreadsheet.Cells(iRow, iCol).Font.Size = 20
objSpreadsheet.Cells(iRow, iCol).Halignment = 2 '居中
iCol =&...
ASP初学者常用的代码
作者:cmscn 日期:2006-12-14
<%=now()%>
2.取得来访用的IP:
<%=request.serverVariables("remote_host")%>
3.获得系统,浏览器版本:
<script>
window.document.write("版本:"+navigator.appName+navigator.appVersion+" browser.")
</script>
4.去除IE混动条:
<body scroll="no">
<body style="overflow-y:hidden">
5.进入网站,跳出广告:
<script language="javascript">
<!--
<!-- 注意更改文件所在路径-->
window.open(''http://www.XXXXXX.com'','''',''height=200,width=300,top=0,left=30'');
// -->
</script>
6.随机数:
<%randomize%>
<%=(int(rnd()*n)+1)%>
N为可改变数
7.向上混动代码:
<marquee direction="up" scrolldelay="200" style="font-size: 9pt; color: #FF0000; line-height: 150%; font-style:italic;
font-weight:bold" scrollamount="2" width="206" height="207" bgcolor="#FFFF00">hhhhhhhhhhhhhhhhhhh</marquee>
8.自动关闭网页:
<script LANGUAGE="javascript">
<!--
setTimeout(''window.close();'', 10000); //60秒后关闭
// -->
</script>
<p align="center">本页10秒后自动关闭,请注意刷新页面</p>
9.随机背景音乐:
<%randomize%>
<bgsound src="mids/<%=(int(rnd()*60)+1)%>.mid" loop="-1">
可以修改数字,限制调用个数,我这里是60个.
10.自动刷新本页面:
<script>
<!--
var limit="0:10"
if (document.images){
var parselimit=limit.split(":")
parselimit=parselimit[0]*60+parselimit[1]*1
}
function beginrefresh(){
if (!document.images)
return
if (parselimit==1)
window.location.reload()
else{
parselimit-=1
curmin=Math.floor(parselimit/60)
cursec=parselimit%60
if (curmin!=0)
curtime=curmin+"分"+cursec+"秒后重刷本页!"
else
curtime=cursec+"秒后重刷本页!"
window.status=curtime
setTimeout("beginrefresh()",1000)
}
}
window.onload=beginrefresh
file://-->
</script>
11.ACCESS数据库连接:
<%
option explicit
dim startime,endtime,conn,connstr,db
startime=timer()
'更改数据库名字
db="data/dvBBS5.mdb"
Set conn = Server.CreateObject("ADODB.Connection&qu...
参考资料之ASP函数大全
作者:cmscn 日期:2006-12-02
2003-4-14 伟网动力
1.函数array()
功能:创建一个数组变量
格式:array(list)
参数:list 为数组变量中的每个数值列,中间用逗号间隔
2.函数Cint()
功能:将一表达式/其它类型的变量转换成整数类型(int)
格式:Cint(expression)
参数:expression 是任何有效的表达式/其它类型的变量
3.函数:Creatobject()
功能:创建及返回一个ActiveX对象.
格式:Creatobject(obname)
参数:obname 是对象的名称
4.函数Cstr()
功能:将一表达式/其它类型的变量转换成字符类型(string)
格式:Cstr(expression)
参数:expression是任何有效的表达式/其它类型的变量
5.函数Date()
功能:返回当前系统(server端)的日期
格式:Date()
参数:无
例子:
6.函数Dateadd()
功能:计算某个指定的时间和
格式:dateadd(timeinterval,number,date)
参数:timeinterval是时间单位(月,日..); number是时间间隔值,date是时间始点.
结果:
11/4/99
3:34:45 PM
其中
"m" = "month";
"d" = "day";
如果是currentDate 格式,则,
"h" = "hour";
"s" = "second";
7.函数Datediff()
功能:计算某量个指定的时间差
格式:datediff(timeinterval,date1,date2[,firstdayofweek[,firstdayofyear]])
参数:timeinterval 是时间单位; date1,date2是有效的日期表达式,firstdayofweek,firstdayofyear 是任意选项.
结果:There are 150 days to millenium from 8/4/99.
8.函数day()
功能:返回一个整数值,对应于某月的某日
格式:day(date)
参数:date是一个有效的日期表达式;
9.函数formatcurrency()
功能:转换成货币格式
格式:formatcurrency(expression [,digit[,leadingdigit[,paren[,groupdigit]]]])
参数:expression 是有效的数字表达式;digit表示小数点后的位数;leadingdigit,paren,groupdigit是任意选项.
10.函数Formatdatetime()
功能:格式化日期表达式/变量
格式:formatdatetime(date[,nameformat])
参数:date为有效的日期表达式/变量;nameformat是指定的日期格式常量名称.
例子:
结果:Wednesday,August 04,1999
11.函数formatnumber()
功能:格式化数字表达式/变量
格式:formatnumbe(expression [,digit[,leadingdigit[,paren[,groupdigit]]]])
参数:express为有效的数字表达式, digit表示小数点后的位数;leadingdigit,paren,groupdigit是任意选项
结果: 23.222
12.函数formatpercent()
功能:格式化百分数表达式/变量
格式:formatnumber(expression [,digit [,leading [,paren[,groupdigit]]]])
参数:expression 是有效的数字表达式,digit表示小数点后的位数;leadingdigit,paren,groupdigit是任意选项
结果: 45.233
13.函数:hour()
功能:返回一个数值,对应于的指定时间.
格式:hour(time)
参数:time对应于的指定时间.
结果:16 (24 小时制)
14.函数instr()
功能:返回一个数值,对应于某字符(串)在另一字符串中的位置.
格式:instr([start,]strtobesearched,strsearchfor [,compare])
参数:start(任选)是从第start位寻找,strtobesearched 是被搜索的字符串,strsearchfor是被寻找的目标.compare是任意选项
结果:9,(字符"a"在strtext字符串的第九位)
15.函数instrrev()
功能:返回一个数值,对应于某字符(串)在另一字符串中的位置(从后面起开始寻找).
格式:instrrev([start,] strtobesearched,strsearchfor[,compare])
参数:参考 instr(),
结果:13, 字串"s"是strtext的第13个字符(从后面起开始寻找)
16.函数int()
功能:数字取整
格式:int(number)
参数:number 是任何有效的数字表达式/其它类型的变量
结果:322 (如果用Cint()则结果是323)
17.函数isarray()
功能:返回一个布尔值,判断变量是否为数组.
格式: isarray(name)
参数:name是变量名称
结果:false
18.函数isdate()
功能:返回一个布尔值,判断变量是否为日期变量.
格式:isdate(expression)
参数:expression 是任意的变量.
例子:
结果:true
19.函数isempty()
功能:返回一个布尔值,判断变量是否为空.
格式:isempty(expression)
参数:expression 是任意的变量.
结果:true
20.函数isnull()
功能:返回一个布尔值,判断变量是否包含非法的数据.
格式:isnull(expression)
参数:expression 是任意的变量.
结果:false
21.函数Isnumeric()
功能:返回一个布尔值,判断变量是否为数字变量,或者是可以转换成数字的其它变量.
格式:isnumeric(expression)
参数:expression 是任意的变量.
结果: true.
22.函数Isobject()
功能:返回一个布尔值,判断变量是否为对象的变量,
格式:isobject(expression)
参数:expression 是任意的变量.
结果: true
23.函数:Lbound()
功能:返回一个数组的下界.
格式:Lbound(arrayname[,dimens...
页面字符串过滤函数
作者:cmscn 日期:2006-12-02
'****************************************************
'页面字符串过滤函数,返回值
'作者:www.joekoe.com论坛用户(cuiwl)
'****************************************************
function codehtml(str,n1,n2)
'str字符串参数
'n1过滤等级
'n2显示数目
if trim(str)="" then
codehtml=""
exit function
end if
select case n1
case 0
'不过滤
str=str
case 1
'无段落文本格式
str=replace(str,"<","<")
str=replace(str,">",">")
case 2
'有段落文本格式
str=replace(str,"<","<")
str=replace(str,">",">")
str=replace(str,"chr(10)","<br>")
str=replace(str,chr(32)," ")'空格
str=replace(str,vbcrlf,"<p>") '回车
case 3
'有段落html格式,支持表格、图片、列表等功能
str=replace(str,"<","<")
str=replace(str,">",">")
str=replace(str,"chr(10)","<br>")
str=replace(str,chr(32)," ")'空格
str=replace(str,vbcrlf,"<p>") '回车
str=replace(str,"<p","<p")
str=replace(str,"p>","p>")
str=replace(str,"<br","<br")
str=replace(str,"br>","br>")
str=replace(str,"<hr","<hr")
str=replace(str,"hr>","hr>")
str=replace(str,"<b","<b")
str=replace(str,"b>","b>")
str=replace(str,"<u","<u")
str=replace(str,"u>","u>")
str=replace(str,"<i","<i")
str=replace(str,"i>","i>")
str=replace(str,"<ol","<ol")
str=replace(str,"ol>","ol>")
str=replace(str,"<ul","<ul")
str=replace(str,"ul>","ul>")
str=replace(str,"<li","<li")
str=replace(str,"li>","li>")
str=replace(str,"<font","<font")
str=replace(str,"font>","font>")
str=replace(str,"<table","<table")
str=replace(str,"table>","table>")
str=replace(str,"<tr","<tr")
str=replace(str,"tr>","tr>")
str=replace(str,"<td","<td")
str=replace(str,"td>","td>")
str=replace(str,"<div","<div")
str=replace(str,"div>","div>")
s...