<?xml version="1.0" encoding="UTF-8"?>
<rss>
<channel>
<title>兄弟的博客【L-BLOG，网络电视精灵】</title>
<link>http://www.030904.com/blog</link>
<Description>兄弟的博客【L-BLOG，网络电视精灵】</Description>
<language>zh-cn</language>
<copyright>Copyright 2003-2004 Loveyuki</copyright>
<webMaster>webmaster@loveyuki.com</webMaster>
<image>
	<title>兄弟的博客【L-BLOG，网络电视精灵】</title> 
	<url>http://www.030904.com/blog/images/logos.gif</url> 
	<link>http://www.030904.com/blog</link> 
	<description>兄弟的博客【L-BLOG，网络电视精灵】</description> 
</image>
<item><link>http://www.030904.com/blog/blogview.asp?logID=989</link><title><![CDATA[谈谈免费网站空间]]></title><author>glenluo</author><category>建站心得</category><pubDate>2010-3-9 23:27:27</pubDate><guid>http://www.030904.com/blog/blogview.asp?logID=989</guid><description><![CDATA[现在很多主机服务商为了推销自己的产品，纷纷推出了免费空间的服务，但是就目前的空间质量来看，基本都是很差的。首先，免费并非真正的免费，很多主机服务商提供的免费主机都是&nbsp;有条件的免费，要么必须挂上他们的广告，要么就靠你去论坛发帖子激活他们网站的人气，要么就是主机由诸多的限制，比如不可以放上影音文件等等。<br><br>我最近测试了一个5944网站推荐的1000兆的美国的免费空间，感觉有以下的问题可以和大家分享一下：<br>1：空间的大小是够了，但是使用的权限是一个月，你每个月得登录他们的后台去激活你的网站空间，还不知道到时候能不能激活呢。<br><br>2：空间对文件的类型有比较多的限制，运行ASP基本是没有问题了，但是比如你上传的mp3,avi,rm,rmvb,flv,wma,wmv等等后缀的文件根本无法下载，会出现找不到文件的提示，估计是主机服务商对文件的类型做了限制。<br><br>3：空间一般都对文档类型的文件是支持的，比如doc,txt,xls,pdf,ppt还有就是图片类型。因为连图片都不支撑的空间的话那简直就是垃圾了，呵呵。另外发现可以下载MDB格式的文件，这样可以充分利用好你的空间，将你需要上传的文件的后缀修改为MDB再上传上去即可下载了，下载以后修改后缀名，就实现了空间的万能中转了。<br><br>4：由于空间是放在美国的，所以用FTP上传的时候你会发现上传的速度基本都在15K/秒一下，所以上传大文件占用的时间会很长。但是从网站的浏览速度来看还是可以的，跟国内的主机的速度没有什么差别。<br><br>5：另外叫大家一个方法，如果你使用的是在线的上传系统，可以在你的文件的后面加上后缀即可，比如你要上传一个名为：星月神话.mp3你可以改为：星月神话.mp3.ppt。经过本人的测试，一般在线上传的文件控制在5兆以内基本都是可以上传的，但是文件太大的基本都是失败的。<br><br>以下是免费的测试空间，大家可以尽情去测试：<br><a target="_blank" href="http://web.030904.net/">http://web.030904.net/</a>]]></description></item><item><link>http://www.030904.com/blog/blogview.asp?logID=988</link><title><![CDATA[用ASP程序实现网站在线人数统计]]></title><author>glenluo</author><category>编程技术</category><pubDate>2010-3-9 21:29:53</pubDate><guid>http://www.030904.com/blog/blogview.asp?logID=988</guid><description><![CDATA[在浏览网页的时侯，常常可以看见一些“当前网站上的人数是ＸＸＸ人”的在线人数同计。如何用ASP来做一个呢？首先，分析一下它的做法，一般来说，这些线上人数统计都是指一个时段内的访客人数统计。比如（5分钟内，10分钟内）而这个时间的长短，是由设计者设定的。&nbsp;<br><br>　　在这个时段内同计各个不同ＩＰ的访客总数，就可以得出当前的线上人数了，但这里有一个精确问题需要解决，至于用什么办法来精确地统计，那就是各人不同的做法了，比如可以用自动提交的页面，隔一段时间读取COOKIES等等，而在ASP中，有一个更好的技巧，就是使用session对象来统计，这里介绍一下gobal.asa这个文件，这是一个很重要的一个文件，请看看它的结构。<br><br><br>＜SCRIPT&nbsp;LANGUAGE=&quot;VBScript&quot;&nbsp;RUNAT=&quot;Server&quot;＞<br><br>Sub&nbsp;Session_OnStart<br><br>End&nbsp;Sub<br><br>Sub&nbsp;Session_OnEnd<br><br>End&nbsp;Sub<br><br>sub&nbsp;Application_OnStard<br><br>End&nbsp;Sub<br><br>sub&nbsp;Application_OnEnd<br><br>End&nbsp;Sub＜/SCRIPT＞<br><br><br>　　当有一个会话发生时（用户浏览网页，向Web服务器发出请求）那么，如果自服务器启动后第一个用户的话，就会同时发生Application_OnStard和Session_OnStart这两个事件，之后，再有别的用户发出请求的话，就只发生Session_OnStart这个事件，而session的生存期是多长，是可以设定的，Session.timeout=X（分钟）<br><br>　　好了，有了这个很好用的方法，我们就能准确地统计出在线人数了，而人数总计是用一个application变量来保存，当在第一个会话开始时，在Application_OnStard事件中放置一条清空计数器的语句application(&quot;online&quot;)=0，然后，在Session_OnStart事件中，放置一条增加在线人数的语句application(&quot;online&quot;)=application(&quot;online&quot;)+1，而在Session_OnEnd事件相应地放一条减少在线人数的语句，令计数值减一。<br><br>　　这样，这个文件就改为如下<br><br>&nbsp;<br><br>＜SCRIPT&nbsp;LANGUAGE=&quot;VBScript&quot;&nbsp;RUNAT=&quot;Server&quot;＞<br><br>Sub&nbsp;Session_OnStart<br><br>application(&quot;online&quot;)=application(&quot;online&quot;)+1<br><br>End&nbsp;Sub<br><br>Sub&nbsp;Session_OnEnd<br><br>application(&quot;online&quot;)=application(&quot;online&quot;)-1<br><br>End&nbsp;Sub<br><br>sub&nbsp;Application_OnStard<br><br>application(&quot;online&quot;)=0<br><br>End&nbsp;Sub<br><br>sub&nbsp;Application_OnEnd<br><br>application(&quot;online&quot;)=0<br><br>End&nbsp;Sub＜/SCRIPT＞<br><br><br>　　接下来编一个显示图形数字的程序，把在线人数显示在指定的页面上。这样就能得出在人数了<br><br><br>*online.asp<br><br>＜%&nbsp;@language=&quot;vbscript&quot;&nbsp;%＞<br>＜%<br>tmp=application(&quot;online&quot;)<br>tmp=Cstr(tmp)<br>dim&nbsp;disp(20)<br>dim&nbsp;images(20)<br>dbbits=len(tmp)<br>for&nbsp;I=&nbsp;1&nbsp;to&nbsp;dbbits<br>disp(I)=left(right(tmp,I),I-(I-1))<br>next<br><br>for&nbsp;I=dbbits&nbsp;to&nbsp;1&nbsp;step&nbsp;-1<br>images(I)=&quot;＜img&nbsp;src=&quot;&amp;&quot;http://xxxx.com.cn/pic&quot;&amp;&quot;/&quot;&amp;disp(I)&amp;&quot;.gif＞&quot;<br><br>response.write&nbsp;&quot;document.write(&quot;&amp;images(I)&amp;&quot;);&quot;<br><br>next<br><br>%＞<br><br><br>　　上面的程序很简单，这里不作分析了，请大家自己阅读一下。在调用在线统计的页面上用一句script语句引用online.asp文件，以显示图形统计器。<br>]]></description></item><item><link>http://www.030904.com/blog/blogview.asp?logID=987</link><title><![CDATA[ASP在线获取ACCESS数据库表名及结构]]></title><author>glenluo</author><category>编程技术</category><pubDate>2010-3-9 21:20:43</pubDate><guid>http://www.030904.com/blog/blogview.asp?logID=987</guid><description><![CDATA[此方法可获得ACCESS数据的表名及其结构，数据类型等...&nbsp;<br>程序过滤了几个ACCESS数据库的几个隐藏表(可能是导致ACCESS数据库删除数据还会变大的原因)&nbsp;<br><br>&lt;html&gt;&nbsp;<br>&lt;head&gt;&nbsp;<br>&lt;title&gt;获取ACCESS数据库表名&lt;/title&gt;&nbsp;<br>&lt;/head&gt;&nbsp;<br>&lt;body&nbsp;style=&quot;text-align:left;margin-left:50px;font-family:&#39;arial&#39;;font-size:12px&quot;&gt;&nbsp;<br>&lt;form&nbsp;style=&quot;padding:5px;margin:5px;margin-left:0px&quot;&nbsp;name=&quot;get&quot;&nbsp;action=&quot;&quot;&nbsp;method=&quot;post&quot;&gt;&nbsp;<br>数据库路径:&lt;input&nbsp;type=&quot;text&quot;&nbsp;name=&quot;path&quot;&nbsp;value=&quot;&quot;&nbsp;size=&quot;50&quot;&nbsp;/&gt;&nbsp;<br>&lt;input&nbsp;type=&quot;hidden&quot;&nbsp;name=&quot;ari&quot;&nbsp;value=&quot;1&quot;&nbsp;/&gt;&nbsp;<br>&nbsp;&lt;input&nbsp;type=&quot;submit&quot;&nbsp;value=&quot;查看&quot;&nbsp;/&gt;&nbsp;<br>&lt;/form&gt;&nbsp;<br>&lt;hr&gt;&nbsp;<br>&lt;%&nbsp;<br>if&nbsp;request.form(&quot;ari&quot;)=&quot;1&quot;&nbsp;and&nbsp;request.form(&quot;path&quot;)&lt;&gt;&quot;&quot;&nbsp;then&nbsp;<br>dim&nbsp;conn,connstr,i,sql,rs&nbsp;<br>on&nbsp;error&nbsp;resume&nbsp;next&nbsp;<br>Connstr=&quot;DRIVER=Microsoft&nbsp;Access&nbsp;Driver&nbsp;(*.mdb);DBQ=&quot;+server.mappath(request.form(&quot;path&quot;))&nbsp;<br>Set&nbsp;Conn=Server.CreateObject(&quot;ADODB.Connection&quot;)&nbsp;&nbsp;<br>conn.Open&nbsp;connstr&nbsp;<br>If&nbsp;Err&nbsp;Then&nbsp;<br>err.Clear&nbsp;<br>Set&nbsp;Conn&nbsp;=&nbsp;Nothing&nbsp;<br>Response.Write&nbsp;&quot;数据库连接出错，请检查连接字串。&quot;&nbsp;<br>Response.End&nbsp;<br>End&nbsp;If&nbsp;<br>%&gt;&nbsp;<br>&lt;font&nbsp;color=red&gt;&lt;%=conn.connectionstring%&gt;&lt;/font&gt;&lt;hr&gt;&nbsp;<br>&lt;%&nbsp;<br>j=0&nbsp;<br>dim&nbsp;tablecount&nbsp;<br>tablecount=0&nbsp;<br>Set&nbsp;shm&nbsp;=&nbsp;conn.OpenSchema(20)&nbsp;<br>shm.MoveFirst&nbsp;<br>Do&nbsp;While&nbsp;Not&nbsp;shm.EOF&nbsp;<br>&nbsp;&nbsp;If&nbsp;shm(&quot;TABLE_TYPE&quot;)&nbsp;=&nbsp;&quot;TABLE&quot;&nbsp;Then&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Left(shm(&quot;table_name&quot;),&nbsp;1)&nbsp;&lt;&gt;&nbsp;&quot;~&quot;&nbsp;Then&nbsp;&#39;这里过滤掉隐藏表&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;GetFileds(shm(&quot;table_name&quot;))&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If&nbsp;<br>&nbsp;&nbsp;End&nbsp;If&nbsp;<br>&nbsp;&nbsp;shm.MoveNext&nbsp;<br>Loop&nbsp;<br>response.write&nbsp;&quot;共有&nbsp;&quot;&amp;j&amp;&quot;&nbsp;个数据表!&quot;&nbsp;<br>else&nbsp;<br>response.write&nbsp;&quot;&lt;h3&gt;请输入数据库相对路径查看具体内容!&lt;/h3&gt;&quot;&nbsp;<br>end&nbsp;if&nbsp;<br>%&gt;&nbsp;<br>&lt;/body&gt;&nbsp;<br>&lt;/html&gt;&nbsp;<br>&lt;%&nbsp;<br>Function&nbsp;GetFileds(TableName)&nbsp;<br>Set&nbsp;rs&nbsp;=&nbsp;server.createobject(&quot;adodb.recordset&quot;)&nbsp;<br>Dim&nbsp;SQL&nbsp;<br>SQL&nbsp;=&nbsp;&quot;select&nbsp;*&nbsp;from&nbsp;&quot;&nbsp;&amp;&nbsp;TableName&nbsp;<br>rs.Open&nbsp;SQL,&nbsp;conn,&nbsp;1,&nbsp;1&nbsp;<br>Dim&nbsp;Cont&nbsp;<br>Cont&nbsp;=&nbsp;rs.Fields.Count&nbsp;<br>response.write&nbsp;&quot;&lt;div&nbsp;style=&quot;&quot;margin-bottom:10px;padding:5px;border:1px&nbsp;#dddddd&nbsp;solid;background:#eeeeee&quot;&quot;&gt;&quot;&amp;vbcrlf&nbsp;<br>response.write&nbsp;&quot;表&nbsp;&lt;font&nbsp;color=red&gt;&lt;b&gt;&quot;&amp;TableName&amp;&quot;&lt;/b&gt;&lt;/font&gt;&nbsp;中含有&quot;&amp;Cont&amp;&quot;个字段,具体如下:&lt;br&gt;&quot;&amp;vbcrlf&nbsp;<br>For&nbsp;i&nbsp;=&nbsp;0&nbsp;To&nbsp;Cont&nbsp;-&nbsp;1&nbsp;<br>&nbsp;&nbsp;dim&nbsp;filtype&nbsp;<br>&nbsp;&nbsp;select&nbsp;case&nbsp;rs.fields(i).type&nbsp;<br>&nbsp;&nbsp;&nbsp;case&nbsp;3&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;filtype=&quot;自动编号(数字)&quot;&nbsp;<br>&nbsp;&nbsp;&nbsp;case&nbsp;202&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;filtype=&quot;字符&quot;&nbsp;<br>&nbsp;&nbsp;&nbsp;case&nbsp;203&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;filtype=&quot;备注&quot;&nbsp;<br>&nbsp;&nbsp;&nbsp;case&nbsp;125&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;filtype=&quot;日期&quot;&nbsp;<br>&nbsp;&nbsp;&nbsp;case&nbsp;11&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;filtype=&quot;真/假(是/否)&quot;&nbsp;<br>&nbsp;&nbsp;end&nbsp;select&nbsp;<br>&nbsp;&nbsp;response.write&nbsp;&quot;&nbsp;&nbsp;&lt;font&nbsp;color=red&gt;&quot;&amp;i&amp;&quot;&lt;/font&gt;--&lt;font&nbsp;color=green&gt;&lt;b&gt;&quot;&amp;rs.fields(i).name&amp;&quot;&lt;/b&gt;&lt;/font&gt;--&quot;&amp;filtype&amp;&quot;;&lt;br&nbsp;/&gt;&quot;&amp;vbcrlf&nbsp;<br>Next&nbsp;<br>response.write&nbsp;&quot;&lt;/div&gt;&quot;&amp;vbcrlf&nbsp;<br>rs.Close&nbsp;<br>set&nbsp;rs=nothing&nbsp;<br>End&nbsp;Function&nbsp;<br>%&gt;&nbsp;<br>]]></description></item><item><link>http://www.030904.com/blog/blogview.asp?logID=986</link><title><![CDATA[随机访问数据库中某个表的一条记录]]></title><author>glenluo</author><category>编程技术</category><pubDate>2010-3-9 21:18:16</pubDate><guid>http://www.030904.com/blog/blogview.asp?logID=986</guid><description><![CDATA[一般一个表都有一个唯一的标识，这里假设这个标识字段为ID&nbsp;<br>&nbsp;分四步:&nbsp;<br>1、取得该表记录总数n。&nbsp;<br>2、把所有的ID号存储到一个数组中IDs()&nbsp;<br>3、产生一个不大于n的随机数m&nbsp;<br>4、从数组中取出第m个ID号，查询数据表，取得记录数据。&nbsp;<br>下面是代码(不包括数据库连接)：&nbsp;<br>&lt;%&nbsp;<br>dim&nbsp;stips()&nbsp;<br>co=0&nbsp;<br>set&nbsp;rs=server.createobject(&quot;adodb.recordset&quot;)&nbsp;<br>sql=&quot;select&nbsp;[id]&nbsp;from&nbsp;stips&quot;&nbsp;<br>rs.open&nbsp;sql,conn,1,1&nbsp;<br>if&nbsp;rs.eof&nbsp;and&nbsp;rs.bof&nbsp;then&nbsp;&nbsp;<br>&nbsp;response.write&nbsp;&quot;还没有任何小知识哦!&quot;&nbsp;<br>else&nbsp;<br>&nbsp;do&nbsp;while&nbsp;not&nbsp;rs.eof&nbsp;&nbsp;&#39;循环保存id到数组&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;redim&nbsp;preserve&nbsp;stips(co)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;stips(co)=rs(&quot;id&quot;)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;co=co+1&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;rs.movenext&nbsp;<br>&nbsp;loop&nbsp;<br>&nbsp;rs.close&nbsp;<br>&nbsp;set&nbsp;rs=nothing&nbsp;<br><br>&nbsp;Randomize()&nbsp;<br>&nbsp;id=stips(int(rnd()*co))&nbsp;&#39;生成随机数,并查询数组内随机数对应的ID&nbsp;<br>&nbsp;set&nbsp;rs=server.createobject(&quot;adodb.recordset&quot;)&nbsp;&nbsp;&nbsp;<br>&nbsp;sql=&quot;select&nbsp;*&nbsp;from&nbsp;stips&nbsp;where&nbsp;id=&quot;&amp;id&nbsp;&nbsp;&#39;查询数据库&nbsp;<br>&nbsp;rs.open&nbsp;sql,conn,1,1&nbsp;<br>&nbsp;response.write&nbsp;rs(&quot;content&quot;)&nbsp;&nbsp;&nbsp;&#39;这里假设数据库有一个content字段&nbsp;<br>&nbsp;rs.close&nbsp;&nbsp;<br>&nbsp;set&nbsp;rs=nothing&nbsp;<br>end&nbsp;if&nbsp;<br>conn.close&nbsp;<br>set&nbsp;conn=nothing&nbsp;<br>%&gt;]]></description></item><item><link>http://www.030904.com/blog/blogview.asp?logID=985</link><title><![CDATA[ASP连接11种数据库语法总结]]></title><author>glenluo</author><category>编程技术</category><pubDate>2010-3-9 21:16:02</pubDate><guid>http://www.030904.com/blog/blogview.asp?logID=985</guid><description><![CDATA[经常使用到有关数据库的操作。包括连接代码、SQL命令等等，又不曾刻意去记忆它们（我本人是不愿意去记这东东），所以常常在用到的时候又去查书本，翻来翻去。一些比较少用的数据库还不一定能顺利找到，所以现在把它们全归纳到这里，提供大家参考。&nbsp;&nbsp;<br><br><br>&lt;一&gt;数据库的连接方法：&nbsp;<br><br>　　1.Access数据库的DSN-less连接方法:&nbsp;<br><br>set&nbsp;adocon=Server.Createobject(&quot;adodb.connection&quot;)&nbsp;<br>adoconn.Open&quot;Driver={Microsoft&nbsp;Access&nbsp;Driver(*.mdb)};DBQ=&quot;&amp;&nbsp;_&nbsp;<br>Server.MapPath(&quot;数据库所在路径&quot;)&nbsp;<br><br>　　2.Access&nbsp;OLE&nbsp;DB连接方法：&nbsp;<br>set&nbsp;adocon=Server.Createobject(&quot;adodb.connection&quot;)&nbsp;<br>adocon.open&quot;Provider=Microsoft.Jet.OLEDB.4.0;&quot;&amp;&nbsp;_&nbsp;<br>&quot;Data&nbsp;Source=&quot;&nbsp;&amp;&nbsp;Server.MapPath(&quot;数据库所在路径&quot;)&nbsp;<br><br>　　3.SQL&nbsp;server连接方法：&nbsp;<br>set&nbsp;adocon=server.createobject(&quot;adodb.recordset&quot;)&nbsp;<br>adocon.Open&quot;Driver={SQL&nbsp;Server};Server=(Local);UID=***;PWD=***;&quot;&amp;&nbsp;_&nbsp;<br>&quot;database=数据库名;&quot;&nbsp;<br><br>　　4.SQL&nbsp;server&nbsp;OLE&nbsp;DB连接方法:&nbsp;<br>set&nbsp;adocon=Server.Createobject(&quot;adodb.connection&quot;)&nbsp;<br>adocon.open&quot;provider=SQLOLEDB.1;Data&nbsp;Source=RITANT4;&quot;&amp;&nbsp;_&nbsp;<br>&quot;user&nbsp;ID=***;Password=***;&quot;&amp;&nbsp;_&nbsp;<br>&quot;inital&nbsp;Catalog=数据库名&quot;&nbsp;<br><br>　5.Oracle&nbsp;连接方法:&nbsp;<br>set&nbsp;adocon=Server.Createobject(&quot;adodb.connection&quot;)&nbsp;<br>adocon.open&quot;Driver={microsoft&nbsp;odbc&nbsp;for&nbsp;oracle};server=oraclesever.world;uid=admin;pwd=pass;&quot;&nbsp;<br><br>　　6.Oracle&nbsp;OLE&nbsp;DB&nbsp;连接方法:&nbsp;<br>set&nbsp;adocon=Server.Createobject(&quot;adodb.connection&quot;)&nbsp;<br>adocon.open&quot;Provider=OraOLEDB.Oracle;data&nbsp;source=dbname;user&nbsp;id=admin;password=pass;&quot;&nbsp;<br><br>　　7.dBase&nbsp;连接方法:&nbsp;<br>set&nbsp;adocon=Server.Createobject(&quot;adodb.connection&quot;)&nbsp;<br>adocon.open&quot;Driver={microsoft&nbsp;dbase&nbsp;driver(*.dbf)};driverid=277;dbq=------------;&quot;&nbsp;<br><br>　　8.mySQL&nbsp;连接方法:&nbsp;<br>set&nbsp;adocon=Server.Createobject(&quot;adodb.connection&quot;)&nbsp;<br>adocon.open&quot;Driver={mysql};database=yourdatabase;&nbsp;<br>uid=username;pwd=yourpassword;option=16386;&quot;&nbsp;<br><br>　　9.Visual&nbsp;Foxpro&nbsp;连接方法:&nbsp;<br>set&nbsp;adocon=Server.Createobject(&quot;adodb.connection&quot;)&nbsp;<br>adocon.open&quot;Driver={microsoft&nbsp;Visual&nbsp;Foxpro&nbsp;driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;&quot;&nbsp;<br><br>　　10.MS&nbsp;text&nbsp;连接方法:&nbsp;<br>set&nbsp;adocon=Server.Createobject(&quot;adodb.connection&quot;)&nbsp;<br>adocon.open&quot;Driver={microsoft&nbsp;text&nbsp;driver(*.txt;&nbsp;*.csv)};dbq=-----;&quot;&amp;_&nbsp;<br>&quot;extensions=asc,csv,tab,txt;Persist&nbsp;SecurityInfo=false;&quot;&nbsp;<br><br>　　11.MS&nbsp;text&nbsp;OLE&nbsp;DB&nbsp;连接方法:&nbsp;<br>set&nbsp;adocon=Server.Createobject(&quot;adodb.connection&quot;)&nbsp;<br>adocon.open&quot;Provider=microsoft.jet.oledb.4.0;data&nbsp;source=your_path;&quot;&amp;_&nbsp;<br>&quot;Extended&nbsp;Properties&#39;text;FMT=Delimited&#39;&quot;&nbsp;<br><br>&lt;二&gt;常用的四种SQL命令：&nbsp;<br><br>　　1.查询数据记录(Select)&nbsp;<br>　　语法：Select&nbsp;字段串行&nbsp;From&nbsp;table&nbsp;Where&nbsp;字段=内容&nbsp;<br>　　例子：想从book表中找出作者为&quot;cancer&quot;的所有记录，SQL语句便如下：&nbsp;<br>select&nbsp;*&nbsp;from&nbsp;book&nbsp;where&nbsp;author=’cancer’&nbsp;<br><br>　　&quot;*&quot;是取出book表所有的字段，如查询的字段值为数字，则其后的&quot;内容&quot;便无须加上单引号，如是日期，则在Access中用(#)包括，而在SQL&nbsp;server中则用(’)包括，&nbsp;<br>如:&nbsp;<br>select&nbsp;*&nbsp;from&nbsp;book&nbsp;where&nbsp;id=1&nbsp;<br>select&nbsp;*&nbsp;from&nbsp;book&nbsp;where&nbsp;pub_date=#2002-1-7#&nbsp;(Access)&nbsp;<br>select&nbsp;*&nbsp;from&nbsp;book&nbsp;where&nbsp;pub_date=’2002-1-7’&nbsp;(SQL&nbsp;Server)&nbsp;<br><br>　　提示：&nbsp;<br>　　日期函数to_date不是标准sql文，不是所有的数据库适用，所以大家在使用的时候要参考数据库具体语法&nbsp;<br><br>　　另外如果是查询传入的变量，则如下：&nbsp;<br>strau=request.form(&quot;author&quot;)&nbsp;<br>strsql=&quot;select&nbsp;*&nbsp;from&nbsp;book&nbsp;where&nbsp;author=’&quot;&amp;strau&amp;&quot;’&quot;&nbsp;<br><br>　　如果查询的是数字，则：&nbsp;<br>intID=request.form(&quot;id&quot;)&nbsp;<br>strsql=&quot;select&nbsp;*&nbsp;from&nbsp;book&nbsp;where&nbsp;id=&quot;&amp;intID&nbsp;<br><br>　　在很多数据库中，如：oracle，上面的语句是可以写成：&nbsp;<br>strsql=&quot;select&nbsp;*&nbsp;from&nbsp;book&nbsp;where&nbsp;id=&#39;&quot;&amp;intID&amp;&quot;&#39;&quot;&nbsp;<br><br>　　但是字符型一定不能按照数字格式写，需要注意。&nbsp;<br>2.添加记录(Insert)&nbsp;<br>　　语法：&nbsp;<br>Insert&nbsp;into&nbsp;table(field1,field2,....)&nbsp;Values&nbsp;(value1,value2,....)&nbsp;<br><br>　　例子：添加一作者是&quot;cancer&quot;的记录入book表:&nbsp;<br>insert&nbsp;into&nbsp;book&nbsp;(bookno,author,bookname)&nbsp;values&nbsp;(’CF001’,’cancer’,’Cancer无组件上传程序’)&nbsp;<br><br>　　同样，如果用到变量就如下：&nbsp;<br>strno=request.form(&quot;bookno&quot;)&nbsp;<br>strau=request.form(&quot;author&quot;)&nbsp;<br>strname=request.form(&quot;bookname&quot;)&nbsp;<br>strsql=&quot;insert&nbsp;into&nbsp;book&nbsp;(bookno,author,bookname)&nbsp;values&nbsp;(’&quot;&amp;strno&amp;&quot;’,’&quot;&amp;strau&amp;&quot;’,’&quot;&amp;strname&amp;&quot;’)&quot;&nbsp;<br><br>　　3.用Recordset对象的Addnew插入数据的方法:&nbsp;<br>　　语法：&nbsp;<br>rs.addnew&nbsp;<br>rs(&quot;field1&quot;).value=value1&nbsp;<br>rs(&quot;field2&quot;).value=value2&nbsp;<br>...&nbsp;<br>rs.update&nbsp;<br><br>　　4.修改数据记录(Update)&nbsp;<br>　　语法：&nbsp;<br>update&nbsp;table&nbsp;set&nbsp;field1=value1,field2=value2,...where&nbsp;fieldx=valuex&nbsp;<br><br>　　例子：&nbsp;<br>update&nbsp;book&nbsp;set&nbsp;author=’babycrazy’&nbsp;where&nbsp;bookno=’CF001’&nbsp;<br><br>　　如果用到变量就如下：&nbsp;<br>strno=request.form(&quot;bookno&quot;)&nbsp;<br>strau=request.form(&quot;author&quot;)&nbsp;<br>strsql=&quot;update&nbsp;book&nbsp;set&nbsp;author=’&quot;&amp;strau&amp;&quot;’&nbsp;where&nbsp;bookno=’&quot;&amp;strno&quot;’&quot;&nbsp;<br>5.Recordset对象的Update方法:&nbsp;<br>　　语法：&nbsp;<br>rs(&quot;field1&quot;).value=value1&nbsp;<br>rs(&quot;field2&quot;).value=value2&nbsp;<br>...&nbsp;<br>rs.update&nbsp;<br><br>　　注意：使用语法3和语法5的时候，一定要注意字段的类型（尤其是日期型）一致，否则出错的几率非常的高。&nbsp;<br><br>　　例子：&nbsp;<br>strno=request.form(&quot;bookno&quot;)&nbsp;<br>strau=request.form(&quot;author&quot;)&nbsp;<br>set&nbsp;adocon=server.createobject(&quot;adodb.connection&quot;)&nbsp;<br>adocon.open&nbsp;&quot;Driver={Microsoft&nbsp;Access&nbsp;Driver(*.mdb)};DBQ=&quot;&nbsp;&amp;&nbsp;_&nbsp;<br>Server.Mappath=(&quot;/cancer/cancer.mdb&quot;)&nbsp;<br>strsql=&quot;select&nbsp;*&nbsp;from&nbsp;book&nbsp;where&nbsp;bookno=’&quot;&amp;strno&amp;&quot;’&quot;&nbsp;<br>set&nbsp;rs=server.createobject(&quot;adodb.recordset&quot;)&nbsp;<br>rs.open&nbsp;strsql,adconn,1,3&nbsp;<br>if&nbsp;not&nbsp;rs.eof&nbsp;then&nbsp;’如果有此记录的话&nbsp;<br>rs(&quot;author&quot;).value=strau&nbsp;<br>rs.update&nbsp;<br>end&nbsp;if&nbsp;<br>rs.close&nbsp;<br>set&nbsp;rs=nothing&nbsp;<br>adocon.close&nbsp;<br>set&nbsp;adocon=nothing&nbsp;<br><br>　　6.删除一条记录(Delete)&nbsp;<br>　　语法：&nbsp;<br>Delete&nbsp;table&nbsp;where&nbsp;field=value&nbsp;<br><br>　　例子：删除book表中作者是cancer的记录&nbsp;<br>delete&nbsp;book&nbsp;where&nbsp;author=’cancer’&nbsp;<br><br>　　(注意：如果book表中author字段的值为cancer的记录有多条，将会删除所有author为cancer的记录)&nbsp;<br><br>　　好了，学会了用这些操作，大家在用asp操作数据库的时候，该是没有什么问题了。]]></description></item><item><link>http://www.030904.com/blog/blogview.asp?logID=984</link><title><![CDATA[用于Asp的base64编码/解码函数]]></title><author>glenluo</author><category>编程技术</category><pubDate>2010-3-9 21:10:58</pubDate><guid>http://www.030904.com/blog/blogview.asp?logID=984</guid><description><![CDATA[网上很多关于base64编/解码的代码，找到的这个是最好的了，有个不尽人意的地方是--编/解码调用一堆函数，我给增加了2个函数用来编/解码,调用方法：<br>将第二段代码保存到base64.inc,在需要编码的页面将base64.inc包含进来，调用相应函数即可，例如<br>&lt;!--#include&nbsp;file=&quot;base64.inc&quot;--&gt;<br>&lt;%<br>&#39;---------------------------------------------------------------------------------<br>str=&quot;我爱你tandy&quot;<br>encodestr=encode64(str)&nbsp;&#39;编码<br>response.write&nbsp;encodestr&nbsp;&amp;&nbsp;&quot;&lt;hr&gt;&quot;<br>response.write&nbsp;decode64(encodestr)&nbsp;&amp;&nbsp;&quot;&lt;hr&gt;&quot;&nbsp;&#39;解码<br>%&gt;<br>代码段二：<br>&lt;%<br>sBASE_64_CHARACTERS&nbsp;=&nbsp;&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;<br>sBASE_64_CHARACTERS&nbsp;=&nbsp;strUnicode2Ansi(sBASE_64_CHARACTERS)<br><br>&#39;计算unicode字符串的Ansi编码的长度<br>Function&nbsp;strUnicodeLen(asContents)<br>&nbsp;&#39;计算unicode字符串的Ansi编码的长度<br>&nbsp;asContents1=&quot;a&quot;&amp;asContents<br>&nbsp;len1=len(asContents1)<br>&nbsp;k=0<br>&nbsp;for&nbsp;i=1&nbsp;to&nbsp;len1<br>&nbsp;&nbsp;asc1=asc(mid(asContents1,i,1))<br>&nbsp;&nbsp;if&nbsp;asc1&lt;0&nbsp;then&nbsp;asc1=65536+asc1<br>&nbsp;&nbsp;if&nbsp;asc1&gt;255&nbsp;then<br>&nbsp;&nbsp;&nbsp;k=k+2<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;k=k+1<br>&nbsp;&nbsp;end&nbsp;if<br>&nbsp;next<br>&nbsp;strUnicodeLen=k-1<br>End&nbsp;Function<br><br>&#39;将Unicode编码的字符串，转换成Ansi编码的字符串<br>Function&nbsp;strUnicode2Ansi(asContents)<br>&nbsp;&#39;将Unicode编码的字符串，转换成Ansi编码的字符串<br>&nbsp;strUnicode2Ansi=&quot;&quot;<br>&nbsp;len1=len(asContents)<br>&nbsp;for&nbsp;i=1&nbsp;to&nbsp;len1<br>&nbsp;&nbsp;varchar=mid(asContents,i,1)<br>&nbsp;&nbsp;varasc=asc(varchar)<br>&nbsp;&nbsp;if&nbsp;varasc&lt;0&nbsp;then&nbsp;varasc=varasc+65536<br>&nbsp;&nbsp;if&nbsp;varasc&gt;255&nbsp;then<br>&nbsp;&nbsp;&nbsp;varHex=Hex(varasc)<br>&nbsp;&nbsp;&nbsp;varlow=left(varHex,2)<br>&nbsp;&nbsp;&nbsp;varhigh=right(varHex,2)<br>&nbsp;&nbsp;&nbsp;strUnicode2Ansi=strUnicode2Ansi&nbsp;&amp;&nbsp;chrb(&quot;&amp;H&quot;&nbsp;&amp;&nbsp;varlow&nbsp;)&nbsp;&amp;&nbsp;chrb(&quot;&amp;H&quot;&nbsp;&amp;&nbsp;varhigh&nbsp;)<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;strUnicode2Ansi=strUnicode2Ansi&nbsp;&amp;&nbsp;chrb(varasc)<br>&nbsp;&nbsp;end&nbsp;if<br>&nbsp;next<br>End&nbsp;function<br><br>&#39;将Ansi编码的字符串，转换成Unicode编码的字符串<br>Function&nbsp;strAnsi2Unicode(asContents)<br>&nbsp;&#39;将Ansi编码的字符串，转换成Unicode编码的字符串<br>&nbsp;strAnsi2Unicode&nbsp;=&nbsp;&quot;&quot;<br>&nbsp;len1=lenb(asContents)<br>&nbsp;if&nbsp;len1=0&nbsp;then&nbsp;exit&nbsp;function<br>&nbsp;for&nbsp;i=1&nbsp;to&nbsp;len1<br>&nbsp;&nbsp;varchar=midb(asContents,i,1)<br>&nbsp;&nbsp;varasc=ascb(varchar)<br>&nbsp;&nbsp;if&nbsp;varasc&nbsp;&gt;&nbsp;127&nbsp;then<br>&nbsp;&nbsp;&nbsp;strAnsi2Unicode&nbsp;=&nbsp;strAnsi2Unicode&nbsp;&amp;&nbsp;chr(ascw(midb(asContents,i+1,1)&nbsp;&amp;&nbsp;varchar))<br>&nbsp;&nbsp;&nbsp;i=i+1<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;strAnsi2Unicode&nbsp;=&nbsp;strAnsi2Unicode&nbsp;&amp;&nbsp;chr(varasc)<br>&nbsp;&nbsp;end&nbsp;if<br>&nbsp;next<br>End&nbsp;function<br><br>&#39;将Ansi编码的字符串进行Base64编码<br>Function&nbsp;Base64encode(asContents)<br>&nbsp;&#39;将Ansi编码的字符串进行Base64编码<br>&nbsp;&#39;asContents应当是ANSI编码的字符串（二进制的字符串也可以）<br>&nbsp;Dim&nbsp;lnPosition<br>&nbsp;Dim&nbsp;lsResult<br>&nbsp;Dim&nbsp;Char1<br>&nbsp;Dim&nbsp;Char2<br>&nbsp;Dim&nbsp;Char3<br>&nbsp;Dim&nbsp;Char4<br>&nbsp;Dim&nbsp;Byte1<br>&nbsp;Dim&nbsp;Byte2<br>&nbsp;Dim&nbsp;Byte3<br>&nbsp;Dim&nbsp;SaveBits1<br>&nbsp;Dim&nbsp;SaveBits2<br>&nbsp;Dim&nbsp;lsGroupBinary<br>&nbsp;Dim&nbsp;lsGroup64<br>&nbsp;Dim&nbsp;m4,len1,len2<br><br>&nbsp;len1=Lenb(asContents)<br>&nbsp;if&nbsp;len1&lt;1&nbsp;then<br>&nbsp;&nbsp;Base64encode=&quot;&quot;<br>&nbsp;&nbsp;exit&nbsp;Function<br>&nbsp;end&nbsp;if<br><br>&nbsp;m3=Len1&nbsp;Mod&nbsp;3<br>&nbsp;If&nbsp;M3&nbsp;&gt;&nbsp;0&nbsp;Then&nbsp;asContents&nbsp;=&nbsp;asContents&nbsp;&amp;&nbsp;String(3-M3,&nbsp;chrb(0))<br>&nbsp;&#39;补足位数是为了便于计算<br>&nbsp;IF&nbsp;m3&nbsp;&gt;&nbsp;0&nbsp;THEN<br>&nbsp;&nbsp;len1=len1+(3-m3)<br>&nbsp;&nbsp;len2=len1-3<br>&nbsp;else<br>&nbsp;&nbsp;len2=len1<br>&nbsp;end&nbsp;if<br>&nbsp;lsResult&nbsp;=&nbsp;&quot;&quot;<br>&nbsp;For&nbsp;lnPosition&nbsp;=&nbsp;1&nbsp;To&nbsp;len2&nbsp;Step&nbsp;3<br>&nbsp;&nbsp;lsGroup64&nbsp;=&nbsp;&quot;&quot;<br>&nbsp;&nbsp;lsGroupBinary&nbsp;=&nbsp;Midb(asContents,&nbsp;lnPosition,&nbsp;3)<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;Byte1&nbsp;=&nbsp;Ascb(Midb(lsGroupBinary,&nbsp;1,&nbsp;1)):&nbsp;SaveBits1&nbsp;=&nbsp;Byte1&nbsp;And&nbsp;3<br>&nbsp;&nbsp;Byte2&nbsp;=&nbsp;Ascb(Midb(lsGroupBinary,&nbsp;2,&nbsp;1)):&nbsp;SaveBits2&nbsp;=&nbsp;Byte2&nbsp;And&nbsp;15<br>&nbsp;&nbsp;Byte3&nbsp;=&nbsp;Ascb(Midb(lsGroupBinary,&nbsp;3,&nbsp;1))<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;Char1&nbsp;=&nbsp;Midb(sBASE_64_CHARACTERS,&nbsp;((Byte1&nbsp;And&nbsp;252)&nbsp;\&nbsp;4)&nbsp;+&nbsp;1,&nbsp;1)<br>&nbsp;&nbsp;Char2&nbsp;=&nbsp;Midb(sBASE_64_CHARACTERS,&nbsp;(((Byte2&nbsp;And&nbsp;240)&nbsp;\&nbsp;16)&nbsp;Or&nbsp;(SaveBits1&nbsp;*&nbsp;16)&nbsp;And&nbsp;&amp;HFF)&nbsp;+&nbsp;1,&nbsp;1)<br>&nbsp;&nbsp;Char3&nbsp;=&nbsp;Midb(sBASE_64_CHARACTERS,&nbsp;(((Byte3&nbsp;And&nbsp;192)&nbsp;\&nbsp;64)&nbsp;Or&nbsp;(SaveBits2&nbsp;*&nbsp;4)&nbsp;And&nbsp;&amp;HFF)&nbsp;+&nbsp;1,&nbsp;1)<br>&nbsp;&nbsp;Char4&nbsp;=&nbsp;Midb(sBASE_64_CHARACTERS,&nbsp;(Byte3&nbsp;And&nbsp;63)&nbsp;+&nbsp;1,&nbsp;1)<br>&nbsp;&nbsp;lsGroup64&nbsp;=&nbsp;Char1&nbsp;&amp;&nbsp;Char2&nbsp;&amp;&nbsp;Char3&nbsp;&amp;&nbsp;Char4<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;lsResult&nbsp;=&nbsp;lsResult&nbsp;&amp;&nbsp;lsGroup64<br>&nbsp;Next<br>&nbsp;&nbsp;<br>&nbsp;&#39;处理最后剩余的几个字符<br>&nbsp;if&nbsp;M3&nbsp;&gt;&nbsp;0&nbsp;then<br>&nbsp;&nbsp;lsGroup64&nbsp;=&nbsp;&quot;&quot;<br>&nbsp;&nbsp;lsGroupBinary&nbsp;=&nbsp;Midb(asContents,&nbsp;len2+1,&nbsp;3)<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;Byte1&nbsp;=&nbsp;Ascb(Midb(lsGroupBinary,&nbsp;1,&nbsp;1)):&nbsp;SaveBits1&nbsp;=&nbsp;Byte1&nbsp;And&nbsp;3<br>&nbsp;&nbsp;Byte2&nbsp;=&nbsp;Ascb(Midb(lsGroupBinary,&nbsp;2,&nbsp;1)):&nbsp;SaveBits2&nbsp;=&nbsp;Byte2&nbsp;And&nbsp;15<br>&nbsp;&nbsp;Byte3&nbsp;=&nbsp;Ascb(Midb(lsGroupBinary,&nbsp;3,&nbsp;1))<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;Char1&nbsp;=&nbsp;Midb(sBASE_64_CHARACTERS,&nbsp;((Byte1&nbsp;And&nbsp;252)&nbsp;\&nbsp;4)&nbsp;+&nbsp;1,&nbsp;1)<br>&nbsp;&nbsp;Char2&nbsp;=&nbsp;Midb(sBASE_64_CHARACTERS,&nbsp;(((Byte2&nbsp;And&nbsp;240)&nbsp;\&nbsp;16)&nbsp;Or&nbsp;(SaveBits1&nbsp;*&nbsp;16)&nbsp;And&nbsp;&amp;HFF)&nbsp;+&nbsp;1,&nbsp;1)<br>&nbsp;&nbsp;Char3&nbsp;=&nbsp;Midb(sBASE_64_CHARACTERS,&nbsp;(((Byte3&nbsp;And&nbsp;192)&nbsp;\&nbsp;64)&nbsp;Or&nbsp;(SaveBits2&nbsp;*&nbsp;4)&nbsp;And&nbsp;&amp;HFF)&nbsp;+&nbsp;1,&nbsp;1)<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;if&nbsp;M3=1&nbsp;then<br>&nbsp;&nbsp;&nbsp;lsGroup64&nbsp;=&nbsp;Char1&nbsp;&amp;&nbsp;Char2&nbsp;&amp;&nbsp;ChrB(61)&nbsp;&amp;&nbsp;ChrB(61)&nbsp;&#39;用=号补足位数<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;lsGroup64&nbsp;=&nbsp;Char1&nbsp;&amp;&nbsp;Char2&nbsp;&amp;&nbsp;Char3&nbsp;&amp;&nbsp;ChrB(61)&nbsp;&#39;用=号补足位数<br>&nbsp;&nbsp;end&nbsp;if<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;lsResult&nbsp;=&nbsp;lsResult&nbsp;&amp;&nbsp;lsGroup64<br>&nbsp;end&nbsp;if<br>&nbsp;&nbsp;<br>&nbsp;Base64encode&nbsp;=&nbsp;lsResult&nbsp;&nbsp;<br>End&nbsp;Function<br><br>&#39;将Base64编码字符串转换成Ansi编码的字符串<br>Function&nbsp;Base64decode(asContents)<br>&nbsp;&#39;将Base64编码字符串转换成Ansi编码的字符串<br>&nbsp;&#39;asContents应当也是ANSI编码的字符串（二进制的字符串也可以）<br>&nbsp;Dim&nbsp;lsResult<br>&nbsp;Dim&nbsp;lnPosition<br>&nbsp;Dim&nbsp;lsGroup64,&nbsp;lsGroupBinary<br>&nbsp;Dim&nbsp;Char1,&nbsp;Char2,&nbsp;Char3,&nbsp;Char4<br>&nbsp;Dim&nbsp;Byte1,&nbsp;Byte2,&nbsp;Byte3<br>&nbsp;Dim&nbsp;M4,len1,len2<br>&nbsp;<br>&nbsp;len1=&nbsp;Lenb(asContents)<br>&nbsp;M4&nbsp;=&nbsp;len1&nbsp;Mod&nbsp;4<br>&nbsp;<br>&nbsp;if&nbsp;len1&nbsp;&lt;&nbsp;1&nbsp;or&nbsp;M4&nbsp;&gt;&nbsp;0&nbsp;then<br>&nbsp;&nbsp;&#39;字符串长度应当是4的倍数<br>&nbsp;&nbsp;Base64decode&nbsp;=&nbsp;&quot;&quot;<br>&nbsp;&nbsp;exit&nbsp;Function<br>&nbsp;end&nbsp;if<br><br>&nbsp;&#39;判断最后一位是不是&nbsp;=&nbsp;号<br>&nbsp;&#39;判断倒数第二位是不是&nbsp;=&nbsp;号<br>&nbsp;&#39;这里m4表示最后剩余的需要单独处理的字符个数<br>&nbsp;if&nbsp;midb(asContents,&nbsp;len1,&nbsp;1)&nbsp;=&nbsp;chrb(61)&nbsp;then&nbsp;m4=3<br>&nbsp;if&nbsp;midb(asContents,&nbsp;len1-1,&nbsp;1)&nbsp;=&nbsp;chrb(61)&nbsp;then&nbsp;m4=2<br>&nbsp;<br>&nbsp;if&nbsp;m4&nbsp;=&nbsp;0&nbsp;then<br>&nbsp;&nbsp;len2=len1<br>&nbsp;else<br>&nbsp;&nbsp;len2=len1-4<br>&nbsp;end&nbsp;if<br><br>&nbsp;For&nbsp;lnPosition&nbsp;=&nbsp;1&nbsp;To&nbsp;Len2&nbsp;Step&nbsp;4<br>&nbsp;&nbsp;lsGroupBinary&nbsp;=&nbsp;&quot;&quot;<br>&nbsp;&nbsp;lsGroup64&nbsp;=&nbsp;Midb(asContents,&nbsp;lnPosition,&nbsp;4)<br>&nbsp;&nbsp;Char1&nbsp;=&nbsp;InStrb(sBASE_64_CHARACTERS,&nbsp;Midb(lsGroup64,&nbsp;1,&nbsp;1))&nbsp;-&nbsp;1<br>&nbsp;&nbsp;Char2&nbsp;=&nbsp;InStrb(sBASE_64_CHARACTERS,&nbsp;Midb(lsGroup64,&nbsp;2,&nbsp;1))&nbsp;-&nbsp;1<br>&nbsp;&nbsp;Char3&nbsp;=&nbsp;InStrb(sBASE_64_CHARACTERS,&nbsp;Midb(lsGroup64,&nbsp;3,&nbsp;1))&nbsp;-&nbsp;1<br>&nbsp;&nbsp;Char4&nbsp;=&nbsp;InStrb(sBASE_64_CHARACTERS,&nbsp;Midb(lsGroup64,&nbsp;4,&nbsp;1))&nbsp;-&nbsp;1<br>&nbsp;&nbsp;Byte1&nbsp;=&nbsp;Chrb(((Char2&nbsp;And&nbsp;48)&nbsp;\&nbsp;16)&nbsp;Or&nbsp;(Char1&nbsp;*&nbsp;4)&nbsp;And&nbsp;&amp;HFF)<br>&nbsp;&nbsp;Byte2&nbsp;=&nbsp;lsGroupBinary&nbsp;&amp;&nbsp;Chrb(((Char3&nbsp;And&nbsp;60)&nbsp;\&nbsp;4)&nbsp;Or&nbsp;(Char2&nbsp;*&nbsp;16)&nbsp;And&nbsp;&amp;HFF)<br>&nbsp;&nbsp;Byte3&nbsp;=&nbsp;Chrb((((Char3&nbsp;And&nbsp;3)&nbsp;*&nbsp;64)&nbsp;And&nbsp;&amp;HFF)&nbsp;Or&nbsp;(Char4&nbsp;And&nbsp;63))<br>&nbsp;&nbsp;lsGroupBinary&nbsp;=&nbsp;Byte1&nbsp;&amp;&nbsp;Byte2&nbsp;&amp;&nbsp;Byte3<br><br>&nbsp;&nbsp;lsResult&nbsp;=&nbsp;lsResult&nbsp;&amp;&nbsp;lsGroupBinary<br>&nbsp;Next<br><br>&nbsp;&#39;处理最后剩余的几个字符<br>&nbsp;if&nbsp;M4&nbsp;&gt;&nbsp;0&nbsp;then<br>&nbsp;&nbsp;lsGroupBinary&nbsp;=&nbsp;&quot;&quot;<br>&nbsp;&nbsp;lsGroup64&nbsp;=&nbsp;Midb(asContents,&nbsp;len2+1,&nbsp;m4)&nbsp;&amp;&nbsp;chrB(65)&nbsp;&#39;chr(65)=A，转换成值为0<br>&nbsp;&nbsp;if&nbsp;M4=2&nbsp;then&nbsp;&#39;补足4位，是为了便于计算<br>&nbsp;&nbsp;&nbsp;lsGroup64&nbsp;=&nbsp;lsGroup64&nbsp;&amp;&nbsp;chrB(65)<br>&nbsp;&nbsp;end&nbsp;if<br>&nbsp;&nbsp;Char1&nbsp;=&nbsp;InStrb(sBASE_64_CHARACTERS,&nbsp;Midb(lsGroup64,&nbsp;1,&nbsp;1))&nbsp;-&nbsp;1<br>&nbsp;&nbsp;Char2&nbsp;=&nbsp;InStrb(sBASE_64_CHARACTERS,&nbsp;Midb(lsGroup64,&nbsp;2,&nbsp;1))&nbsp;-&nbsp;1<br>&nbsp;&nbsp;Char3&nbsp;=&nbsp;InStrb(sBASE_64_CHARACTERS,&nbsp;Midb(lsGroup64,&nbsp;3,&nbsp;1))&nbsp;-&nbsp;1<br>&nbsp;&nbsp;Char4&nbsp;=&nbsp;InStrb(sBASE_64_CHARACTERS,&nbsp;Midb(lsGroup64,&nbsp;4,&nbsp;1))&nbsp;-&nbsp;1<br>&nbsp;&nbsp;Byte1&nbsp;=&nbsp;Chrb(((Char2&nbsp;And&nbsp;48)&nbsp;\&nbsp;16)&nbsp;Or&nbsp;(Char1&nbsp;*&nbsp;4)&nbsp;And&nbsp;&amp;HFF)<br>&nbsp;&nbsp;Byte2&nbsp;=&nbsp;lsGroupBinary&nbsp;&amp;&nbsp;Chrb(((Char3&nbsp;And&nbsp;60)&nbsp;\&nbsp;4)&nbsp;Or&nbsp;(Char2&nbsp;*&nbsp;16)&nbsp;And&nbsp;&amp;HFF)<br>&nbsp;&nbsp;Byte3&nbsp;=&nbsp;Chrb((((Char3&nbsp;And&nbsp;3)&nbsp;*&nbsp;64)&nbsp;And&nbsp;&amp;HFF)&nbsp;Or&nbsp;(Char4&nbsp;And&nbsp;63))<br><br>&nbsp;&nbsp;if&nbsp;M4=2&nbsp;then<br>&nbsp;&nbsp;&nbsp;lsGroupBinary&nbsp;=&nbsp;Byte1<br>&nbsp;&nbsp;elseif&nbsp;M4=3&nbsp;then<br>&nbsp;&nbsp;&nbsp;lsGroupBinary&nbsp;=&nbsp;Byte1&nbsp;&amp;&nbsp;Byte2<br>&nbsp;&nbsp;end&nbsp;if<br><br>&nbsp;&nbsp;lsResult&nbsp;=&nbsp;lsResult&nbsp;&amp;&nbsp;lsGroupBinary<br>&nbsp;end&nbsp;if<br><br>&nbsp;Base64decode&nbsp;=&nbsp;lsResult<br><br>End&nbsp;Function<br><br>function&nbsp;encode64(byval&nbsp;str)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;encode64=strAnsi2Unicode(Base64encode(strUnicode2Ansi(str)))<br>end&nbsp;function<br><br>function&nbsp;decode64(byval&nbsp;str)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decode64=strAnsi2Unicode(Base64decode(strUnicode2Ansi(str)))<br>end&nbsp;function<br>%&gt;]]></description></item><item><link>http://www.030904.com/blog/blogview.asp?logID=983</link><title><![CDATA[XMLHTTP和ServerXMLHTTP 超时的判断]]></title><author>glenluo</author><category>编程技术</category><pubDate>2010-3-9 21:06:05</pubDate><guid>http://www.030904.com/blog/blogview.asp?logID=983</guid><description><![CDATA[XMLHTTP我想大家都知道是用过，很熟悉吧，&nbsp;<br>一些小偷程序都用他，用他来抓个远程网页什么的很方便。&nbsp;<br><br>但是！！！&nbsp;<br><br>很少有人知道XMLHTTP是用于客户端的，&nbsp;<br><br>不知道是什么时候起，流行网络小偷程序，而这个XMLHTTP也开始被很多ASP爱好者所认识。&nbsp;<br><br>但是几乎所有人都一至的认为XMLHTTP是ASP中唯一获取远程连接的方案。&nbsp;<br><br>于是大家都用它，弄到最后，流量一大IIS就会罢工，最轻的也是打不开ASP页面，但是HTML页面可以打开，于是就查呀查呀，却总也查不到原因。&nbsp;<br><br>其实问题就在XMLHTTP上面，&nbsp;<br><br>XMLHTTP不是用于服务端的，XMLHTTP只适用于客户端，当然服务端也可以调用这个组件，但是这个组件是一个很危险的组件。他会在连接网络失败的情况下导致IIS罢工，流量小的时候没什么反应，流量一大，必然会出问题。&nbsp;<br><br>与XMLHTTP相比，ServerXMLHTTP稍好一些，但是同样，这个家伙也不是什么好东西，弄不好的话，也会和XMLHTTP一样。&nbsp;<br><br>但是ServerXMLHTTP有一个SetTimeOuts方法，通过SetTimeOuts方法可以设置超时，一旦网络连接超时，就断开连接，如果你不设置超时，那你的IIS很有可能就此罢工了。&nbsp;<br><br>具体的应用，我给出一段代码大家看看。&nbsp;<br><br><br>Set&nbsp;objXml&nbsp;=Server.CreateObject(&quot;MSXML2.ServerXMLHTTP&quot;)&nbsp;<br>objXml.SetTimeOuts&nbsp;10000,&nbsp;10000,&nbsp;15000,&nbsp;15000&nbsp;<br><br>第一个数值：解析DNS名字的超时时间10秒&nbsp;<br>第二个数值：建立Winsock连接的超时时间10秒&nbsp;<br>第三个数值：发送数据的超时时间15秒&nbsp;<br>第四个数值：接收response的超时时间15秒&nbsp;<br><br><br>这个问题也曾一度困扰着我，后来也是遍历资料才找到答案的。&nbsp;<br><br>希望大家引以为戒，不要小看他的杀伤力噢，弄不好你的IIS就会罢工的，&nbsp;<br><br>再有，有条件的话，建议大家学学PHP吧，我也在学习中，买了书看了一半了，&nbsp;<br><br>不过有很多地方不太容易理解，ASP现在越来越觉得不够用了，.Net那东西看起来好像比PHP还要麻烦。]]></description></item><item><link>http://www.030904.com/blog/blogview.asp?logID=982</link><title><![CDATA[301永久重定向]]></title><author>glenluo</author><category>编程技术</category><pubDate>2010-3-9 21:02:03</pubDate><guid>http://www.030904.com/blog/blogview.asp?logID=982</guid><description><![CDATA[所谓301永久重定向(或叫301转向，301跳转)，是指当用户或搜索引擎向网站服务器发出浏览请求时，服务器返回的HTTP数据流中头信息(header)中的状态码的一种，表示本网页永久性转移到另一个地址。<br>&nbsp;&nbsp;&nbsp;&nbsp;对于搜索引擎优化（SEO）来说，给搜索引擎一个友好的信息，告诉它此页面已永久重定向，避免搜索引擎找不到页面。这对于网站的SEO是很重要的，因为301永久重定向对SEO无任何不好的影响！而且原域名的关键词排名和PR级别都会传达给新域名！<br>&nbsp;&nbsp;&nbsp;&nbsp;下面是我在本次域名迁移中所做的工作，其实很简单：<br>&nbsp;&nbsp;&nbsp;&nbsp;1.将原域名解析到另外一个空间，将这个空间的404错误页设置为/404.asp,其中404.asp放在根目录，其内容如下（请将里面的玉米换成自己相应的原玉米和新玉米）<br><script type="text/javascript">window.attachEvent("onload",function (){AutoSizeDIV('CODE_7643')})</script><table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="code_head"><tr><td>程序代码：</td><td align="right"><a href="javascript:CopyText(document.all.CODE_7643);">[ 复制代码到剪贴板 ]</a> </td></tr></table><div class="code_main" id="CODE_7643" style="overflow-y:auto;overflow-x:hidden;height:150px;">&lt;%<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;Str<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Str&nbsp;=&nbsp;lcase(request.QueryString())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;replace(Str,&quot;404;&quot;,&quot;&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;replace(Str,&quot;:80&quot;,&quot;&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;replace(Str,&quot;www.web.cn&quot;,&quot;www.newweb.cn&quot;)&nbsp;&#39;www.web.cn是原玉米<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;replace(Str,&quot;web.cn&quot;,&quot;newweb.cn&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newweb.cn是新玉米<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Status=&quot;301&nbsp;Moved&nbsp;Permanently&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;设置301状态<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.AddHeader&nbsp;&quot;Location&quot;,str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;设置要转向的地址<br>%&gt;<br></div><br><br>&nbsp;2.同时，在这个空间放一个default.asp,其内容如下<br><br><script type="text/javascript">window.attachEvent("onload",function (){AutoSizeDIV('CODE_6266')})</script><table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="code_head"><tr><td>程序代码：</td><td align="right"><a href="javascript:CopyText(document.all.CODE_6266);">[ 复制代码到剪贴板 ]</a> </td></tr></table><div class="code_main" id="CODE_6266" style="overflow-y:auto;overflow-x:hidden;height:150px;">&lt;%<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Status=&quot;301&nbsp;Moved&nbsp;Permanently&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;设置状态<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.AddHeader&nbsp;&quot;Location&quot;,&nbsp;&quot;http://www.newweb.cn/&quot;&nbsp;&nbsp;&nbsp;&#39;设置首页的转移地址<br>%&gt;<br></div><br>&nbsp;&nbsp;&nbsp;3.说明一点，放404.asp的作用就是：用原域名访问网站的时候，除了默认首页（default.asp）外，其他的页面都会转到404.asp处理，因此在404.asp集中处理就好了，至于404.asp所包含的内容我以前在一篇关于404伪静态的文章中详细说明了<br>&nbsp;&nbsp;&nbsp;4.301适用于只换域名不换网站结构的情况，如果你的网站结构同样发生了较大的变化，那就把404.asp里面的所有页面都直接转向新域名的首页。<br>&nbsp;&nbsp;&nbsp;5.对于网站结构发生变化的情况，还有一种特殊状态，如果你原网站结构和新网站结构对应关系比较明确，完全可以在404.asp里面进行处理，然后301永久重定向到新地址。例如，你原网站的有篇文章的地址是http://XXX/article.asp?id=123,新网站中使用了静态地址，例如http://zzz/article/123.html,那么在404.asp页面匹配http://XXX/article.asp?id=123，取出id后生成新地址，并转向。<br>&nbsp;&nbsp;&nbsp;6.当然，最重要的一点，你的新域名要解析到新网站。<br><br>&nbsp;&nbsp;&nbsp;在转移的过程中，尽量让全部的地址都转移到新网站，最小工作量的情况就是利用404错误页，进行集中转向。<br>&nbsp;&nbsp;&nbsp;希望换域名的站长们在这“和谐时代”，能完美切换域名。]]></description></item><item><link>http://www.030904.com/blog/blogview.asp?logID=981</link><title><![CDATA[ASP禁止刷新当前页]]></title><author>glenluo</author><category>编程技术</category><pubDate>2010-3-9 20:58:26</pubDate><guid>http://www.030904.com/blog/blogview.asp?logID=981</guid><description><![CDATA[方法1:&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;代码：<br><br>&lt;%&nbsp;<br>Dim&nbsp;SplitReflashPage&nbsp;<br>Dim&nbsp;DoReflashPage&nbsp;<br>dim&nbsp;shuaxin_time&nbsp;<br>DoReflashPage=true&nbsp;<br>shuaxin_time=10&nbsp;<br>ReflashTime=Now()&nbsp;<br>if&nbsp;(not&nbsp;isnull(session(&quot;ReflashTime&quot;)))&nbsp;and&nbsp;cint(shuaxin_time)&gt;0&nbsp;and&nbsp;DoReflashPage&nbsp;then&nbsp;<br>if&nbsp;DateDiff(&quot;s&quot;,session(&quot;ReflashTime&quot;),Now())response.write&nbsp;&quot;本页面起用了防刷新机制，请不要在&quot;&amp;shuaxin_time&amp;&quot;秒内连续刷新本页面<br>正在打开页面，请稍候……&quot;&nbsp;<br>response.end&nbsp;<br>else&nbsp;<br>session(&quot;ReflashTime&quot;)=Now()&nbsp;<br>end&nbsp;if&nbsp;<br>elseif&nbsp;isnull(session(&quot;ReflashTime&quot;))&nbsp;and&nbsp;cint(shuaxin_time)&gt;0&nbsp;and&nbsp;DoReflashPage&nbsp;then&nbsp;<br>Session(&quot;ReflashTime&quot;)=Now()&nbsp;<br>end&nbsp;if&nbsp;<br>randomize&nbsp;timer&nbsp;<br>regjm=int(rnd*8998)+1000&nbsp;&nbsp;<br><br>方法2:&nbsp;<br><br>代码：<br>&lt;%&nbsp;<br>Dim&nbsp;URL&nbsp;<br>If&nbsp;DateDiff(&quot;s&quot;,Request.Cookies(&quot;oesun&quot;)(&quot;vitistime&quot;),Now())&lt;2&nbsp;Then&nbsp;<br>URL=Request.ServerVariables(&quot;Http_REFERER&quot;)&nbsp;<br>Response.Write(&quot;&quot;)&nbsp;<br>Response.Write(&quot;防刷新,两秒后自动跳转&quot;)&nbsp;<br>Response.End&nbsp;<br>End&nbsp;IF&nbsp;<br>Response.Cookies(&quot;oesun&quot;)(&quot;vitistime&quot;)=Now()&nbsp;<br>%&gt;&nbsp;<br><br>]]></description></item><item><link>http://www.030904.com/blog/blogview.asp?logID=980</link><title><![CDATA[ASP获得当前页面地址的方法]]></title><author>glenluo</author><category>编程技术</category><pubDate>2010-3-9 20:57:40</pubDate><guid>http://www.030904.com/blog/blogview.asp?logID=980</guid><description><![CDATA[这种方法是获得页面的完整路径，虽然说是ASP，实际上还是用JS获取的。<br><br>&lt;%&nbsp;<br>url=trim(&quot;&lt;script&nbsp;language=javascript&gt;document.write(location.href)&lt;/script&gt;&quot;)&nbsp;<br>response.Write(url)&nbsp;<br>%&gt;<br><br>下面的这种方法获得所在的目录及文件名<br><br>&lt;%<br>url=Ucase(Request.ServerVariables(&quot;PATH_INFO&quot;))<br>response.Write&nbsp;(url)<br>%&gt;<br><br>]]></description></item>
</channel>
</rss>