<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[21 工作室 - asp]]></title>
<link>http://www.is21.cn/</link>
<description><![CDATA[本站承接网页制作、软件项目开发、代写代码等业务，我们将和您真诚合作，以最低的价格提供最优越的服务。13488846575   联系人:潘劲]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[lianxiangpanjin@163.com(潘劲)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>21 工作室</title> 
	<url>http://www.is21.cn/images/logos.gif</url> 
	<link>http://www.is21.cn/</link> 
	<description>21 工作室</description> 
</image>

			<item>
			<link>http://www.is21.cn/default.asp?id=777</link>
			<title><![CDATA[虚拟主机支持WAP]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[asp]]></category>
			<pubDate>Sun,15 Jul 2012 22:36:12 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=777</guid>	
		<description><![CDATA[请先登录管理中心&gt;业务管理&gt;虚拟主机&gt;管理&gt;更多高级功能&gt;MIME设置&nbsp;<br/><br/>添加如下MIME类型即可。&nbsp;<br/><br/>·WML&nbsp;text/vnd.WAP.wml&nbsp;<br/><br/>·WMLC&nbsp;application/vnd.WAP.wmlc&nbsp;<br/><br/>·WMLS&nbsp;text/vnd.WAP.wmlscript&nbsp;<br/><br/>·WMLSC&nbsp;application/vnd.WAP.wmlscriptc&nbsp;<br/><br/>·WBMP&nbsp;image/vnd.WAP.wbmp&nbsp;<br/><br/>----------------------------------------------------------------&nbsp;<br/>例入：扩展名输入：·WML&nbsp;，&nbsp;MIME类型&nbsp;输入：text/vnd.WAP.wml&nbsp;<br/><br/><br/>同理，比如.dwt是模板格式，默认情况下win2003虚拟主机不支持，可以通过设置mime设其支持，设置格式是：&nbsp;<br/>扩展名：&nbsp;.dwt&nbsp;MIME类型&nbsp;输入：application/octet-stream<br/><br/>&#34;引用<a href="http://www.xkzzz.com/zz/webyy/zzjs/200812/17-6377.html" target="_blank">http://www.xkzzz.com/zz/webyy/zzjs/200812/17-6377.html</a>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=748</link>
			<title><![CDATA[iis7设置]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[asp]]></category>
			<pubDate>Thu,12 May 2011 01:24:55 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=748</guid>	
		<description><![CDATA[1.An&nbsp;error&nbsp;occurred&nbsp;on&nbsp;the&nbsp;server&nbsp;when&nbsp;processing&nbsp;th<br/>iis&nbsp;7中，iis中，asp中，调试属性，将错误发到浏览器<br/>2.下面几行，启用父目录<br/>3.打开IIS管理器--双击“IIS”中的“ASP”--&nbsp;打开“行为”--展开“限制属性”；<br/>修改“最大请求实体主体限制”的值，默认值为200000（即不到200KB）；<br/>把它修改为你想修改的大小，如：52000000（50MB）<br/><br/><br/>4.iis7默认不带asp&nbsp;asp.net&nbsp;<br/>报错&nbsp;&nbsp;&nbsp;404.3&nbsp;-&nbsp;Not&nbsp;Found<br/>模块&#160;&#160;&#160;&#160;StaticFileModule<br/>通知&#160;&#160;&#160;&#160;ExecuteRequestHandler<br/>处理程序&#160;&#160;&#160;&#160;StaticFile<br/>错误代码&#160;&#160;&#160;&#160;0x80070032<br/>于没装全，控制面板，程序，左边“打开或关闭windows功能”<br/><img src="http://www.is21.cn/attachments/month_1106/o201161519101.jpg" border="0" alt=""/><br/><br/>5&nbsp;安装完iis后，启用一些组件<br/><br/><img src="http://www.is21.cn/attachments/month_1106/y2011615192149.jpg" border="0" alt=""/><br/><br/>6.如果是64位操作系统，需要设置：（不设置后操作数据库时特别慢）<br/>左边应用程序池-&gt;&nbsp;defaultappPool-&gt;高级设置-&gt;常规-&gt;启用32位应用程序-&gt;true<br/><br/><br/>------------------------------------------------------<br/>windows7&nbsp;下&nbsp;&nbsp;Microsoft&nbsp;JET&nbsp;Database&nbsp;Engine&nbsp;(0x80004005)<br/>打开数据库的同时，系统会在临时文件夹&nbsp;%SystemRoot%/temp/&nbsp;下创建临时文件，而&nbsp;%<br/>SystemRoot%/temp/&nbsp;的权限不够<br/>解决：%SystemRoot%/temp/&nbsp;的权限加上(IUSER_电脑名的读写)]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=699</link>
			<title><![CDATA[国外空间上传图片问题]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[asp]]></category>
			<pubDate>Sun,02 Aug 2009 20:47:40 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=699</guid>	
		<description><![CDATA[1.改&nbsp;chr&nbsp;&nbsp;-&gt;&nbsp;chrw<br/><br/>2.因为国外时间显示格式与国内不一致,所以改上传文件名&nbsp;&nbsp;要过滤&nbsp;&nbsp;&#34;/&#39;&nbsp;&nbsp;号<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=685</link>
			<title><![CDATA[ASP无组件上传图片的源代码]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[asp]]></category>
			<pubDate>Fri,15 May 2009 17:06:07 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=685</guid>	
		<description><![CDATA[&lt;!--#include&nbsp;file=&#34;upload_5xsoft.inc&#34;--&gt;<br/>&lt;%<br/>Set&nbsp;conn=Server.Cr&#101;ateObject(&#34;Adodb.Connection&#34;)<br/>connstr=&#34;Provider=Microsoft.Jet.OLEDB.4.0;Data&nbsp;Source=&#34;&amp;&nbsp;Server.MapPath(&#34;db.mdb&#34;)<br/>conn.open&nbsp;connstr<br/>&#39;----------------------------------------<br/>function&nbsp;getextendname(filename)<br/>&nbsp;extname=lcase(filename)<br/>&nbsp;extname=right(extname,3)<br/>&nbsp;extname=right(extname,3-instr(extname,&#34;.&#34;))<br/>&nbsp;getextendname=extname<br/>end&nbsp;function<br/>&#39;---------------------------------------------------<br/><br/>&#39;-------------------------------------------------------<br/>function&nbsp;filename()<br/>&nbsp;filename=now()<br/>&nbsp;filename=replace(filename,&#34;-&#34;,&#34;&#34;)<br/>&nbsp;filename=replace(filename,&#34;:&#34;,&#34;&#34;)<br/>&nbsp;filename=replace(filename,&#34;&nbsp;&#34;,&#34;&#34;)<br/>&nbsp;filename=filename<br/>end&nbsp;function<br/>&#39;----------------------------------------------------------<br/><br/>&#39;-------------------------------------------------------------------<br/>set&nbsp;upload=new&nbsp;upload_5xsoft<br/><br/>set&nbsp;upfile=upload.file(&#34;files&#34;)<br/>title=upload.form(&#34;t1&#34;)<br/>info=upload.form(&#34;t2&#34;)<br/><br/>if&nbsp;upfile.filesize&gt;0&nbsp;and&nbsp;upfile.filename&lt;&gt;&#34;&#34;&nbsp;then<br/>&nbsp;if&nbsp;instr(&#34;jpg,bmp,gif&#34;,getextendname(upfile.filename))&gt;0&nbsp;then<br/>&nbsp;&nbsp;if&nbsp;upfile.filesize&lt;204800&nbsp;then<br/>&nbsp;&nbsp;&nbsp;fname=filename&amp;&#34;.&#34;&amp;getextendname(upfile.filename)<br/>&nbsp;&nbsp;&nbsp;upfile.saveas&nbsp;server.mappath(&#34;pic/&#34;&amp;fname)<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;sql=&#34;ins&#101;rt&nbsp;into&nbsp;img&nbsp;(title,info,imgpath)values(&#39;&#34;+&nbsp;title&nbsp;+&#34;&#39;,&#39;&#34;+&nbsp;info&nbsp;+&#34;&#39;,&#39;&#34;+&nbsp;fname&nbsp;+&#34;&#39;)&#34;<br/>&nbsp;&nbsp;&nbsp;conn.Execute&nbsp;sql<br/>&nbsp;&nbsp;&nbsp;conn.close<br/>&nbsp;&nbsp;response.write&nbsp;&#34;&lt;script&gt;alert(&#39;添加图片成功！&#39;);top.location.href=&#39;index.asp&#39;;&lt;/script&gt;&#34;<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;response.write&nbsp;&#34;&lt;script&nbsp;language=&#39;javascript&#39;&gt;&nbsp;alert(&#39;文件上传失败,大小超过了200K!&#39;);history.back();&nbsp;&lt;/script&gt;&#34;<br/>&nbsp;&nbsp;end&nbsp;if<br/>&nbsp;else<br/>&nbsp;&nbsp;response.write&nbsp;&#34;&lt;script&nbsp;language=&#39;javascript&#39;&gt;&nbsp;alert(&#39;文件上传失败,其不为图片格式!&#39;);history.back();&nbsp;&lt;/script&gt;&#34;<br/>&nbsp;end&nbsp;if<br/>end&nbsp;if<br/>&#39;--------------------------------------------------------<br/><br/><br/><br/>&#39;引用自<a href="http://www.jscode.cn/arthtml/art4459.htm" target="_blank">http://www.jscode.cn/arthtml/art4459.htm</a>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=683</link>
			<title><![CDATA[asp打包类]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[asp]]></category>
			<pubDate>Fri,15 May 2009 17:04:28 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=683</guid>	
		<description><![CDATA[&lt;%<br/>On&nbsp;Error&nbsp;Resume&nbsp;Next<br/>Dim&nbsp;r<br/>Set&nbsp;r&nbsp;=&nbsp;New&nbsp;Rar<br/><br/>r.Add&nbsp;Server.MapPath(&#34;a.gIf&#34;)<br/>r.Add&nbsp;Server.MapPath(&#34;a.txt&#34;)<br/>r.Add&nbsp;Server.MapPath(&#34;test&#34;)<br/>r.Add&nbsp;Server.MapPath(&#34;file.asp&#34;)<br/>r.packname&nbsp;=&nbsp;Server.MapPath(&#34;xxx.dat&#34;)<br/>r.Pack<br/>r.rootpath&nbsp;=&nbsp;Server.MapPath(&#34;xxx&#34;)<br/>r.packname&nbsp;=&nbsp;Server.MapPath(&#34;xxx.dat&#34;)<br/>r.UnPack<br/><br/>Response.Write(Err.Description)<br/>Set&nbsp;r&nbsp;=&nbsp;Nothing<br/>%&gt;<br/>&lt;script&nbsp;Language=&#34;Vbscript&#34;&nbsp;Runat=&#34;server&#34;&gt;<br/>&#39;-----------------------------------------------------<br/>&#39;&nbsp;描述:&nbsp;Asp打包类<br/>&#39;&nbsp;作者:&nbsp;小灰(quxiaohui_0@163.com)<br/>&#39;&nbsp;链接:&nbsp;<a href="http://asp2004.net" target="_blank">http://asp2004.net</a>&nbsp;<a href="http://blog.csdn.net/iuhxq" target="_blank">http://blog.csdn.net/iuhxq</a>&nbsp;<a href="http://bbs.asp2004.net" target="_blank">http://bbs.asp2004.net</a><br/>&#39;&nbsp;版本:&nbsp;1.0&nbsp;Beta<br/>&#39;&nbsp;版权:&nbsp;本作品可免费使用，但是请勿移除版权信息<br/>&#39;-----------------------------------------------------<br/>Class&nbsp;Rar<br/>&nbsp;Dim&nbsp;files,packname,s,s1,s2,rootpath,fso,f,buf<br/>&nbsp;Private&nbsp;Sub&nbsp;Class_Initialize<br/>&nbsp;&nbsp;Randomize<br/>&nbsp;&nbsp;Dim&nbsp;ranNum<br/>&nbsp;&nbsp;ranNum&nbsp;=&nbsp;Int(90000&nbsp;*&nbsp;Rnd)&nbsp;+&nbsp;10000<br/>&nbsp;&nbsp;packname&nbsp;=&nbsp;Year(Now)&amp;Month(Now)&amp;Day(Now)&amp;Hour(Now)&amp;Minute(Now)&amp;Second(Now)&amp;ranNum&amp;&#34;.asp2004&#34;<br/><br/>&nbsp;&nbsp;rootpath&nbsp;=&nbsp;Server.MapPath(&#34;./&#34;)<br/><br/>&nbsp;&nbsp;Set&nbsp;files&nbsp;=&nbsp;server.Cr&#101;ateObject(&#34;Scripting.Dictionary&#34;)<br/>&nbsp;&nbsp;Set&nbsp;fso&nbsp;=&nbsp;Server.Cr&#101;ateObject(&#34;Scripting.FileSystemObject&#34;)<br/><br/>&nbsp;&nbsp;Set&nbsp;s&nbsp;=&nbsp;server.Cr&#101;ateObject(&#34;ADODB.Stream&#34;):s.Open:s.Type&nbsp;=&nbsp;1<br/>&nbsp;&nbsp;Set&nbsp;s1&nbsp;=&nbsp;server.Cr&#101;ateObject(&#34;ADODB.Stream&#34;):s1.Open:s1.Type&nbsp;=&nbsp;1<br/>&nbsp;&nbsp;Set&nbsp;s2&nbsp;=&nbsp;server.Cr&#101;ateObject(&#34;ADODB.Stream&#34;):s2.Open:s2.Type&nbsp;=&nbsp;2<br/>&nbsp;End&nbsp;Sub<br/><br/>&nbsp;Private&nbsp;Sub&nbsp;Class_Terminate<br/>&nbsp;&nbsp;s.Close:Set&nbsp;s&nbsp;=&nbsp;Nothing<br/>&nbsp;&nbsp;s1.Close:Set&nbsp;s1&nbsp;=&nbsp;Nothing<br/>&nbsp;&nbsp;s2.Close:Set&nbsp;s2&nbsp;=&nbsp;Nothing<br/><br/>&nbsp;&nbsp;Set&nbsp;fso&nbsp;=&nbsp;Nothing<br/>&nbsp;End&nbsp;Sub<br/><br/>&nbsp;Public&nbsp;Sub&nbsp;Add(obj)<br/>&nbsp;&nbsp;If&nbsp;fso.FileExists(obj)&nbsp;Then<br/>&nbsp;&nbsp;&nbsp;Set&nbsp;f&nbsp;=&nbsp;fso.GetFile(obj)<br/>&nbsp;&nbsp;&nbsp;files.Add&nbsp;obj,f.Size<br/>&nbsp;&nbsp;ElseIf&nbsp;fso.FolderExists(obj)&nbsp;Then<br/>&nbsp;&nbsp;&nbsp;files.Add&nbsp;obj,-1<br/>&nbsp;&nbsp;&nbsp;Set&nbsp;f&nbsp;=&nbsp;fso.GetFolder(obj)<br/>&nbsp;&nbsp;&nbsp;Set&nbsp;fc&nbsp;=&nbsp;f.Files<br/>&nbsp;&nbsp;&nbsp;For&nbsp;Each&nbsp;f1&nbsp;in&nbsp;fc<br/>&nbsp;&nbsp;&nbsp;&nbsp;Add(LCase(f1.Path))<br/>&nbsp;&nbsp;&nbsp;Next<br/>&nbsp;&nbsp;End&nbsp;If<br/>&nbsp;End&nbsp;Sub<br/><br/>&nbsp;Public&nbsp;Sub&nbsp;Pack<br/>&nbsp;&nbsp;Dim&nbsp;str<br/>&nbsp;&nbsp;a&nbsp;=&nbsp;files.Keys<br/>&nbsp;&nbsp;b&nbsp;=&nbsp;files.Items<br/>&nbsp;&nbsp;for&nbsp;i=0&nbsp;to&nbsp;files.count-1<br/>&nbsp;&nbsp;&nbsp;If&nbsp;b(i)&gt;=0&nbsp;Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;s.LoadFromFile(a(i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;buf&nbsp;=&nbsp;s.Read<br/>&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Not&nbsp;IsNull(buf)&nbsp;Then&nbsp;s1.Write(buf)<br/>&nbsp;&nbsp;&nbsp;End&nbsp;If<br/>&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;str&nbsp;&amp;&nbsp;b(i)&amp;&#34;&gt;&#34;&amp;Replace(a(i),rootpath,&#34;&#34;)&amp;vbCrLf<br/>&nbsp;&nbsp;next<br/>&nbsp;&nbsp;str&nbsp;=&nbsp;CStr(Right(&#34;000000000&#34;&amp;len(str),10))&nbsp;&amp;&nbsp;str<br/>&nbsp;&nbsp;buf&nbsp;=&nbsp;TextToStream(str)<br/>&nbsp;&nbsp;s.Position&nbsp;=&nbsp;0<br/>&nbsp;&nbsp;s.Write&nbsp;buf<br/>&nbsp;&nbsp;s1.Position&nbsp;=&nbsp;0<br/>&nbsp;&nbsp;s.Write&nbsp;s1.Read<br/>&nbsp;&nbsp;s.SetEOS<br/>&nbsp;&nbsp;s.SaveToFile(packname)<br/>&nbsp;End&nbsp;Sub<br/><br/>&nbsp;Public&nbsp;Sub&nbsp;UnPack<br/><br/>&nbsp;&nbsp;If&nbsp;Not&nbsp;fso.FolderExists(rootpath)&nbsp;Then<br/>&nbsp;&nbsp;&nbsp;fso.Cr&#101;ateFolder(rootpath)<br/>&nbsp;&nbsp;End&nbsp;If<br/>&nbsp;&nbsp;Dim&nbsp;size<br/>&nbsp;&nbsp;&#39;转换文件大小<br/>&nbsp;&nbsp;s.LoadFromFile(packname)<br/>&nbsp;&nbsp;size&nbsp;=&nbsp;CInt(StreamToText(s.Read(10)))<br/>&nbsp;&nbsp;str&nbsp;=&nbsp;StreamToText(s.Read(size))<br/>&nbsp;&nbsp;arr&nbsp;=&nbsp;Split(str,vbCrLf)<br/><br/>&nbsp;&nbsp;for&nbsp;i=0&nbsp;to&nbsp;Ubound(arr)-1<br/>&nbsp;&nbsp;&nbsp;arrFile&nbsp;=&nbsp;Split(arr(i),&#34;&gt;&#34;)<br/>&nbsp;&nbsp;&nbsp;If&nbsp;arrFile(0)&nbsp;&lt;&nbsp;0&nbsp;Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Not&nbsp;fso.FolderExists(rootpath&amp;arrFile(1))&nbsp;Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fso.Cr&#101;ateFolder(rootpath&amp;arrFile(1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If<br/>&nbsp;&nbsp;&nbsp;ElseIf&nbsp;arrFile(0)&nbsp;&gt;=&nbsp;0&nbsp;Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;fso.FileExists(rootpath&amp;arrFile(1))&nbsp;Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fso.Del&#101;teFile(rootpath&amp;arrFile(1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If<br/>&nbsp;&nbsp;&nbsp;&nbsp;s1.Position&nbsp;=&nbsp;0<br/>&nbsp;&nbsp;&nbsp;&nbsp;buf&nbsp;=&nbsp;s.Read(arrFile(0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Not&nbsp;IsNull(buf)&nbsp;Then&nbsp;s1.Write(buf)<br/>&nbsp;&nbsp;&nbsp;&nbsp;s1.SetEOS<br/>&nbsp;&nbsp;&nbsp;&nbsp;s1.SaveToFile(rootpath&amp;arrFile(1))<br/>&nbsp;&nbsp;&nbsp;End&nbsp;If<br/>&nbsp;&nbsp;Next<br/>&nbsp;End&nbsp;Sub<br/><br/>&nbsp;Public&nbsp;Function&nbsp;StreamToText(stream)<br/>&nbsp;&nbsp;If&nbsp;IsNull(stream)&nbsp;Then<br/>&nbsp;&nbsp;&nbsp;StreamToText&nbsp;=&nbsp;&#34;&#34;<br/>&nbsp;&nbsp;Else<br/>&nbsp;&nbsp;&nbsp;Set&nbsp;sm&nbsp;=&nbsp;server.Cr&#101;ateObject(&#34;ADODB.Stream&#34;):sm.Open:sm.Type&nbsp;=&nbsp;1<br/>&nbsp;&nbsp;&nbsp;sm.Write(stream)<br/>&nbsp;&nbsp;&nbsp;sm.Position&nbsp;=&nbsp;0<br/>&nbsp;&nbsp;&nbsp;sm.Type&nbsp;=&nbsp;2<br/>&nbsp;&nbsp;&nbsp;sm.charset&nbsp;=&nbsp;&#34;gb2312&#34;<br/>&nbsp;&nbsp;&nbsp;sm.Position&nbsp;=&nbsp;0<br/>&nbsp;&nbsp;&nbsp;StreamToText&nbsp;=&nbsp;sm.ReadText()<br/>&nbsp;&nbsp;&nbsp;sm.Close:Set&nbsp;sm&nbsp;=&nbsp;Nothing<br/>&nbsp;&nbsp;End&nbsp;If<br/>&nbsp;End&nbsp;Function<br/><br/>&nbsp;Public&nbsp;Function&nbsp;TextToStream(text)<br/>&nbsp;&nbsp;If&nbsp;text=&#34;&#34;&nbsp;Then<br/>&nbsp;&nbsp;&nbsp;TextToStream&nbsp;=&nbsp;&#34;&#34;&nbsp;&#39;这里该如何写？空流？<br/>&nbsp;&nbsp;Else<br/>&nbsp;&nbsp;&nbsp;Set&nbsp;sm&nbsp;=&nbsp;server.Cr&#101;ateObject(&#34;ADODB.Stream&#34;):sm.Open:sm.Type&nbsp;=&nbsp;2:sm.charset&nbsp;=&nbsp;&#34;gb2312&#34;<br/>&nbsp;&nbsp;&nbsp;sm.WriteText(text)<br/>&nbsp;&nbsp;&nbsp;sm.Position&nbsp;=&nbsp;0<br/>&nbsp;&nbsp;&nbsp;sm.Type&nbsp;=&nbsp;1<br/>&nbsp;&nbsp;&nbsp;sm.Position&nbsp;=&nbsp;0<br/>&nbsp;&nbsp;&nbsp;TextToStream&nbsp;=&nbsp;sm.Read<br/>&nbsp;&nbsp;&nbsp;sm.Close:Set&nbsp;sm&nbsp;=&nbsp;Nothing<br/>&nbsp;&nbsp;End&nbsp;If<br/>&nbsp;End&nbsp;Function<br/>End&nbsp;Class<br/>&lt;/script&gt;<br/><br/><br/>&#39;引用自<a href="http://www.jscode.cn/arthtml/art4689.htm" target="_blank">http://www.jscode.cn/arthtml/art4689.htm</a>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=682</link>
			<title><![CDATA[ASP实现隐藏网页代码的一种方法]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[asp]]></category>
			<pubDate>Fri,15 May 2009 17:03:56 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=682</guid>	
		<description><![CDATA[思路：<br/><br/>　　在html.asp中用&lt;script&nbsp;src=&#34;js.asp&#34;&gt;&lt;/script&gt;方式来显示内容，在html.asp代码中，设置一个session，在js.asp进行判断，如果是设置的值就显示正常内容，如果不是，就隐藏或显示其它内容，在js.asp的结尾把session值改变，在html.asp和js.asp中都加一段代码，使得游览器不缓存页面只能做到简单的隐藏，使用工具软件可以看到源文件，示例代码：<br/><br/>　　html.asp程序代码：<br/><br/>&lt;%<br/>Response.Expires&nbsp;=&nbsp;0<br/>Response.Expiresabsolute&nbsp;=&nbsp;Now()&nbsp;-&nbsp;1<br/>Response.AddHeader&nbsp;&#34;pragma&#34;,&#34;no-cache&#34;<br/>Response.AddHeader&nbsp;&#34;cache-control&#34;,&#34;private&#34;<br/>Response.CacheControl&nbsp;=&nbsp;&#34;no-cache&#34;<br/>%&gt;<br/>&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;meta&nbsp;http-equiv=&#34;Content-Type&#34;&nbsp;content=&#34;text/html;&nbsp;charset=gb2312&#34;&gt;<br/>&lt;title&gt;查看代码&nbsp;-&nbsp;www.51windows.Net&lt;/title&gt;<br/>&lt;style&gt;<br/>&lt;!--<br/>td&nbsp;{&nbsp;font-family:&nbsp;Tahoma;&nbsp;font-size:&nbsp;8pt;&nbsp;color:&nbsp;#000080;&nbsp;line-height:&nbsp;150%;&nbsp;<br/>border:&nbsp;1&nbsp;solid&nbsp;#666666;&nbsp;padding:&nbsp;4&nbsp;}<br/>--&gt;<br/>&lt;/style&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;%<br/>session(&#34;haiwa&#34;)&nbsp;=&nbsp;&#34;hw&#34;<br/>%&gt;<br/>&lt;div&nbsp;align=&#34;center&#34;&gt;<br/>&lt;center&gt;<br/>&lt;table&nbsp;border=&#34;0&#34;&nbsp;cellpadding=&#34;0&#34;&nbsp;cellspacing=&#34;0&#34;&nbsp;width=&#34;480&#34;&gt;<br/>&lt;tr&gt;<br/>&lt;td&nbsp;id=&#34;tmp&#34;&gt;&lt;SCRIPT&nbsp;LANGUAGE=&#34;javascript&#34;&nbsp;src=&#34;js.asp&#34;&nbsp;id=&#34;js&#34;&gt;&lt;/SCRIPT&gt;&lt;/td&gt;<br/>&lt;/tr&gt;<br/>&lt;/table&gt;<br/>&lt;/center&gt;<br/>&lt;/div&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/><br/>js.asp程序代码：<br/><br/>&lt;%<br/>Response.Expires&nbsp;=&nbsp;0<br/>Response.Expiresabsolute&nbsp;=&nbsp;Now()&nbsp;-&nbsp;1<br/>Response.AddHeader&nbsp;&#34;pragma&#34;,&#34;no-cache&#34;<br/>Response.AddHeader&nbsp;&#34;cache-control&#34;,&#34;private&#34;<br/>Response.CacheControl&nbsp;=&nbsp;&#34;no-cache&#34;<br/>if&nbsp;session(&#34;haiwa&#34;)&nbsp;&lt;&gt;&nbsp;&#34;hw&#34;&nbsp;then<br/>response.write&nbsp;&#34;//欢迎查看源文件&#34;<br/>response.end<br/>end&nbsp;if<br/>%&gt;<br/>//高，这你都能看得出来。我没有招了。。哈哈<br/>document.write&nbsp;(&#34;　　先做后想，先想后做，边想边做；只想不做，只做不想，不想不做。------世界是几乎都被这六种人涵盖了，如果作为个人能清楚的分析并看出自己属于哪一类人，至少证明你自己是个聪明人。&#34;)<br/>&lt;%<br/>session(&#34;haiwa&#34;)&nbsp;=&nbsp;&#34;&#34;<br/>%&gt;<br/><br/><br/>&#39;引用自<a href="http://www.jscode.cn/arthtml/art4687.htm" target="_blank">http://www.jscode.cn/arthtml/art4687.htm</a>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=681</link>
			<title><![CDATA[防止网站内容被人小偷和采集的ASP代码]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[asp]]></category>
			<pubDate>Fri,15 May 2009 17:03:27 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=681</guid>	
		<description><![CDATA[防止一般的采集以及小偷读取，加在顶部。&nbsp;<br/>&nbsp;&nbsp;同理，可以改造成JS脚本。&nbsp;<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&lt;%&nbsp;<br/>&nbsp;&nbsp;Dim&nbsp;AppealNum,AppealCount&nbsp;<br/>&nbsp;&nbsp;AppealNum=10&nbsp;&#39;同一IP60秒内请求限制10次&nbsp;<br/>&nbsp;&nbsp;AppealCount=Request.Cookies(&#34;AppealCount&#34;)&nbsp;<br/>&nbsp;&nbsp;If&nbsp;AppealCount=&#34;&#34;&nbsp;Then&nbsp;<br/>&nbsp;&nbsp;response.Cookies(&#34;AppealCount&#34;)=1&nbsp;<br/>&nbsp;&nbsp;AppealCount=1&nbsp;<br/>&nbsp;&nbsp;response.cookies(&#34;AppealCount&#34;).expires=dateadd(&#34;s&#34;,60,now())&nbsp;<br/>&nbsp;&nbsp;Else&nbsp;<br/>&nbsp;&nbsp;response.Cookies(&#34;AppealCount&#34;)=AppealCount+1&nbsp;<br/>&nbsp;&nbsp;response.cookies(&#34;AppealCount&#34;).expires=dateadd(&#34;s&#34;,60,now())&nbsp;<br/>&nbsp;&nbsp;End&nbsp;If&nbsp;<br/>&nbsp;&nbsp;if&nbsp;int(AppealCount)&gt;int(AppealNum)&nbsp;then&nbsp;<br/>&nbsp;&nbsp;response.write&nbsp;&#34;抓取很累，歇一会儿吧！&#34;&nbsp;<br/>&nbsp;&nbsp;response.end&nbsp;<br/>&nbsp;&nbsp;End&nbsp;If&nbsp;<br/>&nbsp;&nbsp;%&gt;&nbsp;<br/><br/><br/>&#39;引用自<a href="http://www.jscode.cn/arthtml/art4656.htm" target="_blank">http://www.jscode.cn/arthtml/art4656.htm</a>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=680</link>
			<title><![CDATA[在ASP中操作HTTP报头方法分析]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[asp]]></category>
			<pubDate>Fri,15 May 2009 17:02:54 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=680</guid>	
		<description><![CDATA[我们已经在几处见到ASP如何创建或修改在响应页面请示时被发送到客户的HTTP报头。在Response对象中有几个属性和方法可帮助我们做到一点。下面是一些报头方法：<br/><br/>　　·&nbsp;控制缓存和有效期。<br/><br/>　　·&nbsp;创建状态和定制的HTTP报头。<br/><br/>　　·&nbsp;指定MIME类型或内容类型。<br/><br/>　　·&nbsp;添加PICS标签。<br/><br/>　　接下来将简要地研究每一个方面。可在“Response&nbsp;Object”主页（show_response.asp）上，单击相关属性名或方法名，来检查我们所说的属性和方法。&nbsp;<br/><br/>　　1.&nbsp;缓存和“到期”ASP网页<br/><br/>　　用户的浏览器以及他们和服务器这间的任一代理服务器，都可以缓存HTML和用ASP创建的网页。当用户随后请求页面时，浏览器就发送一个“最新修改”的请求到服务器（使用一个包含缓存版本的日期的HTTP_IF_MODIFIED_SINCE报头），询问网页是否已被修改。<br/><br/>　　若没有被修改，服务器应用状态码和消息“304&nbsp;Not&nbsp;Modified”来响应，浏览器将使用缓存的内容而不会通过网络下载一个副本。若已经存在已修改的版本，它就会与“200&nbsp;OK”状态码和消息一道被发送出去。<br/><br/>　　1)&nbsp;Response.CacheContol属性<br/><br/>　　其他的一些因素也会影响这一处理过程。然而，任一被网页使用的网络路由内的代理服务器（一般位于客户机端），能被通过设置Response.CacheControl属性为Private来放弃缓存网页。在ASP&nbsp;3.0中对ASP网页这是缺省的，不用设置。但在网页为个别访问者特别定制时尤其有用。这可以阻止别的在同一网络上的用户进入同一网页。当CacheControl的属性值被设定为Public时，允许服务器缓存网页。注意，一些代理服务器可能表现得不尽相同，或忽视或越过这个报头。<br/><br/>　　在IE4中，在代理服务器缓存可用时，有可能得到一个虚假的“This&nbsp;page&nbsp;has&nbsp;expired”消息。我们已提供了一个网页（expiretest_form.asp），可以通过自己的代理服务器在网络上做试验，来检查这一属性的影响。可以通过在“Response&nbsp;Object”主页中单击“Response.&nbsp;CacheControl”链接来显示这个网页。如下图所示：<br/><br/>　　这一页面提交到expiretest_result.asp网页时，能够设置Response.CacheControl属性，然后在网页中插入值和脚本被执行的时间：<br/><br/><br/>＜%<br/>If&nbsp;Request.Form(“public”)&nbsp;=&nbsp;“on”&nbsp;Then&nbsp;‘Cache-Control&nbsp;check&nbsp;box&nbsp;was&nbsp;ticked<br/>　Response.CacheControl&nbsp;=&nbsp;“Public”<br/>Else<br/>　Response.CacheControl&nbsp;=&nbsp;“Private”<br/>End&nbsp;If<br/>%＞<br/>＜HTML＞<br/>...<br/>Cache-Control&nbsp;is:&nbsp;＜B＞＜%&nbsp;=&nbsp;Response.CacheControl&nbsp;%＞＜/B＞＜P＞<br/>Value&nbsp;in&nbsp;text&nbsp;box&nbsp;is:&nbsp;＜B＞＜%&nbsp;Response.Write&nbsp;Request.Form(“textbox”)&nbsp;%＞<br/>＜%<br/>Response.Write&nbsp;Right(“0”&nbsp;&amp;&nbsp;Hour(Now),2)&nbsp;&amp;&nbsp;“:”&nbsp;&amp;&nbsp;Right(“0”&nbsp;&amp;&nbsp;Minute(Now),_<br/>&amp;&nbsp;2)&nbsp;&amp;&nbsp;“:”&nbsp;&amp;&nbsp;Right(“0”&nbsp;&amp;&nbsp;Second(Now),2)<br/>%＞＜/B＞<br/><br/><br/>　　通过单击浏览器上的“Back”和“Forward”，能看到代码是自动执行还是使用缓存的副本。<br/><br/>　　2)&nbsp;Response.Expires和Response.ExpiresAbsolute属性<br/><br/>　　控制缓存的网页存放时间的两个属性为Response对象的Expires和ExpriesAbsolute属性。Response.Expires定义了风页在从缓存区被丢弃前应保持有效的时间长度，以创建以来的分钟数形式表示。ExpiresAbsolute属性为到期时间设置了一个绝对的日期和时间。<br/><br/>　　我们提供一个命名为addheaders_form.asp的例子网页，用于演示如何使用这些属性。在“Response&nbsp;Object”主页中单击对这两种属性的链接。<br/><br/>　　在得到的页面中，可加入自己定制的HTTP报头，并可设置一些影响响应的HTTP报头的多种属性。在“提交查询内容”按钮上单击时，页面show_headers.asp在返回的数据流中添加所选的报头，然后显示用来完成此操作的代码，显示相应的执行时间，可用来检查页面是被缓存还是被再次执行。<br/><br/>　　show_headers.asp网页中的代码创建和添加HTTP报头，程序如下：<br/><br/><br/>＜%<br/>‘Write&nbsp;HTTP&nbsp;headers&nbsp;before&nbsp;any&nbsp;other&nbsp;output<br/>If&nbsp;Request.Form(“expires”)&nbsp;=&nbsp;“on”&nbsp;Then&nbsp;_<br/>　Response.Expires&nbsp;=&nbsp;Request.Form(“expires_value”)<br/>If&nbsp;Request.Form(“expiresabs”)&nbsp;=&nbsp;“on”&nbsp;Then&nbsp;_<br/>　Response.ExpiresAbsolute&nbsp;=&nbsp;Request.Form(“expiresabs_value”)<br/>If&nbsp;Request.Form(“lastmod”)&nbsp;=&nbsp;“on”&nbsp;Then&nbsp;_<br/>　Response.AddHeader&nbsp;“LAST-MODIFIED”,&nbsp;Cstr(Request.Form(“lastmod_value”))<br/>If&nbsp;Request.Form(“pragma”)&nbsp;=&nbsp;“on”&nbsp;Then&nbsp;_<br/>　Response.AddHeader&nbsp;“PRAGMA”,&nbsp;CStr(Request.Form(“pragma_value”))<br/>If&nbsp;Request.Form(“refresh”)&nbsp;=&nbsp;“on”&nbsp;Then&nbsp;_<br/>　Response.AddHeader&nbsp;“REFRESH”,&nbsp;CStr(Request.Form(“refresh_value”))<br/>If&nbsp;Request.Form(“addheader”)&nbsp;=&nbsp;“on”&nbsp;And&nbsp;Len(Request.Form(“addheader_name”))&nbsp;Then&nbsp;_<br/>　Response.AddHeader&nbsp;CStr(Request.Form(“addheader_name”)),&nbsp;_<br/>　　CStr(Request.Form(“addheader_value”))<br/>If&nbsp;Request.Form(“status”)&nbsp;=&nbsp;“on”&nbsp;Then&nbsp;_<br/>　Response.Status&nbsp;=&nbsp;Request.Form(“status_value”)<br/>%＞<br/>＜HTML＞<br/>...<br/>...&nbsp;Show&nbsp;code&nbsp;and&nbsp;execution&nbsp;time<br/>...<br/><br/><br/>　　其余部分仅仅是显示已被执行的代码和执行时间。读者会注意到包含在网页中的定制的报头“PRAGMA”（至今我们还没讨论过）。一些（先前的）代理服务器使用它作为网磁是否应被缓存的指示。缺省是网页被缓冲，除非接受到HTTP报头“PRAGMA=NO-CACHE“。<br/><br/>　　2.&nbsp;创建状态码和定制的HTTP报头<br/><br/>　　可使用先前在实例网页中所看到的Response对象的AddHeader方法来创建自己的状态码或自己喜欢的定制的报头。这一方法需要两个参数：HTTP报头名称或一个包含其值或分配给它的值的字符串。作为一个例子，下面的代码在页面中添加REFRESH报头：<br/><br/><br/>Response.AddHeader&nbsp;“REFRESH”,&nbsp;”60;URL=newpath/newpage.asp”<br/><br/><br/>　　这等同于客户机端＜META＞元素：<br/><br/><br/>＜META&nbsp;HTTP-EQUIV=”REFRESH”,&nbsp;“60;URL=newpath/newpage.asp”＞<br/><br/><br/>　　换句话说，也可配合Status属性使用AddHeader方法使浏览器载入一个新的页面：<br/><br/><br/>Response.Status&nbsp;=&nbsp;“302&nbsp;Object&nbsp;Moved”<br/>Response.Addheader&nbsp;“Location”,&nbsp;“newpath/newpage.asp”<br/><br/><br/>　　这等同于使用Response.Redirect方法：<br/><br/>　　Response.Redirect&nbsp;“newpath/newpage.asp”<br/><br/>　　Response.Status属性可被用来发送一些所需要的状态消息，例如添加如下几行：<br/><br/>　　Response.Status=&nbsp;“401&nbsp;Unauthorized”<br/><br/>　　Response.Addheader&nbsp;“WWW-Authenticate”,&nbsp;“BASIC”<br/><br/>　　强制浏览器显示一个用户名/口令对话框，然后使用BASIC验证把它们发送回服务器（将在本系列后续部分看到验证方法）。<br/><br/>　　3.&nbsp;MIME类型和内容类型<br/><br/>　　当我们想向浏览器发送一个动态创建的字符串，而且它们自己提供给浏览器时没有直接指明内容类型，而是提供表示是否是磁盘文件的扩展名时，Response.ContentType是非常有用的。除非特别指定，所有ASP创建的网页缺省都为“text/type”。内容类型的标识符是MIME类型（MIME代表Multi-purpose&nbsp;Internet&nbsp;Multimedia&nbsp;Extension或Multi-pupose&nbsp;Internet&nbsp;Mail&nbsp;Extension，通常依据上下文来定）。<br/><br/>　　例如，若发送到客户的数据注解是通过从数据库读二进制值创建的图片，就需要在发送任何内容之前添加合适的CONTENT-TYPE报头：<br/><br/><br/><br/>Response.ContentType&nbsp;=&nbsp;“image/jpeg”<br/><br/><br/>　　假如从一个数据库创建一个XML文件，使用MIEM类型“text/xml”；并且如果正在创建一个文本文件可以在文件编辑器中显示或作为一个磁盘文件在客户上被存储起来，使用“text/text”。<br/><br/>　　4.&nbsp;添加PICS卷标<br/><br/>　　Respnse.Pics属性仅仅是添加一个PICS（Platform&nbsp;for&nbsp;Internet&nbsp;Content&nbsp;system）卷标到页面上，方式与通常用＜META＞标记所用的方式相同：<br/><br/><br/>QUOT&nbsp;=&nbsp;Chr(34)<br/>StrPicsLabel&nbsp;=&nbsp;“(PICS-1.0”&nbsp;&amp;&nbsp;QUOT&nbsp;&amp;&nbsp;“<a href="http://www.rsac.org/ratingsv01.html" target="_blank">http://www.rsac.org/ratingsv01.html</a>”_<br/>&amp;&nbsp;QUOT&nbsp;&amp;&nbsp;“&nbsp;1&nbsp;gen&nbsp;true&nbsp;comment&nbsp;“&nbsp;&amp;&nbsp;QUOT&nbsp;_<br/>&amp;&nbsp;“RSACi&nbsp;North&nbsp;America&nbsp;Server”&nbsp;&amp;&nbsp;QUOT&nbsp;&amp;&nbsp;“&nbsp;for&nbsp;“&nbsp;&amp;&nbsp;QUOT&nbsp;_<br/>&amp;&nbsp;“<a href="http://yoursite.com" target="_blank">http://yoursite.com</a>”&nbsp;&amp;&nbsp;QUOT&nbsp;&amp;&nbsp;“&nbsp;on&nbsp;“&nbsp;&amp;&nbsp;QUOT&nbsp;_<br/>&amp;&nbsp;“1999.08.01T03:04-0500”&nbsp;&amp;&nbsp;QUOT&nbsp;&amp;&nbsp;“&nbsp;r&nbsp;(n&nbsp;0&nbsp;s&nbsp;0&nbsp;v&nbsp;2&nbsp;l&nbsp;3))”<br/>Response.Pics(strPicsLabel)<br/><br/><br/>　　这段代码添加了如下的PICS卷标：<br/><br/><br/>(PICS-1.0&nbsp;“<a href="http://www.rsac.org/ratingsv01.html" target="_blank">http://www.rsac.org/ratingsv01.html</a>”&nbsp;1&nbsp;gen&nbsp;true&nbsp;comment&nbsp;“RSACi<br/>North&nbsp;America&nbsp;Server”&nbsp;for&nbsp;“<a href="http://yoursite.com" target="_blank">http://yoursite.com</a>”&nbsp;on&nbsp;“1999.08.01T03:04-0500”<br/>r&nbsp;(n&nbsp;0&nbsp;s&nbsp;0&nbsp;v&nbsp;2&nbsp;l&nbsp;3))<br/><br/><br/>　　要得到关于PICS的更多的信息，或了解更多的定义页面内容的方式，请检索<a href="http://www.rsac.org/" target="_blank">http://www.rsac.org/</a>站点。&nbsp;<br/><br/>　　在Internet&nbsp;Service&nbsp;Manager中定义报头<br/><br/>　　在本系列文章的第一部分，已经说明了如何在Internet&nbsp;Service&nbsp;Manage(MMC插件)应用程序中设置每个Web网站和IIS&nbsp;5.0目录的属性，这就定义了使用此站点或目录资源发送到客户机的所有请求的HTTP报头，也就提供了使用每个网页中的ASP脚本代码设置这些属性的替代方法。<br/><br/>　　在Web站点或目录上右击鼠标并选择“Properties”，在其对话框的“HTTP&nbsp;Headers”选项卡中，可设置页面内容有效期的相对时间或绝对日期，定义定制的报头，创建PICS内容等级标签，也可以通过MIME类型映射来定义内容类型。<br/><br/>　　那么可以看到已创建了自定义的REFRESH&nbsp;HTTP报头，应用于从此目录载入的所有网页。即每一分钟自动地重载（刷新）一次（对于显示棒球比赛的最近比分是非常理想的，但对服务器而言负担太重了）。<br/><br/>　　要在“MIME&nbsp;Map”框中添加自定义的内容类型映射，只需在“Properties”主对话框中单击“File&nbsp;Types”按扭把它们添加到清单中即可。<br/><br/>　　当使用HTTP报头开始试验时，你很快会发现不是所有的浏览器表现都相同，许多浏览器以不同的方式响应不同的HTTP报头，使得可靠地建立一个普遍适用的原则有时极为困难。<br/><br/>　　2.&nbsp;使用客户证书<br/><br/>　　假如设立了一个安全的Web网站或部分内容具有安全机制的网站，可安装一个数字服务器证书，通过允许访问者使用证书中的加密的细节，来验证服务器。每一次对该站点或目录的页面请求，服务器都将发送证书的一个副本，浏览器可检查这个副本以确定正在和谁交谈。<br/>同样，也可设置服务器，要求用户在进入网站时提供一个有效的数字证书。他们可从很多来源获得此证书，例如Verisign（<a href="http://www.verisign.com" target="_blank">http://www.verisign.com</a>）或Thawte&nbsp;Consulting(<a href="http://www.thawte.com" target="_blank">http://www.thawte.com</a>)。读者将在第25章看到这一处理过程的细节。<br/><br/>　　这些情况都使用了Request对象的ClientCertificate集合的值，本章的实例代码中，已包含了一个显示用户如何使用些集合值的一些方法的页面。<br/><br/>　　这一网页被命名为showcert.asp，而且其所做的一切就是遍历ClientCertificate集合显示其包含的所有值。可使用以前经常使用的简单代码来完成它，唯一的不同之处就是建立一个HTML表以容纳结果，并将其截为每60个字符一组。<br/><br/><br/>＜TABEL&nbsp;CELLPADDING=0&nbsp;CELLSPACING=0＞<br/>＜%<br/>For&nbsp;Each&nbsp;keyItem&nbsp;In&nbsp;Request.ClientCertificate()<br/>　StrItemValue&nbsp;=&nbsp;Request.ClientCertificate(keyItem)<br/>　If&nbsp;Len(strItemValue)&nbsp;＞&nbsp;90&nbsp;Then&nbsp;strItemValue&nbsp;=&nbsp;Left(strItemValue,&nbsp;60)&nbsp;&amp;&nbsp;“..etc.”<br/>　Response.Write&nbsp;“＜TR＞＜TD＞”&nbsp;&amp;&nbsp;keyItem&nbsp;&amp;&nbsp;“&nbsp;=&nbsp;“&nbsp;&amp;&nbsp;strItemValue&nbsp;&amp;&nbsp;“＜/TD＞＜/TR＞”<br/>Next<br/>%＞<br/>＜/TABLE＞<br/><br/><br/>　　使用客户证书重定向<br/><br/>　　一旦要求所有访问网站或部分网站的浏览者给出的其客户证书，就可以使用其包含的信息来制作我们为此用户创建的网页。例如，可使用他们的证书的Organization条目来自动使他们重定向到该网站的指定部分，使别的访问者重定向到别的地方：<br/><br/><br/>If&nbsp;Request.ClientCertificate(“SubjectO”)&nbsp;=&nbsp;“Wrox&nbsp;Press&nbsp;Inc”&nbsp;Then<br/>　Response.Redirect&nbsp;“/wrox_staff/default.asp”&nbsp;‘Wrox&nbsp;staff&nbsp;site<br/>Else<br/>　Response.Redirect&nbsp;“/public/Default.asp”&nbsp;‘Normal&nbsp;public&nbsp;site<br/>End&nbsp;If<br/><br/><br/>　　相应地，可使用Country条目来使访问者重定向到一个相应的网站：<br/><br/><br/>Sel&#101;ct&nbsp;Case&nbsp;Request.ClientCertificate(“SubjectC”)<br/>　Case&nbsp;“UK”:&nbsp;Response.Redirect&nbsp;“<a href="http://uk_site.co.uk/" target="_blank">http://uk_site.co.uk/</a>”<br/>　Case&nbsp;“DE”:&nbsp;Response.Redirect&nbsp;“<a href="http://de_site.co.de/" target="_blank">http://de_site.co.de/</a>”<br/>　Case&nbsp;“FR”:&nbsp;Response.Redirect&nbsp;“<a href="http://fr_site.co.fr/" target="_blank">http://fr_site.co.fr/</a>”<br/>　‘...&nbsp;ect.<br/>　Case&nbsp;Else:&nbsp;Response.Redirect&nbsp;“<a href="http://us_site.com/" target="_blank">http://us_site.com/</a>”<br/>End&nbsp;Sel&#101;ct<br/><br/><br/>　　3.&nbsp;读写二进制数据<br/><br/>　　有两个方法提供了对从浏览器发送到服务器的HTTP数据流和从服务器返回到浏览器的数据流的二进制数据访问。Request.BinaryRead方法可得到指定要读取的字节数的参数，并返回变体类型的数组，其中包含从请求的POST段中得到的字节（例如在ASP的Form集合中数据）。下面的程序读数据的头64个字节：<br/><br/><br/>varContent&nbsp;=&nbsp;Request.BinaryRead(64)<br/><br/><br/>　　假如使用了BinaryRead方法，以后就不能访问ASP的Request.Form集合。同样，一旦我们采用任何方式引用了Request.Form集合，就不能使用BinaryRead方法。<br/><br/>　　把二进制数据写进ASP创建的响应流中也是可能的，可采用BinaryWrite方法。需要给其提供想写到客户的字节的变体类型数组：<br/><br/><br/>Response.BinaryWrite(varContent)<br/><br/><br/>　　这些方法都很少使用，除非从一个数据库创建非HTML源才用到这些方法。使用的一个实例就是从数据库读取组成图像的字节，并使用BinaryWrite方法把它发送到客户。<br/><br/>　　4.&nbsp;创建定制的日志消息<br/><br/>　　假如设置了服务器，以W3C&nbsp;Extended&nbsp;Log&nbsp;File&nbsp;Format格式将请求记录到一个文本文件，可使用Response.AppendToLog方法在日志文件条目的结尾处添加一条消息字符串。若想为特定的网页存储一些值或消息，或在脚本中出现了特定的情况时，这种方式是非常有用的。<br/><br/>　　例如，通过的Intranet的“stationary&nbsp;o&#114;der”应用程序，可以记录超过特定的条目数目的雇员的部门号码：<br/><br/><br/>...<br/>If&nbsp;intItemCount&nbsp;＞&nbsp;25&nbsp;Then<br/>　Response.AppendToLog&nbsp;“Large&nbsp;o&#114;der&nbsp;from&nbsp;‘”&nbsp;&amp;&nbsp;strDept&nbsp;&amp;&nbsp;department.”<br/>End&nbsp;If<br/>...<br/><br/><br/>　　设置扩展的日志<br/><br/>　　要使用AppendToLog方法，必须激活W3C&nbsp;Extended&nbsp;Log&nbsp;File&nbsp;Format日志设置。该设置方法是，进入Properties对话框中的Web&nbsp;Site选项卡，选中Enable&nbsp;Logging复选框，选择W3C&nbsp;Extended&nbsp;Log&nbsp;File&nbsp;Format并单击Properties按钮，如下图所示：<br/><br/>　　在出现的Extended&nbsp;Logging&nbsp;Properties对话框中，可选择想包括进日志文件的条目。确保选中URI&nbsp;Stem，否则AppendToLog方法将失败。<br/><br/>　　我们提供了一个试图在日志文件中写入一个条目的简单实例页面，可从Request&nbsp;Object主页（show_request.asp）中的AppendToLog方法链接处打开它。这一页面所做的全部工作就是创建一个包含当前日期和时间的简单字符串，然后执行AppendToLog方法：<br/><br/><br/>strToAppend&nbsp;=&nbsp;“Page&nbsp;executed&nbsp;on&nbsp;”&nbsp;&amp;&nbsp;Now<br/>Response.AppendToLog&nbsp;strToAppend<br/><br/><br/>　　小结<br/><br/>　　本文已经开始了对ASP&nbsp;3.0的研究，而且我们也看到了ASP&nbsp;3.0如何与Internet&nbsp;Informateion&nbsp;Server&nbsp;5.0共同工作，以提供一个易用的、高效的创建动态Web网页和Web应用程序的方法。当然，仍有一些地方需要去研究，本章仅仅是学习了ASP内置的两个最基本的对象。<br/>这两个最基本的对象是Request和Response对象，允许我们访问和使用作为客户机/服务器会话一部分的值，无论用户何时从Web网站请求和载入一个网页或资源，这种会话就会进行，意味着Request对象能够提供对用户请求的全部内容的访问，同时Response对象允许创建和修改服务器发回的响应。<br/><br/>　　这些对象能够通过集合和属性揭示会话的各个部分，并提供了多个能用来检索和修改各段的方法。假如把它们当作分解用户请求和使用相应的内容创建响应的工具，这有助你理解究竟发生了什么。这也将有助于理解各种方法如何影响客户、服务器和正在创建的网页。&nbsp;<br/><br/><br/>&#39;引用自<a href="http://www.jscode.cn/arthtml/art4600.htm" target="_blank">http://www.jscode.cn/arthtml/art4600.htm</a>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=679</link>
			<title><![CDATA[显示目录下所有的文件（含文件夹）]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[asp]]></category>
			<pubDate>Fri,15 May 2009 17:02:14 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=679</guid>	
		<description><![CDATA[&lt;%&nbsp;<br/>&nbsp;&nbsp;&nbsp;set&nbsp;A=server.cr&#101;ateobject(&#34;scripting.filesystemobject&#34;)&nbsp;<br/>&nbsp;&nbsp;&nbsp;path=&#34;G:\count\0&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;i=0&nbsp;<br/>&nbsp;&nbsp;&nbsp;response.write&nbsp;&#34;主目录：&lt;br&gt;&#34;&amp;path&amp;&#34;&lt;ul&gt;&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;re&nbsp;<br/>&nbsp;&nbsp;&nbsp;response.write&nbsp;&#34;&lt;/li&gt;&lt;/ul&gt;&#34;&nbsp;&#39;-----------------主目录&nbsp;<br/>&nbsp;&nbsp;&nbsp;sub&nbsp;re()&nbsp;<br/>&nbsp;&nbsp;&nbsp;B=B&amp;i&nbsp;<br/>&nbsp;&nbsp;&nbsp;C=C&amp;i&nbsp;<br/>&nbsp;&nbsp;&nbsp;D=D&amp;i&nbsp;<br/>&nbsp;&nbsp;&nbsp;E=E&amp;i&nbsp;<br/>&nbsp;&nbsp;&nbsp;set&nbsp;B=A.getfolder(path)&nbsp;&#39;----------------------主目录下文件&nbsp;<br/>&nbsp;&nbsp;&nbsp;if&nbsp;i&gt;=2&nbsp;then&nbsp;response.write&nbsp;&#34;&lt;ul&gt;&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;for&nbsp;each&nbsp;E&nbsp;in&nbsp;B.files&nbsp;<br/>&nbsp;&nbsp;&nbsp;response.write&nbsp;&#34;&lt;li&gt;&#34;&amp;E.name&amp;&#34;&lt;/li&gt;&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;next&nbsp;<br/>&nbsp;&nbsp;&nbsp;if&nbsp;i&gt;=2&nbsp;then&nbsp;response.write&nbsp;&#34;&lt;/ul&gt;&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&#39;----------------------End&nbsp;&#39;---------------------------主目录下文件夹&nbsp;set&nbsp;C=B.SubFolders&nbsp;<br/>&nbsp;&nbsp;&nbsp;if&nbsp;i&gt;=2&nbsp;then&nbsp;response.write&nbsp;&#34;&lt;ul&gt;&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;for&nbsp;each&nbsp;D&nbsp;in&nbsp;C&nbsp;<br/>&nbsp;&nbsp;&nbsp;response.write&nbsp;&#34;&lt;li&gt;&lt;b&gt;&#34;&amp;D.name&amp;&#34;&lt;/b&gt;&lt;font&nbsp;color=#c0c0c0&gt;(DIR)&lt;/font&gt;&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;i=i+1&nbsp;<br/>&nbsp;&nbsp;&nbsp;path=D&nbsp;<br/>&nbsp;&nbsp;&nbsp;re2&nbsp;&#39;显示子目录&nbsp;<br/>&nbsp;&nbsp;&nbsp;next&nbsp;<br/>&nbsp;&nbsp;&nbsp;if&nbsp;i&gt;=2&nbsp;then&nbsp;response.write&nbsp;&#34;&lt;/ul&gt;&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&#39;---------------------------End&nbsp;<br/>&nbsp;&nbsp;&nbsp;end&nbsp;sub&nbsp;&#39;-----------------次目录&nbsp;<br/>&nbsp;&nbsp;&nbsp;sub&nbsp;re2()&nbsp;<br/>&nbsp;&nbsp;&nbsp;B=B&amp;i&nbsp;<br/>&nbsp;&nbsp;&nbsp;C=C&amp;i&nbsp;<br/>&nbsp;&nbsp;&nbsp;D=D&amp;i&nbsp;<br/>&nbsp;&nbsp;&nbsp;set&nbsp;B=A.getfolder(path)&nbsp;&#39;-----------------------------次目录下文件&nbsp;<br/>&nbsp;&nbsp;&nbsp;response.write&nbsp;&#34;&lt;ul&gt;&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;for&nbsp;each&nbsp;E&nbsp;in&nbsp;B.files&nbsp;<br/>&nbsp;&nbsp;&nbsp;response.write&nbsp;&#34;&lt;li&gt;&#34;&amp;E.name&amp;&#34;&lt;/li&gt;&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;next&nbsp;<br/>&nbsp;&nbsp;&nbsp;response.write&nbsp;&#34;&lt;/ul&gt;&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&#39;-----------------------------End&nbsp;&#39;-----------------------------次目录下文件夹&nbsp;<br/>&nbsp;&nbsp;&nbsp;set&nbsp;C=B.SubFolders&nbsp;<br/>&nbsp;&nbsp;&nbsp;response.write&nbsp;&#34;&lt;ul&gt;&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;for&nbsp;each&nbsp;D&nbsp;in&nbsp;C&nbsp;<br/>&nbsp;&nbsp;&nbsp;response.write&nbsp;&#34;&lt;li&gt;&lt;b&gt;&#34;&amp;D.name&amp;&#34;&lt;/b&gt;&lt;font&nbsp;color=#c0c0c0&gt;(DIR)&lt;/font&gt;&lt;/li&gt;&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;i=i+1&nbsp;<br/>&nbsp;&nbsp;&nbsp;path=D&nbsp;<br/>&nbsp;&nbsp;&nbsp;re&nbsp;&#39;显示子目录&nbsp;<br/>&nbsp;&nbsp;&nbsp;next&nbsp;<br/>&nbsp;&nbsp;&nbsp;response.write&nbsp;&#34;&lt;/ul&gt;&#34;&nbsp;&#39;-----------------------------End&nbsp;<br/>&nbsp;&nbsp;&nbsp;end&nbsp;sub&nbsp;<br/>&nbsp;&nbsp;&nbsp;%&gt;&nbsp;<br/><br/><br/>&#39;引用自<a href="http://www.jscode.cn/arthtml/art4663.htm" target="_blank">http://www.jscode.cn/arthtml/art4663.htm</a>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=678</link>
			<title><![CDATA[bbs的树状结构算法]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[asp]]></category>
			<pubDate>Fri,15 May 2009 17:01:39 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=678</guid>	
		<description><![CDATA[数据库设计中order_value是用来排序的，具体实现是&nbsp;<br/>&nbsp;&nbsp;**注意以下的讨论是对一个主题而言，就是对一棵树而言！&nbsp;<br/>&nbsp;&nbsp;如果加一新贴那么&nbsp;o&#114;der_value=0&nbsp;<br/>&nbsp;&nbsp;如果跟贴查比父贴&nbsp;o&#114;der_value大的order_value&nbsp;<br/>&nbsp;&nbsp;如果有假设为next_value,那么新帖的&nbsp;<br/>&nbsp;&nbsp;o&#114;der_value为父贴的(order_value+next_value)/2；&nbsp;<br/>&nbsp;&nbsp;如果有那么新帖的order_value为父贴的order_value+1000&nbsp;<br/>&nbsp;&nbsp;也就是说如果对A贴跟贴，如果A为末贴，A的字帖的order_value为order_value（父）+1000，&nbsp;<br/>&nbsp;&nbsp;不是末贴既找出比A大的order_value,新的order_value为两者的一半!&nbsp;<br/>&nbsp;&nbsp;排序实现:&nbsp;o&#114;der&nbsp;by&nbsp;groupid,order_value&nbsp;desc&nbsp;<br/>&nbsp;&nbsp;**技巧如果想实现层次多一点可以每次加的多一点+100000，那样应该会好一点&nbsp;<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;***不足之处：&nbsp;<br/>&nbsp;&nbsp;1：使用两个字段排序，速度有点慢&nbsp;<br/>&nbsp;&nbsp;2：使用order_value是一个浮点数，使用float估计不够，还是使用double&nbsp;<br/>&nbsp;&nbsp;3：只能实现理论上的无穷层实际上超过10层使用float有问题，使用double可能没有&nbsp;<br/>&nbsp;&nbsp;4：插入是需要查找下一个order_value&nbsp;<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;Dim&nbsp;o&#114;dervalue,&nbsp;nextvalue&nbsp;As&nbsp;Double&nbsp;<br/>&nbsp;&nbsp;sql&nbsp;=&nbsp;&#34;sel&#101;ct&nbsp;gorders&nbsp;wh&#101;re&nbsp;gId=&#34;&nbsp;&amp;&nbsp;gId&nbsp;&amp;&nbsp;&#34;&nbsp;and&nbsp;goders&gt;&nbsp;&#34;&nbsp;&amp;&nbsp;gorders&nbsp;&amp;&nbsp;&#34;&nbsp;o&#114;der&nbsp;by&nbsp;goders&nbsp;&#34;&nbsp;<br/>&nbsp;&nbsp;rs1.Open&nbsp;sql,&nbsp;conn1,&nbsp;adOpenForwardOnly,&nbsp;adLockOptimistic&nbsp;&#39;查询比父贴大的&nbsp;<br/>&nbsp;&nbsp;&nbsp;o&#114;der_value&nbsp;<br/>&nbsp;&nbsp;If&nbsp;(rs1.EOF&nbsp;And&nbsp;rs1.BOF)&nbsp;Then&nbsp;<br/>&nbsp;&nbsp;&nbsp;gorders&nbsp;=&nbsp;gorders&nbsp;+&nbsp;256&nbsp;<br/>&nbsp;&nbsp;&nbsp;gLayer&nbsp;=&nbsp;gLayer&nbsp;+&nbsp;1&nbsp;<br/>&nbsp;&nbsp;Else&nbsp;<br/>&nbsp;&nbsp;&nbsp;nextvalue&nbsp;=&nbsp;rs1(&#34;gorders&#34;)&nbsp;<br/>&nbsp;&nbsp;&nbsp;If&nbsp;(nextvalue&nbsp;-&nbsp;gorders)&nbsp;&gt;&nbsp;1&nbsp;Then&nbsp;<br/>&nbsp;&nbsp;&nbsp;gorders&nbsp;=&nbsp;Int((gorders&nbsp;+&nbsp;nextvalue)&nbsp;/&nbsp;2)&nbsp;<br/>&nbsp;&nbsp;&nbsp;gLayer&nbsp;=&nbsp;gLayer&nbsp;<br/>&nbsp;&nbsp;&nbsp;Else&nbsp;<br/>&nbsp;&nbsp;&nbsp;&#39;gorders,glayer跟回帖一样&nbsp;<br/>&nbsp;&nbsp;End&nbsp;If&nbsp;<br/>&nbsp;&nbsp;End&nbsp;If&nbsp;<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;End&nbsp;Sub&nbsp;<br/><br/>&#39;引用自<a href="http://www.jscode.cn/arthtml/art4478.htm" target="_blank">http://www.jscode.cn/arthtml/art4478.htm</a>]]></description>
		</item>
		
</channel>
</rss>