<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[JiangLan's Blog - Asp]]></title>
<link>http://www.jianglan.net.cn/blog/</link>
<description><![CDATA[]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[llk39@163.com(江蓝)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>JiangLan&#39;s Blog</title>
	<url>http://www.jianglan.net.cn/blog/images/logos.gif</url>
	<link>http://www.jianglan.net.cn/blog/</link>
	<description>JiangLan&#39;s Blog</description>
</image>

			<item>
			<link>http://www.jianglan.net.cn/blog/article.asp?id=408</link>
			<title><![CDATA[万年历程序中十二生肖排列顺序及算法]]></title>
			<author>llk39@163.com(江蓝)</author>
			<category><![CDATA[Asp]]></category>
			<pubDate>Wed,04 Mar 2009 11:42:09 +0800</pubDate>
			<guid>http://www.jianglan.net.cn/blog/default.asp?id=408</guid>
		<description><![CDATA[有时我们做万年历程序时涉及十二生肖的排列顺序及相关算法问题，这里总结一下：<br/><br/>算法：<br/>年份减3除以12，余数则是对应的十二生肖序号, 如果余数为0,序号计为12。然后根据以下口诀得到生肖:<br/><br/>一鼠二牛三虎四兔走，<br/>舞龙六蛇七马八羊头。<br/>九猴十鸡幺幺数狗狗。<br/>十二金猪排列到最后。<br/><br/>按地支及生肖的口诀：<br/>子鼠丑牛寅虎卯兔走，<br/>辰龙巳蛇午马未羊头。<br/>申猴酉鸡之后戍狗狗，<br/>亥属金猪排列到最后。<br/><br/>注：以上口诀（也可说是十二生肖的顺口溜吧），是我读高中时瞎编的，不过至今仍记得，转载请注明出处 :) <br/><br/>还有一个关于十二生肖的顺口溜<br/><br/>小老鼠，打头来，牛把蹄儿往上抬。<br/>老虎回头一声吼，兔脚一蹬跑得快。<br/>龙和蛇，尾巴甩，马啸羊儿大步迈。<br/>小猴机灵蹦又跳，雄鸡一唱天下白。<br/>狗儿跳，猪儿叫，老鼠接着跟上来。<br/>十二动物转圈跑，一二三四按序排。<br/><br/>附：十二生肖属相年份对照表（农历1900-2103年）<br/>鼠1900 牛1901 虎1902 兔1903 龙1904 蛇1905 马1906 羊1907 猴1908 鸡1909 狗1910 猪1911<br/>鼠1912 牛1913 虎1914 兔1915 龙1916 蛇1917 马1918 羊1919 猴1920 鸡1921 狗1922 猪1923<br/>鼠1924 牛1925 虎1926 兔1927 龙1928 蛇1929 马1930 羊1931 猴1932 鸡1933 狗1934 猪1935<br/>鼠1936 牛1937 虎1938 兔1939 龙1940 蛇1941 马1942 羊1943 猴1944 鸡1945 狗1946 猪1947<br/>鼠1948 牛1949 虎1950 兔1951 龙1952 蛇1953 马1954 羊1955 猴1956 鸡1957 狗1958 猪1959<br/>鼠1960 牛1961 虎1962 兔1963 龙1964 蛇1965 马1966 羊1967 猴1968 鸡1969 狗1970 猪1971<br/>鼠1972 牛1973 虎1974 兔1975 龙1976 蛇1977 马1978 羊1979 猴1980 鸡1981 狗1982 猪1983<br/>鼠1984 牛1985 虎1986 兔1987 龙1988 蛇1989 马1990 羊1991 猴1992 鸡1993 狗1994 猪1995<br/>鼠1996 牛1997 虎1998 兔1999 龙2000 蛇2001 马2002 羊2003 猴2004 鸡2005 狗2006 猪2007<br/>鼠2008 牛2009 虎2010 兔2011 龙2012 蛇2013 马2014 羊2015 猴2016 鸡2017 狗2018 猪2019<br/>鼠2020 牛2021 虎2022 兔2023 龙2024 蛇2025 马2026 羊2027 猴2028 鸡2029 狗2030 猪2031<br/>鼠2032 牛2033 虎2034 兔2035 龙2036 蛇2037 马2038 羊2039 猴2040 鸡2041 狗2042 猪2043<br/>鼠2044 牛2045 虎2046 兔2047 龙2048 蛇2049 马2050 羊2051 猴2052 鸡2053 狗2054 猪2055<br/>鼠2056 牛2057 虎2058 兔2059 龙2060 蛇2061 马2062 羊2063 猴2064 鸡2065 狗2066 猪2067<br/>鼠2068 牛2069 虎2070 兔2071 龙2072 蛇2073 马2074 羊2075 猴2076 鸡2077 狗2078 猪2079<br/>鼠2080 牛2081 虎2082 兔2083 龙2084 蛇2085 马2086 羊2087 猴2088 鸡2089 狗2090 猪2091<br/>鼠2092 牛2093 虎2094 兔2095 龙2096 蛇2097 马2098 羊2099 猴2100 鸡2101 狗2102 猪2103 <br/><br/>十二生肖与十二时辰：<br/>古人根据太阳升起的时间，将一昼夜区分为十二个时辰，用十二地支为代号，方便熟记。 中国用地支计时法，叫做十二时辰(“大时”)，也就是我们现在所称的二十四“小时”。<br/>十二生肖是由十一种来自自然界的动物： 鼠、牛、虎、兔、蛇、马、羊、猴、鸡、狗和猪，还有传说中的龙所组成的。古人以这十二种动物的习性来为分配各个地支， 例如：老鼠是夜间活动的动物，因此以子时（午夜11时至1时）配合鼠，都和当时农业社会的生活起居作习息息相关。<br/><br/>生肖和时辰是如何相对应的呢？以下仅供参考：<br/>子（鼠）午夜23时至1时：在一日中，子时一天的最后时刻，也是新一天的开始。<br/>丑（牛）凌晨1时至3时：丑时指的是黎明前的黑暗阶段。据说是牛开始日出耕田的时刻。<br/>寅（虎）凌晨3时至5时：在一日中， 天方大白之时，正是老虎开始活动的时刻。<br/>卯（兔）清晨5时至7时：卯时是太阳已东升，开始放万丈光芒的时候。<br/>辰（龙）清晨7时至9时：辰时太阳光热增强时刻，据说是群龙行西的时刻。<br/>巳（蛇）上午9时至11时，巳时太阳光热更强了。<br/>午（马）上午11时至下午13时，在一日中，阳光最为猛烈。<br/>未（羊）下午13时至15时：在一日中， 未时是暑气将消之时。<br/>申（猴）下午15时至17时：在一日中，申时的暑气已快过去了。<br/>酉（鸡）下午17时至晚上19时：在一日中，酉时是夜晚将来临的时刻。<br/>戍（狗）晚上19时至21时：在一日中，戌时正是黑夜扩散，华灯初上时分。<br/>亥（猪）晚上21时至午夜23时：在一日中，亥时是一日将尽，要迈向明日之前时分。]]></description>
		</item>
		
			<item>
			<link>http://www.jianglan.net.cn/blog/article.asp?id=407</link>
			<title><![CDATA[ASP防止外部提交数据]]></title>
			<author>llk39@163.com(江蓝)</author>
			<category><![CDATA[Asp]]></category>
			<pubDate>Thu,26 Feb 2009 09:25:14 +0800</pubDate>
			<guid>http://www.jianglan.net.cn/blog/default.asp?id=407</guid>
		<description><![CDATA[<div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;% <br/>Function isSelfRefer() <br/>Dim sHttp_Referer, sServer_Name <br/>sHttp_Referer = CStr(Request.ServerVariables(&#34;HTTP_REFERER&#34;)) <br/>sServer_Name = CStr(Request.ServerVariables(&#34;SERVER_NAME&#34;)) <br/>If Mid(sHttp_Referer, 8, Len(sServer_Name)) = sServer_Name Then <br/>IsSelfRefer = True <br/>Else <br/>IsSelfRefer = False <br/>End If <br/>End Function <br/><br/>If isSelfRefer() Then <br/>response.write &#34;ok&#34; <br/>Else <br/>response.write &#34;no&#34; <br/>End If <br/>%&gt; </div></div><br/><br/>把以上代码放到aa.asp，如果是直接输入网址或者是从外部网部链接到本站，<a href="http://doamain/aa.asp" target="_blank" rel="external">http://doamain/aa.asp</a> 就会显示NO，如果系从本站链接到aa.asp，或通过表单提交到aa.asp，将会显示ok。可以防止一些伪造表单向站内提交数据。]]></description>
		</item>
		
			<item>
			<link>http://www.jianglan.net.cn/blog/article.asp?id=347</link>
			<title><![CDATA[JScript compilation error &#39;800a03ec&#39;解决方法]]></title>
			<author>llk39@163.com(江蓝)</author>
			<category><![CDATA[Asp]]></category>
			<pubDate>Tue,11 Dec 2007 16:26:08 +0800</pubDate>
			<guid>http://www.jianglan.net.cn/blog/default.asp?id=347</guid>
		<description><![CDATA[　　之前写的IT HelpDesk System今天终于可以告一段落，接下去要做的就是把它架设在公司WEB服务器(windows 2003 server 英文版)上进行测试。待架设好后一打开网页，就出现“Microsoft JScript compilation error &#39;800a03ec&#39;”的错误提示（如下图）。原来在自己机器(windwos xp pro 英文版)上没有任何问题的。<br/>　　<img src="http://www.jianglan.net.cn/blog/attachments/month_0712/h2007121116170.jpg" border="0" alt=""/><br/>　　明明就是VBScript语句，怎么会提示JScript编译错误呢？百思不得其解。立即百度了一下，但没有发现任何解决的办法。后来在IIS的Application Configuration/Options页中有一项设置ASP的默认语言为JavaScript，如下图。把它改为VBScript问题得以解决。<br/>　　<img src="http://www.jianglan.net.cn/blog/attachments/month_0712/i2007121116264.jpg" border="0" alt=""/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.jianglan.net.cn/blog/article.asp?id=325</link>
			<title><![CDATA[AspJpeg组件介绍、注册、高级使用方法]]></title>
			<author>llk39@163.com(江蓝)</author>
			<category><![CDATA[Asp]]></category>
			<pubDate>Sat,17 Nov 2007 20:17:13 +0800</pubDate>
			<guid>http://www.jianglan.net.cn/blog/default.asp?id=325</guid>
		<description><![CDATA[01、什么是AspJpeg？<br/>　　AspJpeg是一款功能强大的基于Microsoft IIS环境的图片处理组件，网络上对其进行详细和深入介绍的中文文章并不多，即使有一般也只是牵涉到图片缩略图和图片水印，这与其为英文版本有着密切的关系。<br/>　　AspJpeg可以使用很少的代码在您的ASP/ASP.Net应用程序上动态的创建高质量的缩略图象，支持的图象格式有：JPEG, GIF, BMP, TIFF, PNG<br/>　　AspJpeg主要可以做到：<br/>　　生成缩略图片、生成水印图片、图片合并、图片切割、数据库支持、安全码技术<br/><br/>02、AspJpeg功能摘要<br/>　　支持JPEG、GIF、BMP、TIFF和PNG格式图片。输出格式始终为JPEG<br/>　　源图片可以来源于磁盘、内存、或者记录集（数据库）<br/>　　缩略图片可以保存到磁盘、内存、或者HTTP流<br/>　　支持三种更改大小方式: nearest-neighbor, bilinear, and bicubic<br/>　　可以在图片之上添加图片或者文字<br/>　　支持画中画<br/>　　支持复制，反转，旋转，锐化，灰度调节<br/>　　可以调节压缩比率，以得到最佳输出效果和大小<br/>　　从Jpeg图片中抽取EXIF 和 IPTC数据<br/>　　CMYK-RGB转换<br/>　　Read/write access to individual pixels of an image. （从图象中对任意象素进行读/写存取。）<br/><br/>03、AspJpeg系统需求<br/>　　Windows 95/98/NT/2000/XP/2003, and IIS 4.0+ and ASP/ASP.NET, o&#114; Visual Basic 5.0+, o&#114; Visual C++ 5.0+, o&#114; any development environment supporting COM.<br/><br/>04、AspJpeg安装<br/>　　全新安装：<br/>　　在AspJpeg安装过程中输入序列号即可，如果安装位置磁盘格式为NTFS，则可能出现访问权限问题，需手工设置安装目录对Everyone有访问权限。<br/>　　AspJpeg v1.6.0.0<br/>　　安装sn:48958-77556-02411<br/>　　AspJpeg v1.5.0<br/>　　安装sn:71316-48529-38722<br/><br/>　　更新安装：<br/>　　如果之前有装过其它版本的AspJpeg组件，则需要先卸载原来的组件，再进行新版本的安装。<br/>　　先停止IIS（Net Stop iisadmin /y）<br/>　　卸载旧版组件（regsvr32 /u Path/aspjpeg.dl（Path为安装路径））<br/>　　重启IIS（Net Start w3svc）<br/><br/>　　然后再进行全新安装或复制AspJpeg.dll文件到安装目录进行手工安装：<br/>　　regsvr32 Path/aspjpeg.dll（Path为安装路径）<br/><br/>　　如果在正常安装过程中没有输入序列号或手工安装则必须在注册表中加入以下项，为方便起见您可以直接将以下代码保存为.reg文档并导入注册表：<br/><br/>　　Windows Registry Editor Version 5.00<br/><br/>　　[HKEY_LOCAL_MACHINE\SOFTWARE\Persits Software\AspJpeg\RegKey]<br/>　　@=&#34;48958-77556-02411&#34;<br/><br/>05、如何创建一个AspJpeg实例？<br/>　　Set Jpeg = Server.Cr&#101;ateObject(&#34;Persits.Jpeg&#34;)<br/><br/>06、如何查看到期时间（是否注册成功）？<br/>　　Set Jpeg = Server.Cr&#101;ateObject(&#34;Persits.Jpeg&#34;)<br/>　　Response.Write Jpeg.Expires<br/>　　注册成功则到期时间为：9999-9-9<br/>　　否则为：安装日期加1个月期限<br/><br/>07、如何用AspJpeg组件生成图片缩略图？<br/><br/>&lt;%<br/>Set Jpeg = Server.Cr&#101;ateObject(&#34;Persits.Jpeg&#34;) &#39;创建实例<br/>Path = Server.MapPath(&#34;../images/apple.jpg&#34;) &#39;处理图片路径<br/>Jpeg.Open Path &#39;打开图片<br/>&#39;调整宽度和高度为原来的50%<br/>Jpeg.Width = Jpeg.OriginalWidth / 2<br/>Jpeg.Height = Jpeg.OriginalHeight / 2<br/>Jpeg.Save Server.MapPath(&#34;apple_small.jpg&#34;) &#39;保存图片到磁盘<br/>Jpeg.Close<br/>Set Jpeg = Nothing<br/>%&gt;<br/><br/>08、如何用AspJpeg组件生成图片水印？<br/><br/>&lt;%<br/>Set Jpeg = Server.Cr&#101;ateObject(&#34;Persits.Jpeg&#34;)<br/>Jpeg.Open Server.MapPath(&#34;images/dodge_viper.jpg&#34;)<br/>&#39;开始写文字<br/>Jpeg.Canvas.Font.Color = &amp;000000 &#39; red 颜色<br/>Jpeg.Canvas.Font.Family = &#34;Courier New&#34; &#39;字体<br/>Jpeg.Canvas.Font.Bold = True &#39;是否加粗<br/>Jpeg.Canvas.Print 10, 10, &#34;Copyright (c) <a href="http://hi.baidu.com/yongfa365." target="_blank" rel="external">http://hi.baidu.com/yongfa365.</a>&#34;<br/>&#39;打印坐标x 打印坐标y 需要打印的字符<br/>&#39;以下是对图片进行边框处理<br/>Jpeg.Canvas.Pen.Color = &amp;H000000 &#39;black 颜色<br/>Jpeg.Canvas.Pen.Width = 2 &#39;画笔宽度<br/>Jpeg.Canvas.Brush.Solid = False &#39;是否加粗处理<br/>Jpeg.Canvas.Bar 1, 1, Jpeg.Width, Jpeg.Height<br/>&#39;起始X坐标 起始Y坐标 输入长度 输入高度<br/>Jpeg.Save Server.MapPath(&#34;images/dodge_viper_framed.jpg&#34;) &#39;保存<br/>%&gt;<br/><br/>09、如何用AspJpeg组件进行图片合并？<br/>AspJpeg 1.3+ enables you to place images on top of each other via the method DrawImage. To use this method, you must cr&#101;ate two instances of the AspJpeg objects and populate both of them with images via calls to Open (or OpenBinary). When calling Canvas.DrawImage, the 2nd instance of AspJpeg is passed as an argument to this method, along with the X and Y offsets (in pixels):<br/>使用该方法，您必需创建两个AspJpeg实例对象<br/><br/>&lt;%<br/>Set Jpeg1 = Server.Cr&#101;ateObject(&#34;Persits.Jpeg&#34;)<br/>Set Jpeg2 = Server.Cr&#101;ateObject(&#34;Persits.Jpeg&#34;)<br/>Jpeg1.Open Server.MapPath(&#34;t.jpg&#34;)<br/>Jpeg2.Open Server.MapPath(&#34;t1.jpg&#34;)<br/>Jpeg1.Canvas.DrawImage 10, 10, Jpeg2 &#39; optional arguments omitted<br/>jpeg1.save Server.mappath(&#34;tt.jpg&#34;)<br/>%&gt;<br/><br/>10、如何用AspJpeg组件进行图片切割？<br/>AspJpeg 1.1+ is also capable of cutting off edges from, o&#114; cropping, the resultant thumbnails via the method Crop(x0, y0, x1, y1). The size of the cropped image is specified by the coordinates of the upper-left and lower-right corners within the resultant thumbnail, not the o&#114;iginal large image.<br/><br/>&lt;%<br/>Set Jpeg = Server.Cr&#101;ateObject(&#34;Persits.Jpeg&#34;)<br/>Jpeg.Open Server.MapPath(&#34;t.jpg&#34;)<br/>jpeg.Crop 20, 30, jpeg.Width - 20, jpeg.Height - 10<br/>jpeg.save Server.mappath(&#34;tt.jpg&#34;)<br/>Response.Write(&#34;&#34;)<br/>%&gt;<br/><br/>11、如何用AspJpeg组件创建安全码？<br/>创建安全码原理上和创建水印差不多。<br/><br/>&lt;%<br/>Function make_randomize(max_len, w_n) &#39;max_len 生成长度，w_n：0 可能包含字母，1：只为数字<br/>&nbsp;&nbsp;&nbsp;&nbsp;Randomize<br/>&nbsp;&nbsp;&nbsp;&nbsp;For intcounter = 1 To max_len<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;whatnext = Int((1 -0 + 1) * Rnd + w_n)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If whatnext = 0 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upper = 122<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lower = 97<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upper = 57<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lower = 48<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strnewpass = strnewpass &amp; Chr(Int((upper - lower + 1) * Rnd) + lower)<br/>&nbsp;&nbsp;&nbsp;&nbsp;Next<br/>&nbsp;&nbsp;&nbsp;&nbsp;make_randomize = strnewpass<br/>End Function<br/><br/>&#39;生成安全码的图片。<br/>random_num = make_randomize(4, 1) &#39;&#39;生成4位数字的安全码<br/>session(&#34;random_num&#34;) = random_num &#39;为么调用session，没有session的安全码是完全没有意义的。呵呵 .<br/><br/>Set Jpeg = Server.Cr&#101;ateObject(&#34;Persits.Jpeg&#34;) &#39;调用组件<br/>Jpeg.Open Server.MapPath(&#34;t.jpg&#34;) &#39;打开准备的图片<br/>Jpeg.Canvas.Font.Color = &amp;HFFFFFF<br/>Jpeg.Canvas.Font.Family = &#34;Arial Black&#34;<br/>Jpeg.Canvas.Font.Bold = false<br/>Jpeg.Canvas.PrintText 0, -2, random_num<br/>jpeg.save Server.MapPath(&#34;tt.jpg&#34;) &#39;保存<br/>%&gt;<br/><br/>12、如何让AspJpeg组件支援数据库？<br/>图片存进数据库只能以二进制数据保存，这里即利用AspJpeg的Binary方法，下面以两个AspJpeg用户手册上的代码为例，具体请参考AspJpeg用户手册：<br/>Opening Images from Memory<br/><br/>&lt;%&#39; Using ADO, open database with an image blob<br/>strConnect = &#34;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=&#34; &amp; Server.MapPath(&#34;../db/aspjpeg.mdb&#34;)<br/>Set rs = Server.Cr&#101;ateObject(&#34;adodb.recordset&#34;)<br/>SQL = &#34;sel&#101;ct image_blob from images2 wh&#101;re id = &#34; &amp; Request(&#34;id&#34;)<br/>rs.Open SQL, strConnect, 1, 3<br/>Set Jpeg = Server.Cr&#101;ateObject(&#34;Persits.Jpeg&#34;)<br/>&#39; Open image directly from recordset<br/>Jpeg.OpenBinary rs(&#34;image_blob&#34;).Value<br/>&#39; Resize<br/>jpeg.Width = Request(&#34;Width&#34;)<br/>&#39; Set new height, preserve o&#114;iginal aspect ratio<br/>jpeg.Height = jpeg.OriginalHeight * jpeg.Width / jpeg.OriginalWidth<br/>Jpeg.SendBinary<br/>rs.Close<br/>%&gt;<br/><br/>Output to Memory<br/><br/>&lt;%<br/>...<br/>Set rs = Server.Cr&#101;ateObject(&#34;adodb.recordset&#34;)<br/>rs.Open &#34;images&#34;, strConnect, 1, 3<br/>rs.AddNew<br/>rs(&#34;image_blob&#34;).Value = Jpeg.Binary<br/>rs.Up&#100;ate<br/>...<br/>%&gt;<br/><br/>一个生成文字水印的过程<br/>&lt;%<br/>&#39;call jpegclass(图片相对路径, 文字字体大小, 文字字体, 是否加粗, 距顶部距离, 距左边距离, 水印内容)<br/><br/>Sub jpegclass(J_imgurl, J_fontsize, J_family, J_isbold, J_top, J_Left, J_Content) &#39;调用过程名<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;If Len(J_imgurl) = 0 o&#114; Len(J_Content) = 0 Then Exit Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;Dim JPEG, font_color, font_size, font_family, f_width, f_height, f_Content<br/>&nbsp;&nbsp;&nbsp;&nbsp;Set JPEG = Server.Cr&#101;ateObject(&#34;Persits.JPEG&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;JPEG.Open Server.MapPath(J_imgurl)<br/>&nbsp;&nbsp;&nbsp;&nbsp;font_size = 10<br/>&nbsp;&nbsp;&nbsp;&nbsp;font_family = &#34;宋体&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;f_Left = 5<br/>&nbsp;&nbsp;&nbsp;&nbsp;f_top = 5<br/>&nbsp;&nbsp;&nbsp;&nbsp;If J_fontsize&lt;&gt;&#34;&#34; Then font_size = J_fontsize &#39;字体大小<br/>&nbsp;&nbsp;&nbsp;&nbsp;If J_family&lt;&gt;&#34;&#34; Then font_family = J_family &#39;字体<br/>&nbsp;&nbsp;&nbsp;&nbsp;If J_top&lt;&gt;&#34;&#34; Then f_Left = J_Left &#39;水印离图片左边位置<br/>&nbsp;&nbsp;&nbsp;&nbsp;If J_Left&lt;&gt;&#34;&#34; Then f_top = J_top &#39;水印离图片J_top位置<br/>&nbsp;&nbsp;&nbsp;&nbsp;f_Content = J_Content<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39; 添加文字水印<br/>&nbsp;&nbsp;&nbsp;&nbsp;JPEG.Canvas.Font.Color = &amp;hff0000 &#39; 红色<br/>&nbsp;&nbsp;&nbsp;&nbsp;JPEG.Canvas.Font.family = font_family<br/>&nbsp;&nbsp;&nbsp;&nbsp;JPEG.canvas.font.Size = font_size<br/>&nbsp;&nbsp;&nbsp;&nbsp;If J_isbold = 1 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JPEG.Canvas.Font.Bold = True<br/>&nbsp;&nbsp;&nbsp;&nbsp;End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;JPEG.Canvas.Print f_Left, f_top, f_Content<br/>&nbsp;&nbsp;&nbsp;&nbsp;JPEG.Save Server.MapPath(J_imgurl)<br/>&nbsp;&nbsp;&nbsp;&nbsp;Set JPEG = Nothing<br/>End Sub<br/>%&gt;]]></description>
		</item>
		
			<item>
			<link>http://www.jianglan.net.cn/blog/article.asp?id=324</link>
			<title><![CDATA[ASP输出N行N列表格]]></title>
			<author>llk39@163.com(江蓝)</author>
			<category><![CDATA[Asp]]></category>
			<pubDate>Sat,17 Nov 2007 19:57:26 +0800</pubDate>
			<guid>http://www.jianglan.net.cn/blog/default.asp?id=324</guid>
		<description><![CDATA[　　几乎在每个站点中我们都要使用程序来输出列表：新闻列表、产品列表等等，输出的方式也因内容的不同而不同，对于新闻列表，通常是一行一行的循环输出；对于产品列表，通常得一个单元格一个单元格的输出。下边我们就用ASP来输出一个五行四列的表格。<br/><br/>1、一行一行的输出<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;%<br/>Response.Write(&#34;&lt;table border=&#34;&#34;1&#34;&#34; width=&#34;&#34;200&#34;&#34;&gt;&#34;)<br/>For i=1 to 5<br/>&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(&#34;&lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;/tr&gt;&#34;)<br/>Next<br/>Response.Write(&#34;&lt;/table&gt;&#34;)<br/>%&gt;</div></div><br/>这没什么好说的了，大家都看得明白。<br/><br/>2、一个单元格一个单元格的输出<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;%<br/>Response.Write(&#34;&lt;table border=&#34;&#34;1&#34;&#34; width=&#34;&#34;200&#34;&#34;&gt;&#34;)<br/>For i=1 to 18<br/>&nbsp;&nbsp;&nbsp;&nbsp; If i mod 4 = 1 Then Response.Write(&#34;&lt;tr&gt;&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(&#34;&lt;td&gt; &lt;/td&gt;&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; If i mod 4 = 0 Then Response.Write(&#34;&lt;/tr&gt;&#34;)<br/>Next<br/>&#39;补足单元格<br/>i = i - 1<br/>If i mod 4&lt;&gt;0 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp; For j=1 to 4-i mod 4<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(&#34;&lt;td&gt;补&lt;/td&gt;&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(&#34;&lt;/tr&gt;&#34;)<br/>End If<br/>Response.Write(&#34;&lt;/table&gt;&#34;)<br/>%&gt;</div></div><br/>　　这边需要说明一下：网上很多的输出N行N列表格的ASP中都没有考虑最后一行的列数是否完整，即没有上边的补足部分，结果输出一个残缺的表格。细节上的问题，毛病虽不大，但还是希望大家注意下。]]></description>
		</item>
		
			<item>
			<link>http://www.jianglan.net.cn/blog/article.asp?id=323</link>
			<title><![CDATA[Microsoft JET Database Engine 错误 80004005 未指定的错误]]></title>
			<author>llk39@163.com(江蓝)</author>
			<category><![CDATA[Asp]]></category>
			<pubDate>Sat,17 Nov 2007 10:08:11 +0800</pubDate>
			<guid>http://www.jianglan.net.cn/blog/default.asp?id=323</guid>
		<description><![CDATA[错误信息：<br/>　　Microsoft JET Database Engine 错误 &#39;80004005&#39; 未指定的错误 （Provider 错误）<br/><br/>造成原因：<br/>　　权限问题，系统缓存目录权限不足<br/><br/>解决方法：<br/>　　把系统盘如 C:\WINNT\Temp 目录权限加上 Everyone 可读取权限，如果是2003的系统给C:\WINDOWS\Temp加上了Everyone的权限还是没有解决问题的话，那就给C:\WINDOWS\Temp目录再加上“Internet 来宾帐户”即IUSR_电脑名的“写”的权限]]></description>
		</item>
		
			<item>
			<link>http://www.jianglan.net.cn/blog/article.asp?id=293</link>
			<title><![CDATA[Asp讲座之Cookies]]></title>
			<author>llk39@163.com(江蓝)</author>
			<category><![CDATA[Asp]]></category>
			<pubDate>Wed,24 Oct 2007 14:23:19 +0800</pubDate>
			<guid>http://www.jianglan.net.cn/blog/default.asp?id=293</guid>
		<description><![CDATA[　　什么是 Cookie？Cookie 其实是一个标签，经常可能听到的中文翻译：小舔饼。当你访问一个需要唯一标识你的站址的 WEB 站点时，它会在你的硬盘上留下一个标记，下一次你访问同一个站点时，站点的页面会查找这个标记。<br/><br/>　　每个 WEB 站点都有自己的标记，标记的内容可以随时读取，但只能由该站点的页面完成。每个站点的Cookie与其他所有站点的Cookie存在同一文件夹中的不同文件内（你可以在 win98 的 Windows 目录下的 Cookie 文件夹中找到它们，而 win2k 则在&nbsp;&nbsp;Documents and Settings 文件夹下特定用户的 cookies 文件夹中）。<br/><br/>　　一个 Cookie 就是一个唯一标识客户的标记，Cookie 可以包含在一个对话期或几个对话期之间某个 WEB 站点的所有页面共享的信息，使用 Cookie 还可以在页面之间交换信息。这项功能经常被使用在要求认证客户密码以及电子公告板、WEB 聊天室等 ASP 程序中。<br/><br/>　　尽管现在听起来 cookie没有什么激动人心的，但实际上利用它，你能实现许多有意义的功能！比如说：你可以在站点上放置一个调查问答表，询问访问者最喜欢的颜色和字体，然后根据这些定制用户的web界面。并且，你还可以保存访问者的登录密码，这样，当访问者再次访问这个站点时，不用再输入密码进行登录。 <br/><br/>　　当然，cookie也有一些不足。首先，由于利用cookie的功能可以编程实现一些不良企图，所以大多数的浏览器中都有安全设定，其中可以设置是否允许或者接受cookie（IE浏览器中“工具”--“Internet选项...”--“安全”--“自定义级别”--“Cookie的使用”； Netscape浏览器中“工具”--“Cookie管理器”--“管理贮存的Cookie”即可），因此这就不能保证随时能使用cookie。再者，访问者可能有意或者无意地删除cookie。当访问者的机器遇到“蓝屏”死机时，或者重新格式化硬盘、安装系统后，原来保存的cookie将全部丢失。最后一点，有一些最初始的浏览器并不能支持cookie。<br/><br/>一、怎样利用cooklie？ <br/><br/>　　有2种使用cookie的基本方式：<br/><br/>　　1、将cookie写入访问者的计算机（使用 Response 命令）<br/><br/>　　2、从访问者的计算机中取回cookie（使用 Request 命令）<br/><br/>◆　创建cookie的基本语法: Response.Cookies(cookie)[(key)|.attribute]=value<br/><br/>　　这里的 cookie 是指定 cookie 的名称。<br/><br/>　　而如果指定了 key，则该 cookie 就是一个字典。<br/><br/>　　测试一、cookie是否为一个字典可用后面代码显示布尔值：&lt;%=Request.Cookies(&#34;cookiename&#34;).HasKeys%&gt;。为true是字典，false则不是。<br/><br/>　　Attribute 指定 cookie 自身的有关信息。Attribute 参数可以是下列之一 : <br/><br/>&nbsp;&nbsp;　① Domain 若被指定，则cookie将被发送到对该域的请求中去。域属性表明cookie由哪个网站产生或者读取，默认情况下，cookie的域属性设置为产生它的网站，但你也可以根据需要改变它。如：Response.Cookies(&#34;CookieName&#34;).Domain =&nbsp;&nbsp;&#34;www.7dspace.com&#34;<br/><br/>　　② Path 为一路径属性，该属性可以实现更多的安全要求，通过设置网站上精确的路径，就能限制 cookie的使用范围。如果未设置该属性，则使用应用程序的路径。如：Response.Cookies(&#34;CookieName&#34;).Path =&nbsp;&nbsp;&#34;/maindir/subdir/path&#34; ）<br/><br/>　　③ Expires 指定 cookie 的过期日期。为了在会话结束后将cookie 存储在客户端磁盘上，或在许多时候，我们希望能更长时间地在访问者的计算机上保存cookie。必须设置该日期。若此项属性的设置未超过当前日期，则在任务结束后 cookie 将到期。<br/><br/>　　后面的代码，就可以设置cookie的使用到期时间为“2010年1月1日”：Response.Cookies(&#34;CookieName&#34;).Expires=#January 01, 2010#<br/><br/>　　后面的代码，将设定cookie的过期时间为“cookie的创建时间＋365天”：Response.Cookies(&#34;CookieName&#34;).Expires=Date+365<br/><br/>　　但最好不要随便写 Response.Cookies(&#34;CookieName&#34;).Expires=Date，这样页面之间的调用时值会为空。<br/><br/>　　执行下面的代码将会在访问者的计算机中创建一个cookie，名字＝VisitorName，值＝Ken ：<br/><br/>　　Response.Cookies(&#34;VisitorName&#34;)=&#34;Ken&#34;<br/><br/>　　执行下面的代码将会在访问者的计算机中创建一个cookie，名字＝VisitorName，值＝表单中UserName的值<br/><br/>　　Response.Cookies(&#34;VisitorName&#34;)=Request.Form(&#34;UserName&#34;)<br/><br/>　　你可以扩展下面的代码成为Cookie子关键值（CookieSubName），即cookie字典的生成。代码如下：<br/><br/>　　Response.Cookies(&#34;VisitorName&#34;)(&#34;FirstName&#34;)=&#34;Ken&#34; <br/>　　Response.Cookies(&#34;VisitorName&#34;)(&#34;LastName&#34;)=&#34;Baumbach&#34; <br/><br/>◆　读取cookie的基本语法：Request.Cookies(cookie)[(key)|.attribute]<br/><br/>　　cookie 指定要检索其值的 cookie。 <br/><br/>　　key 可选参数，用于从 cookie 字典中检索子关键字的值。 <br/><br/>　　attribe 指定 cookie 自身的有关信息。如：HasKeys 只读，指定 cookie 是否包含关键字。<br/><br/>　　如果客户端浏览器发送了两个同名的 cookie,那么 Request.Cookie 将返回其中路径结构较深的一个。例如，如果有两个同名的的 cookie，但其中一个的路径属性为 /www/ 而另一个为 /www/home/，客户端浏览器同时将两个 cookie 都发送到 /www/home/ 目录中，那么 Request.Cookie 将只返回第二个cookie。<br/><br/>二、案例分析<br/><br/>num.asp（通过留在本地磁盘上的cookie记录一年内访问本站的次数，第一次显示“首次访问”，以后显示“第几次访问”）<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;%<br/>dim num<br/>num = request.cookies(&#34;visitnum&#34;)<br/>If num &gt; &#34;0&#34; Then<br/>&nbsp;&nbsp; num = num + 1<br/>&nbsp;&nbsp; Response.write &#34;您已是第&#34;&amp;num&amp;&#34;次访问本站点了。&#34;<br/>Else<br/>&nbsp;&nbsp; Response.write &#34;欢迎您首次访问本站。&#34;<br/>&nbsp;&nbsp; num = 1<br/>End If<br/>response.cookies(&#34;visitnum&#34;) = num<br/>response.cookies(&#34;visitnum&#34;).expires = date+365<br/>%&gt;</div></div><br/><br/>showcookie.asp（从Cookies文件夹中遍历出浏览器所有的Cookie name，以及相关的字典Cookie的显示（蓝字显示））<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;%<br/>For each cookie in Request.Cookies<br/>&nbsp;&nbsp;If Request.cookies(cookie).HasKeys =false Then<br/>&nbsp;&nbsp;Response.write cookie &amp; &#34;=&#34; &amp; Request.Cookies(cookie)<br/>&nbsp;&nbsp;Response.write (&#34;&#34;) <br/>Else<br/>&nbsp;&nbsp;For each key in Request.Cookies(cookie)<br/>&nbsp;&nbsp;&nbsp;&nbsp;Response.write (&#34;&lt;font color=blue&gt;&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;Response.write cookie &amp; &#34;.(&#34;&amp;key&amp;&#34;)&#34; &amp; &#34;=&#34; &amp; Request.Cookies(cookie)(key)<br/>&nbsp;&nbsp;&nbsp;&nbsp;Response.write (&#34;&lt;/font&gt;&#34;)<br/>&nbsp;&nbsp;Next<br/>End If<br/>Next<br/>%&gt;</div></div><br/><br/>check.asp<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;%@ LANGUAGE=&#34;VBSCRIPT&#34; %&gt;<br/>&lt;%<br/>&#39;首先，设置页面。然后，检查表单变量（在同一个页面中）。如果表单变量存在，就创建cookie，并设置到期时间<br/>bgcolor = Request.Form(&#34;bgcolor&#34;)<br/>fgcolor = Request.Form(&#34;fgcolor&#34;)<br/>pwd = Request.form(&#34;pwd&#34;)<br/><br/>If bgcolor &lt;&gt; &#34;&#34; o&#114; fgcolor &lt;&gt; &#34;&#34; Then<br/>&nbsp;&nbsp; Response.cookies(&#34;check&#34;)(&#34;bgcolor&#34;) = bgcolor<br/>&nbsp;&nbsp; Response.Cookies(&#34;check&#34;)(&#34;fgcolor&#34;) = fgcolor<br/>&nbsp;&nbsp; Response.Cookies(&#34;check&#34;)(&#34;pwd&#34;) = pwd<br/>&nbsp;&nbsp; Response.Cookies(&#34;check&#34;).Expires = #may 01, 2004#<br/>End If<br/><br/>&#39;接着，读取cookie<br/>bgcolor = request.cookies(&#34;check&#34;)(&#34;bgcolor&#34;)<br/>fgcolor = request.cookies(&#34;check&#34;)(&#34;fgcolor&#34;)<br/>pwd = request.cookies(&#34;check&#34;)(&#34;pwd&#34;)<br/><br/>&#39;如果cookie在访问者的计算机上不存在，就创建一个表单，询问相关信息<br/>If bgcolor = &#34;&#34; And fgcolor = &#34;&#34; And pwd = &#34;&#34; Then<br/>%&gt;<br/>&lt;HTML&gt; <br/>&lt;body&gt;<br/>&lt;div align=&#34;center&#34;&gt;<br/>&lt;Form action=&#34;check.asp&#34; method=&#34;post&#34;&gt;<br/>&nbsp;&nbsp;Bgcolor: &lt;input type=&#34;text&#34; name=&#34;bgcolor&#34;&gt;&lt;br&gt;<br/>&nbsp;&nbsp;Fgcolor: &lt;input type=&#34;text&#34; name=&#34;fgcolor&#34;&gt;&lt;br&gt;<br/>&nbsp;&nbsp;Password:&lt;input type=&#34;password&#34; name=&#34;pwd&#34;&gt;&lt;br&gt;<br/>&nbsp;&nbsp;&lt;input type=&#34;submit&#34; value=&#34;Submit&#34;&gt;<br/>&lt;/Form&gt;<br/>&lt;/div&gt;<br/>&lt;/body&gt;<br/>&lt;%<br/>End If<br/><br/>&#39;如果cookie已经存在，并且bgcolor存在，就跳转到color.asp。 <br/>If bgcolor &lt;&gt; &#34;&#34; then<br/>&nbsp;&nbsp; Response.Redirect &#34;color.asp&#34;<br/>End If<br/>%&gt;</div></div><br/><br/>color.asp（显示用户爱好颜色的页面特性）<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;%<br/>bgcolor = request.cookies(&#34;check&#34;)(&#34;bgcolor&#34;)<br/>fgcolor = request.cookies(&#34;check&#34;)(&#34;fgcolor&#34;)<br/>pwd = request.cookies(&#34;check&#34;)(&#34;pwd&#34;)<br/>response.write(&#34;&lt;body bgcolor=&#34;&amp;bgcolor&amp;&#34;&gt;&lt;font color=&#34;&amp;fgcolor&amp;&#34;&gt;&#34;)<br/>%&gt;<br/><br/>你的密码是：&lt;%response.write(&#34; &#34;&amp;pwd&amp;&#34; &#34;)%&gt;</div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.jianglan.net.cn/blog/article.asp?id=264</link>
			<title><![CDATA[Jmail组件发送邮件之绝对能用的函数]]></title>
			<author>llk39@163.com(江蓝)</author>
			<category><![CDATA[Asp]]></category>
			<pubDate>Sun,07 Oct 2007 07:15:32 +0800</pubDate>
			<guid>http://www.jianglan.net.cn/blog/default.asp?id=264</guid>
		<description><![CDATA[　　Jmail组件的这些对象为服务器端对邮件的操作提供了各种各样的功能，每个对象都有其独特应用，大致如下：<br/><br/>　　01、pop3对象是对pop3邮件接收服务器的操作。<br/>　　02、Messages对象是有关邮件集合的对象。<br/>　　03、Message对象是有关邮件的对象，其是Jmail组件最常用的对象，能发送邮件信息，也能接收邮件信息。<br/>　　04、Header对象是与邮件头相关的对象。<br/>　　05、Recipients对象是有关接收邮件集合的对象。<br/>　　06、Recipient对象是有关接收邮件的对象。<br/>　　07、Attachments对象是有关邮件附件集合的对象。<br/>　　08、Attachment对象是有关邮件附件的对象。<br/>　　09、MailMerge对象是有关邮件模板的对象。<br/>　　10、PGPKeys对象是有关邮件PGP密钥集合的对象。<br/>　　11、PGPKeyInfo对象是有关邮件PGP密钥信息的对象。<br/>　　……<br/><br/>　　在邮件发送的Web应用中，Message对象是最常用的，在使用之前需要建立该对象，并赋值到变量上。<br/>　　<div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">Set jmail = Server.Cr&#101;ateObject(&#34;JMAIL.Message&#34;)</div></div><br/><br/>　　其中关于Message对象有如下常用的属性和方法应用：<br/><br/>　　01、Silent属性表示屏蔽例外错误，返回FALSE或TRUE值，当值为TRUE时，表示邮件发送会忽略错误，不将错误信息返回给操作系统。<br/>　　　　jmail.silent = true<br/><br/>　　02、Logging属性表示是否启用日志。<br/>　　　　jmail.logging = true<br/><br/>　　03、Charset属性设置邮件显示的字符集，中文简体可使用GB2312。<br/>　　　　jmail.Charset = &#34;GB2312&#34;<br/><br/>　　04、ContentType属性表示邮件正文的类型。<br/>　　　　jmail.ContentType = &#34;text/html&#34;<br/><br/>　　05、AddRecipient方法表示收件人的E-Mail地址。<br/>　　　　jmail.AddRecipient (&#34;cnbruce@126.com&#34;)<br/><br/>　　06、From属性表示发件人的E-Mail地址。该地址一般与使用SMTP服务器验证时所需的登录帐户相同。<br/>　　　　jmail.From = &#34;dw8asp@126.com&#34;<br/><br/>　　07、FromName属性表示发件人的名称。<br/>　　　　jmail.FromName = &#34;BruceWolf&#34;<br/><br/>　　08、Subject属性表示设置发送邮件的标题。<br/>　　　　jmail.Subject = &#34;这是邮件的标题&#34;<br/><br/>　　09、Body属性表示设置发送邮件的正文内容，可使用HTML标签代码<br/>　　　　jmail.Body = &#34;这是邮件的内容&lt;br&gt;换行的内容显示&#34;<br/><br/>　　10、Priority属性表示邮件发送的优先级，1为最快，5为最慢，3为默认值。<br/>　　　　jmail.Priority = 1<br/><br/>　　11、MailServerUserName属性表示当邮件服务器使用SMTP发信验证时设置的登录帐户。<br/>　　　　jmail.MailServerUserName = &#34;dw8asp@126.com&#34;<br/><br/>　　12、MailServerPassword属性表示当邮件服务器使用SMTP发信验证时设置的登录密码。<br/>　　　　jmail.MailServerPassword = &#34;**************&#34;<br/><br/>　　13、Send方法表示通过指定的邮件发送服务器进行邮件的发送。需要注意的即是该邮件服务器地址与MailServerUserName和MailServerPassword中的值是一致的。<br/>　　　　jmail.Send(&#34;smtp.126.com&#34;)<br/><br/>　　14、Close方法表示释放Jmail和邮件服务器连接而使用的缓存空间。<br/>　　　　jmail.Close()<br/><br/>　　由于采用邮件服务器的不同，发送邮件接收人的不同，以及邮件标题和内容的不同，综合这些经常需要变化的值，自定义如下的函数用来完成Jmail发送邮件的功能。<br/><br/>Jmail邮件发送的函数<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;%<br/>Function Send_Email(smtpHost,smtpUser,smtpPass,mailTo,FromName,subject,content)<br/>&nbsp;&nbsp;Set jmail = Server.Cr&#101;ateObject(&#34;JMAIL.Message&#34;)<br/>&nbsp;&nbsp;jmail.silent = true<br/>&nbsp;&nbsp;jmail.logging = true<br/>&nbsp;&nbsp;jmail.Charset = &#34;gb2312&#34;<br/>&nbsp;&nbsp;jmail.ContentType = &#34;text/html&#34;<br/>&nbsp;&nbsp;jmail.AddRecipient mailTo<br/>&nbsp;&nbsp;jmail.From = smtpUser<br/>&nbsp;&nbsp;jmail.FromName = FromName<br/>&nbsp;&nbsp;jmail.Subject = subject<br/>&nbsp;&nbsp;jmail.Body = content<br/>&nbsp;&nbsp;jmail.Priority = 1<br/>&nbsp;&nbsp;jmail.MailServerUserName = smtpUser<br/>&nbsp;&nbsp;jmail.MailServerPassword = smtpPass<br/>&nbsp;&nbsp;jmail.Send(smtpHost)<br/>&nbsp;&nbsp;jmail.Close()<br/>&nbsp;&nbsp;response.write(&#34;邮件发送成功&#34;)<br/>End Function<br/>%&gt;</div></div><br/><br/>其中Send_Email表示自定义的函数名称<br/>参数smtpHost表示邮件服务器地址<br/>参数smtpUser表示发信验证所需的登录帐户<br/>参数smtpPass表示发信验证所需的登录密码<br/>参数mailTo表示邮件收件人的E-Mail地址<br/>参数FromName表示邮件发件人的名称<br/>而参数subject和content则分别表示邮件的标题和正文内容<br/><br/>通过如下方法可应用该函数：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">Call Send_EMail(&#34;smtp.126.com&#34;,&#34;dw8asp@126.com&#34;,&#34;******&#34;,&#34;cnbruce@msn.com&#34;,&#34;cnbruce&#34;,&#34;标题&#34;,&#34;邮件正文内容&#34;)</div></div><br/><br/>或者有个人邮局的可使用<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">Call Send_EMail(&#34;mail.cnbruce.com&#34;,&#34;root@cnbruce.com&#34;,&#34;******&#34;,&#34;cnbruce@msn.com&#34;,&#34;cnbruce&#34;,&#34;标题&#34;,&#34;邮件正文内容&#34;)</div></div><br/><br/><a target="_blank" href="http://www.dw8.cn/2006/mail" rel="external">调试地址</a>]]></description>
		</item>
		
			<item>
			<link>http://www.jianglan.net.cn/blog/article.asp?id=263</link>
			<title><![CDATA[Access数据库在线压缩的实现]]></title>
			<author>llk39@163.com(江蓝)</author>
			<category><![CDATA[Asp]]></category>
			<pubDate>Sun,07 Oct 2007 02:27:59 +0800</pubDate>
			<guid>http://www.jianglan.net.cn/blog/default.asp?id=263</guid>
		<description><![CDATA[　　压缩 Access 数据库或Access项目实际上是复制该文件，并重新组织文件在磁盘上的存储方式。压缩同时优化了 Access 数据库和 Access 项目的性能。 <br/><br/>　　如果在 Access 数据库中删除数据或对象，或者在 Access 项目中删除对象，Access 数据库或 Access 项目可能会产生碎片并会降低磁盘空间的使用效率。压缩 Access 数据库或Access项目实际上是复制该文件，并重新组织文件在磁盘上的存储方式。压缩同时优化了 Access 数据库和 Access 项目的性能。<br/><br/>　　所以我们在对日益增大的数据库导致的ASP程序慢得无法忍受的时候，就想到了要压缩他。但常规的做法把他下载到本地然后用MSaccess来完成压缩操作，然后再上传！后来我想是否可以在线实现对ACCESS数据库的压缩呢？为此我查了一些资料，但还是不得要领。<br/><br/>　　我在本机测试获得成功，又上网对自己的动网论坛实施了压缩操作结果也完全正常，数据库从原来的3.7M压缩到了2.1M从而证实是可行的。需要注意的是：本程序其实是通过FSO权限和JET引擎连接，因此在使用之前请确认你的服务器支持FSO（filesystemobject)权限并安装的 ACCESS最新驱动！从安全出发，请在压缩之前备份原始数据库！已经测试通过的运行环境：WIN98SE+PWS、WIN2000+IIS5.0<br/><br/>　　下面是我整理后的源代码，复制另存为compact.asp并上传到数据库所在目录即可正常使用。<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;title&gt;ACCESS数据库压缩程序&lt;/title&gt;<br/>&lt;/head&gt;<br/>&lt;body bgcolor=&#34;e0f8ef&#34;&gt;<br/>&lt;div&gt;&lt;div align=&#34;center&#34;&gt;&lt;font color=&#34;#3300FF&#34;&gt;&lt;b&gt;&lt;font size=&#34;5&#34;&gt;通用ACCESS数据库在线压缩程序&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;&lt;/div&gt;<br/>&lt;div&gt;&lt;br&gt;本程序其实是通过FSO权限和JET引擎连接，因此在使用之前请确认你的服务器支持FSO（filesystemobject)权限并安装的ACCESS最新驱动！从安全出发，请在压缩之前备份原始数据库！&lt;/div&gt;&lt;br&gt;<br/>&lt;div align=&#34;center&#34;&gt;运行环境：在WIN98SE+PWS、WIN2000+IIS5.0 &lt;br&gt;<br/><br/>&lt;%<br/>Const JET_3X = 4<br/>Function CompactDB(dbPath, boolIs97)<br/>&nbsp;&nbsp;Dim fso, Engine, strDBPath<br/>&nbsp;&nbsp;strDBPath = left(dbPath,instrrev(DBPath,&#34;\&#34;))<br/>&nbsp;&nbsp;Set fso = Cr&#101;ateObject(&#34;Scripting.FileSystemObject&#34;) <br/><br/>&nbsp;&nbsp;If fso.FileExists(dbPath) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp; Set Engine = Cr&#101;ateObject(&#34;JRO.JetEngine&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; If boolIs97 = &#34;True&#34; Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Engine.CompactDatabase &#34;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&#34; &amp; dbpath, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&#34; &amp; strDBPath &amp; &#34;temp.mdb;&#34; _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp; &#34;Jet OLEDB:Engine Type=&#34; &amp; JET_3X<br/>&nbsp;&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Engine.CompactDatabase &#34;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&#34; &amp; dbpath, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&#34; &amp; strDBPath &amp; &#34;temp.mdb&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp; fso.CopyFile strDBPath &amp; &#34;temp.mdb&#34;,dbpath<br/>&nbsp;&nbsp;&nbsp;&nbsp; fso.Del&#101;teFile(strDBPath &amp; &#34;temp.mdb&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; Set fso = nothing<br/>&nbsp;&nbsp;&nbsp;&nbsp; Set Engine = nothing<br/>&nbsp;&nbsp;&nbsp;&nbsp; CompactDB = &#34;你的数据库, &#34; &amp; dbpath &amp; &#34;, 已经被压缩&#34; &amp; vbCrLf<br/>&nbsp;&nbsp;Else<br/>&nbsp;&nbsp;&nbsp;&nbsp; CompactDB = &#34;你输入的数据库路径或名称未找到，请重试&#34; &amp; vbCrLf<br/>&nbsp;&nbsp;End If<br/>End Function<br/>%&gt;<br/>&lt;/div&gt;<br/><br/>&lt;form name=&#34;compact&#34; method=&#34;post&#34; action=&#34;compact.asp&#34;&gt;<br/>&lt;div align=&#34;center&#34;&gt;&lt;font size=&#34;2&#34;&gt;&lt;b&gt;&lt;font color=&#34;#FF0000&#34;&gt;压缩选项，请仔细填写！&lt;/font&gt;&lt;/b&gt;&lt;br&gt;<br/>&lt;br&gt;输入数据库全称：&lt;input type=&#34;text&#34; name=&#34;dbpath&#34;&gt;（包括扩展名，如MDB、ASA、ASP等）&lt;br&gt;<br/>&lt;br&gt;&lt;input type=&#34;checkbox&#34; name=&#34;boolIs97&#34; value=&#34;True&#34;&gt;检查是否为ACCESS97数据库&lt;br&gt;(默认为ACCESS2000的数据库)&lt;br&gt;<br/>&lt;br&gt;&lt;input type=&#34;submit&#34; name=&#34;submit&#34; value=&#34;确认压缩&#34;&gt;&lt;/font&gt;&lt;/div&gt;<br/>&lt;/form&gt;<br/>&lt;div align=&#34;center&#34;&gt;&lt;font size=&#34;2&#34;&gt;<br/>&lt;%<br/>Dim dbpath,boolIs97<br/>dbpath = request(&#34;dbpath&#34;)<br/>boolIs97 = request(&#34;boolIs97&#34;)<br/><br/>If dbpath &lt;&gt; &#34;&#34; Then<br/>dbpath = server.mappath(dbpath)<br/>response.write(CompactDB(dbpath,boolIs97))<br/>End If<br/>%&gt;<br/>&lt;br&gt;<br/>&lt;/font&gt;<br/>&lt;/div&gt;</div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.jianglan.net.cn/blog/article.asp?id=259</link>
			<title><![CDATA[Asp输出Word、Excel文件]]></title>
			<author>llk39@163.com(江蓝)</author>
			<category><![CDATA[Asp]]></category>
			<pubDate>Thu,04 Oct 2007 09:18:44 +0800</pubDate>
			<guid>http://www.jianglan.net.cn/blog/default.asp?id=259</guid>
		<description><![CDATA[<div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.jianglan.net.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;%<br/>&nbsp;&nbsp;&nbsp;&nbsp;Dim Fso,FileExt,strFilePath,Mime <br/>&nbsp;&nbsp;&nbsp;&nbsp;strFilePath = &#34;D:\asptoword.doc&#34; <br/>&nbsp;&nbsp;&nbsp;&nbsp;Set Fso=Server.Cr&#101;ateObject(&#34;Scripting.FileSystemObject&#34;) <br/>&nbsp;&nbsp;&nbsp;&nbsp;FileExt = Fso.GetExtensionName(strFilePath)&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set fso=Nothing <br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;Sel&#101;ct Case FileExt <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case &#34;doc&#34; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mime=&#34;Application/msword&#34; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case &#34;xls&#34; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mime=&#34;Application/msexcel&#34; <br/>&nbsp;&nbsp;&nbsp;&nbsp;End Sel&#101;ct <br/> <br/>Call OutPut(strFilePath,Mime) <br/> <br/>&#39;###################################################### <br/>Function OutPut(strFilePath,Mime) <br/>Response.ContentType = Mime <br/>Const adTypeBinary = 1 <br/>Set objStream = Server.Cr&#101;ateObject(&#34;ADODB.Stream&#34;) <br/>objStream.Open <br/>objStream.Type = adTypeBinary <br/>objStream.LoadFromFile strFilePath <br/>Response.BinaryWrite objStream.Read <br/>objStream.Close <br/>Set objStream = Nothing <br/>End Function <br/>&#39;###################################################### <br/>%&gt;</div></div>]]></description>
		</item>
		
</channel>
</rss>
