<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[logang - Donet]]></title>
  <subtitle type="html"><![CDATA[搜索无处不在，信息引领未来]]></subtitle>
  <id>http://www.logang.com/</id>
  <link rel="alternate" type="text/html" href="http://www.logang.com/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.logang.com/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.8">pj_blog3</generator> 
  <updated>2007-02-10T20:09:42+08:00</updated>

  <entry>
	  <title type="html"><![CDATA[替换网页内容的代码]]></title>
	  <author>
		 <name>logang</name>
		 <uri>http://www.logang.com/</uri>
		 <email>logang@sina.com</email>
	  </author>
	  <category term="" scheme="http://www.logang.com/default.asp?cateID=14" label="Donet" /> 
	  <updated>2007-02-10T20:09:42+08:00</updated>
	  <published>2007-02-10T20:09:42+08:00</published>
		  <summary type="html"><![CDATA[<p>&lt;script language=&quot;javascript&quot;&gt;<br />function showTips(){<br />&nbsp;<br />&nbsp;var html&nbsp; = &quot;&lt;table width='100%' height='100%' bgcolor='#ffffff'&gt;&quot;;<br />&nbsp;&nbsp;html += &quot;&lt;tr&gt;&lt;td height='30' style='font-size:14px;color:red;padding-left:30px;' nowrap&gt;&lt;b&gt;此页面包含下列非法关键词，已被中止执行&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;<br />&nbsp;&nbsp;html += &quot;&lt;/table&gt;&quot;;</p>
<p>&nbsp;if(document.body){<br />&nbsp;&nbsp;var pannel = document.createElement(&quot;DIV&quot;);<br />&nbsp;&nbsp;var width = screen.width;<br />&nbsp;&nbsp;var height = screen.height;<br />&nbsp;&nbsp;//var body = document.documentElement ? document.documentElement : document.body;<br />&nbsp;&nbsp;var body = document.body;<br />&nbsp;&nbsp;var pageWidth = body.clientWidth;<br />&nbsp;&nbsp;var pageHeight = body.clientHeight;<br />&nbsp;&nbsp;pannel.style.width = width;<br />&nbsp;&nbsp;pannel.style.height = height;<br />&nbsp;&nbsp;pannel.style.background = &quot;#ffffff&quot;;<br />&nbsp;&nbsp;pannel.style.position = &quot;absolute&quot;;<br />&nbsp;&nbsp;pannel.style.pixelLeft = pageWidth/2 - (width/2);<br />&nbsp;&nbsp;pannel.style.pixelTop = pageHeight/2 + body.scrollTop-(height/2);<br />&nbsp;&nbsp;pannel.style.border = &quot;1px solid #999999&quot;;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;pannel.innerHTML = html;<br />&nbsp;&nbsp;body.innerHTML = &quot;&quot;;<br />&nbsp;&nbsp;body.appendChild(pannel);<br />&nbsp;&nbsp;return pannel;<br />&nbsp;}else{<br />&nbsp;&nbsp;document.write(&quot;&lt;div style='width:100%;height:500;background:#ffffff;border:1px solid #999999;position:absolute;left:10px;top:10px'&gt;&quot;);<br />&nbsp;&nbsp;document.write(html);<br />&nbsp;&nbsp;document.write(&quot;&lt;/div&gt;&quot;);<br />&nbsp;}<br />}</p>
<p>showTips();<br />&lt;/script&gt;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.logang.com/article.asp?id=115" /> 
	  <id>http://www.logang.com/default.asp?id=115</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[网站设计制作规范]]></title>
	  <author>
		 <name>logang</name>
		 <uri>http://www.logang.com/</uri>
		 <email>logang@sina.com</email>
	  </author>
	  <category term="" scheme="http://www.logang.com/default.asp?cateID=14" label="Donet" /> 
	  <updated>2007-01-11T10:34:29+08:00</updated>
	  <published>2007-01-11T10:34:29+08:00</published>
		  <summary type="html"><![CDATA[<p><span lang="EN-US" style="COLOR: blue"><br /><font color="#000000">总 论 <br />&nbsp;本规范既是一个网站开发规范,并不是一个一成不变的必须严格遵守的条文，特殊情况下要灵活运用，做一定的变通。但是，请大家千万不要随意更改规范。如果有任何问题，请及时与项目负责人沟通。<br />&nbsp;主目录下应有应该包含的文件<br />/xx需求文档&nbsp;&nbsp;&nbsp; xx为该网站的中文名称，需求文档下应包含需求说明文档和客户提供的所以资料以及修改意见&nbsp; 如果修改意见是文本形式就用&nbsp; 修改意见20070110.txt 命名 如果还包含其他资料就加个文件夹 修改意见20070110&nbsp; 在交到美工之前，网站栏目、主色调、网站的分辨率（即宽屏还是窄屏）三者缺一不可。<br />/设计资料&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设计资料下应该包含美工设计整个网站的所有图形，flash和文本资料，便于存档和以后修改网站内容<br />/images&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 切图图片文件夹,除了图片外还应包含某些可能需要修改以及程序员后面要用到的图片文件留存psd或png格式图片，最好以相同的名字命名，扩展名不同<br />/main.css&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 网站使用统一风格的主样式表文件<br />/help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目录,存放说明文件。说明文件包括：目录说明、文件列表说明、存放位置、文件名称、功能及处理逻辑描述、所涉及的库表、调用关系。<br />&nbsp;数据库说明：数据库位置、空间分配要求、表设计、关系设计、视图设计、存储过程设计等。<br />&nbsp;▲ 静态页面制作注意事项</font>
<p><font color="#000000">&nbsp;一、 制 作 常 规 要 求</font></p>
<p><font color="#000000">&nbsp;主要页面要写企业（网站名称）名称+栏目名称（主页要写上企业[或网站]中英文名称,没有英文就不写英文）<br />&nbsp;主要页面meta字段便于搜索引擎查找。<br />&nbsp;尽量使用广泛支持的技术。以最流行的浏览器的最普及版本为标准，同时照顾低版本浏览器。<br />&nbsp;不使用过大的图片、动画、声音.不使用过长的滚屏<br />&nbsp;及时删除无用文件，防止无谓的下载速度减慢 <br />&nbsp;由于server的linux系统，严格区分文件大小写!所有文件全部以小写字母命名，包括图形文件.禁止用中文作文件名。<br />&nbsp;在1024X768分辩率下应在浏览器中不出现横向的流动条； <br />&nbsp;通常情况下页面应以居中为主，如有特殊要求可以设置居顶、居左；</font></p>
<p><font color="#000000">&nbsp;二 、文 件 命 名 规 则</font></p>
<p><font color="#000000">&nbsp;首页面必须以&ldquo;index.htm 、index.asp命名的文件。<br />&nbsp;除非有特殊情况，目录、文件的名称全部用小写英文字母、数字、下划线的组合，其中不得包含汉字、空格和特殊字符；目录名应以英文、拼音为主(尽量不要使用几个字母的拼音简写)。尽量用一些大家都能看懂的词汇。使得你自己和工作组的每一个成员能够方便的理解每一个文件的意义。</font></p>
<p><font color="#000000">图片的命名原则遵循以下几条规范： 名称分为头尾两两部分，用下划线隔开。 <br />头部分表示此图片的大类性质，例如广告、标志、菜单、按钮等等。 <br />一般来说: <br />放置在页面顶部的广告、装饰图案等长方形的图片我们取名：banner <br />标志性的图片我们取名为：logo <br />在页面上位置不固定并且带有链接的小图片我们取名为button <br />在页面上某一个位置连续出现，性质相同的链接栏目的图片我们取名：menu <br />装饰用的照片我们取名：pic <br />不带链接表示标题的图片我们取名：title <br />依照此原则类推。 <br />尾部分用来表示图片的具体含义。 <br />下面是几个样例，大家应该能够一眼看明白图片的意义： <br />banner_sohu.gif banner_sina.gif menu_aboutus.gif menu_job.gif title_news.gif logo_police.gif logo_national.gif pic_people.jpg pic_hill.jpg</font></p>
<p><font color="#000000">三、页 面 制 作 规 则</font></p>
<p><font color="#000000">1．在排布表格之前，请大家一定要好好思考一个最佳的方案，表格的嵌套尽量控制在三层以内，并且应该尽量避免 &lt;colspan&gt; &lt;rowspan&gt; 两个标记，经验表明，这两个标记会带来许多麻烦。外层表格用绝对像素,内层表格尽量用相对（百分比）像素，以免浏览器分辨率不同时表格产生变形。一个网页要尽量避免用整个一张大表格，所有的内容都嵌套在这个大表格之内，因为浏览器在解释页面的元素时，是以表格为单位逐一显示，如果一张网页是嵌套在一个大表格之内，那么很可能造成的后果就是，当浏览者敲入网址，他要先面对一片空白很长时间，然后所有的网页内容同时出现。如果必须这样做，请使用 &lt;tbody&gt;标记，以便能够使这个大表格分块显示。原则上最少三个表格在表格之外尽量不用div对齐方式，应用表格自身的对齐方式。<br />&nbsp;<br />&nbsp;2． CSS定义规范 及CSS 文件的格式样例代码 ：参考同目录下的main.css<br />body { font-family: &quot;宋体&quot;; font-size:12px; color: #000000; margin-top: 0px; margin-right:0px; margin-bottom: 0px; margin-left: 0px} <br />&nbsp;table { font-family: &quot;宋体&quot;; font-size: 12px; line-height: 20px; color: #000000} <br />&nbsp;a:link { font-size: 12px; color: #FFFFFF; text-decoration: none} <br />&nbsp;a:visited { font-size: 12px; color: #99FFFF; text-decoration: none} <br />&nbsp;a:hover { font-size: 12px; color: #FF9900; text-decoration: none} <br />&nbsp;a:active { font-size:12px; color: #FF9900; text-decoration: none} <br />为了保证不同浏览器上字号保持一致，字号建议用点数pt和像素px来定义，一般使用中文宋体的12px和11pt，px一般使用中文宋体12px 和14.7px 这是经过优化的字号，黑体字或者宋体字加粗时，一般选用11pt和14.7px 的字号比较合适，尽量不要使用内部样式。<br />&nbsp;3． 图片采用 gif , jpg 压缩格式(除需要显示特殊效果，尽量不要使用其他格式)，以减小页面下载数据量。每幅图片要有本图片的说明文字(alt=&rdquo;说明文字&rdquo;)这样如果图片不能正常显示，也可知道图片处代表什么意思。&lt;img &gt;标记要增加width, height，以免图像不能正常显示时，出现页面混乱现象。<br />&nbsp;4． 如页面采用动画活跃网页，须避免动画过大，尽量减少用户浏览等待时间。整页用到flash动画，要考虑到flash与页面的融合统一。Flash在浏览器中的单击激活控件的问题解决办法 参考同目录下的FlashActiveX<br />&nbsp;5． 每一相对独立的栏目首页一般也要求在40K容量以内，如特殊要求也不得超过60K；每个网页（本网首页除外）都要有返回主页和返回上级的图标或文字链接。<br />&nbsp;6． 链接使用相对路径，尽量不使用绝对路径。如：/index.htm代表根目录下<br />&nbsp;7． 网页制作字体要求使用国家标准简化字。</font></p>
<p><font color="#000000">&nbsp;▲ 程序开发注意事项<br />&nbsp;1．网站系统要连接一个数据库(sql),所以要连接数据库，但不允许建立odbc数据源，不允许作多个头包含连接，整个系统只有一个，以便将来更改数据库密码时很方便的更改本系统，同时，移植也很方便。<br />&nbsp;2 头包含要做成例如*.asp的文件，这样用户不会发现密码及数据库，如果有acess数据库，扩展名一定要改成例如*.asp的样子，以便保护数据。<br />&nbsp;3 所有的各个子模块，都要有一个readme.asp（readme.txt----改成readme.asp，什么都不显示）文件，里面详细叙述本子模块用到的表，表结构，每个字段的意义及大小，SQL 建表脚本语言（用SQL 工具导出），每个程序文件的功能。<br />&nbsp;4 建表要有一定的意义，其字段也要有意义，如4967班的表学生，表名 ：table_4967_student字段：姓名,年龄table_4967_student_name，table_4967_student_age等等。同时，要有5个人上的扩展字段，以便将来扩充功能。<br />&nbsp;5 要有注释，以便维护。删除测试时候的无用代码，使程序清晰明了。重要位置加注释。<br />&nbsp;6 要用相对路径，坚决禁止用绝对路径。<br />&nbsp;7 后台管理程序要整合到一个页面上，而且要有权限，只能是有权限的用户登录后才能进行系统管理。<br />&nbsp;8 不要开设不必要的session变量，以免浪费资源，同时，能一次性用sql语句解决的问题就用sql语句，避免多次进行数据库检索，反馈，再检索等等，以免影响速度，致使大量的时间浪费在网络连接上。<br />&nbsp;9 程序开发时不要用已投入运行的网站进行测试，请自己搭建环境或申请环境。<br />&nbsp;10 要有错误捕获处理，提醒用户如何操作造成错误。<br />&nbsp;11 删除信息时要有确认，毕竟是删除，确认后再行删除。<br />&nbsp;12 各个模块间要条例分明，不要混乱一片。每个模块要有自己的目录（放到主目录下）。<br />&nbsp;13 该用js验证合法的就要验证，坚决避免服务器端进行验证，以免加大服务器负担，同时，影响网页反应的速度。<br />&nbsp;14 编程人员测试程序时要用上界限外值，合法值，下界限外值进行测试。<br />&nbsp;15 绝对禁止使用触发器，存储过程。<br />&nbsp;16 如果整个网站系统都用到同一个变量或常量，请仿照c语言中的常量定义，以便维护上的方便。<br />&nbsp;17 显示数据库信息时候，应考虑到段落层次，各标点符号的正常显示，记录比较多可以考虑分页，避免过长的页面出现。<br />&nbsp;18 所有模块内部测试通过后再交往上级进行测试及验收。<br />&nbsp;19 所有的功能完成后，要进行整合测试，后台管理程序要放到一起，也形成一个后台管理型网站，目的：操作简洁方便。<br /></font></p>
</span></p>
<p><span lang="EN-US" style="COLOR: blue"><a href="http://www.logang.com/attachments/month_0701/k2007118103725.rar"><font color="#ff0000"><img style="MARGIN: 0px 2px -4px 0px" alt="" src="http://www.logang.com/images/download.gif" border="0" />网 页 设 计 制 作 规 范 点击下载此文件</font></a></span></p>
<p><font color="#000000"></font></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.logang.com/article.asp?id=100" /> 
	  <id>http://www.logang.com/default.asp?id=100</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[http/1.1 500 server error错误的解决方法]]></title>
	  <author>
		 <name>logang</name>
		 <uri>http://www.logang.com/</uri>
		 <email>logang@sina.com</email>
	  </author>
	  <category term="" scheme="http://www.logang.com/default.asp?cateID=14" label="Donet" /> 
	  <updated>2006-12-21T21:10:56+08:00</updated>
	  <published>2006-12-21T21:10:56+08:00</published>
		  <summary type="html"><![CDATA[<br />可能是下面的三种情况，原因是这些组件可能受到了破坏，依次在运行里面输入试试<br />regsvr32 %windir%/system32/jscript.dll<br />regsvr32 %windir%/system32/vbscript.dll<br />C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i <br />dotnet版本号现在有三种，你装的哪一个就改成哪一个<br />v1.1.4322<br />v1.0.3705<br />v2.0.50727]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.logang.com/article.asp?id=95" /> 
	  <id>http://www.logang.com/default.asp?id=95</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[javascript 四舍五入函数]]></title>
	  <author>
		 <name>logang</name>
		 <uri>http://www.logang.com/</uri>
		 <email>logang@sina.com</email>
	  </author>
	  <category term="" scheme="http://www.logang.com/default.asp?cateID=14" label="Donet" /> 
	  <updated>2006-09-23T12:17:39+08:00</updated>
	  <published>2006-09-23T12:17:39+08:00</published>
		  <summary type="html"><![CDATA[<br/>如何用javascript做一个灵活四舍五入的函数，要求输入如12.987等，点击按钮后自动四舍五入成12.99,若是输入12.99，四舍五入后就成为13，另外，最好还能控制保留小数位数，&nbsp;&nbsp;<br/>server 如12.7686，保留三位小数位就是12.769，保留两位小数位就是12.77，如此如此，请赐教！！&nbsp;&nbsp;<br/> <br/> <br/> <br/>---------------------------------------------------------------&nbsp;&nbsp;<br/> <br/>function&nbsp;&nbsp;cheng(num,n)&nbsp;&nbsp;<br/>{var&nbsp;&nbsp;dd=1;&nbsp;&nbsp;<br/>var&nbsp;&nbsp;tempnum;&nbsp;&nbsp;<br/>for(i=0;i&lt;n;i++)&nbsp;&nbsp;<br/>{&nbsp;&nbsp;<br/>dd*=10;&nbsp;&nbsp;<br/>}&nbsp;&nbsp;<br/>tempnum=num*dd;&nbsp;&nbsp;<br/>tempnum=Math.round(tempnum);&nbsp;&nbsp;<br/>alert(tempnum/dd);&nbsp;&nbsp;<br/>}&nbsp;&nbsp;<br/>里面的两个参数：num就是要转换的数据。n为要转换的位数&nbsp;&nbsp;<br/>---------------------------------------------------------------&nbsp;&nbsp;<br/> <br/>/*&nbsp;&nbsp;<br/>*&nbsp;&nbsp;&nbsp;&nbsp;ForDight(Dight,How):数值格式化函数，Dight要&nbsp;&nbsp;<br/>*&nbsp;&nbsp;&nbsp;&nbsp;格式化的&nbsp;&nbsp;数字，How要保留的小数位数。&nbsp;&nbsp;<br/>*/&nbsp;&nbsp;<br/>function&nbsp;&nbsp;ForDight(Dight,How)&nbsp;&nbsp;<br/>{&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dight&nbsp;&nbsp;=&nbsp;&nbsp;Math.round&nbsp;&nbsp;(Dight*Math.pow(10,How))/Math.pow(10,How);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp;Dight;&nbsp;&nbsp;<br/>}&nbsp;&nbsp;<br/>alert(ForDight(12345.67890,2));&nbsp;&nbsp;<br/>&lt;/script&gt;]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.logang.com/article.asp?id=62" /> 
	  <id>http://www.logang.com/default.asp?id=62</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[图片按钮提交]]></title>
	  <author>
		 <name>logang</name>
		 <uri>http://www.logang.com/</uri>
		 <email>logang@sina.com</email>
	  </author>
	  <category term="" scheme="http://www.logang.com/default.asp?cateID=14" label="Donet" /> 
	  <updated>2006-08-25T21:17:24+08:00</updated>
	  <published>2006-08-25T21:17:24+08:00</published>
		  <summary type="html"><![CDATA[代替submit按钮的图片代码格式是<br/>＜input type=&#34;image&#34; name=&#34;...&#34; src=&#34;...&#34; onClick=&#34;document.formName.submit()&#34;＞ <br/><br/>代替reset按钮的代码图片格式是<br/>&lt;a href=&#34;javascript :document.formName.reset();&#34;&gt;＜img border=0 src=&#34;...&#34;＞&lt;/a&gt;<br/>注：这里的formName是表单的name属性值。<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.logang.com/article.asp?id=51" /> 
	  <id>http://www.logang.com/default.asp?id=51</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[XP 下IIS 开机自动运行]]></title>
	  <author>
		 <name>logang</name>
		 <uri>http://www.logang.com/</uri>
		 <email>logang@sina.com</email>
	  </author>
	  <category term="" scheme="http://www.logang.com/default.asp?cateID=14" label="Donet" /> 
	  <updated>2006-08-15T22:04:44+08:00</updated>
	  <published>2006-08-15T22:04:44+08:00</published>
		  <summary type="html"><![CDATA[<br/><br/>在服务里，把下面两个服务设置为自动即可：<br/>1. IIS Admin<br/>2. World Wide Web Publishing<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.logang.com/article.asp?id=42" /> 
	  <id>http://www.logang.com/default.asp?id=42</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[javascript数据类型转换]]></title>
	  <author>
		 <name>logang</name>
		 <uri>http://www.logang.com/</uri>
		 <email>logang@sina.com</email>
	  </author>
	  <category term="" scheme="http://www.logang.com/default.asp?cateID=14" label="Donet" /> 
	  <updated>2006-08-15T21:58:39+08:00</updated>
	  <published>2006-08-15T21:58:39+08:00</published>
		  <summary type="html"><![CDATA[<p>parseFloat 转换成浮点数<br />parseInt 转换成整数.</p>
<p>这两个函数都有些容错性的,比如&quot;123abc&quot;会变成123.<br />如果楼主希望更准确一些,其实可以判断一下,然后用eval,像这样</p>
<p>不过也可以使用这样的方法:<br />var a = &quot;234&quot; ;<br />a = a.replace(/(^[\\s]*)|([\\s]*$)/g, &quot;&quot;);<br />if( a !=&quot;&quot; &amp;&amp; !isNaN( a ) )<br />{//如果是数字<br />a = eval( a )<br />}<br />else<br />{//如果不是数字<br />a = null<br />}</p>
<p>javascript有两种数据类型的转换方法：一种是将整个值从一种类型转换为另一种数据类型（称作基本数据类型转换），另一种方法是从一个值中提取另一种类型的值，并完成转换工作。</p>
<p>基本数据类型转换的三种方法：</p>
<p>1.转换为字符型：String(); 例：String(678)的结果为&quot;678&quot;<br />2.转换为数值型：Number(); 例：Number(&quot;678&quot;)的结果为678<br />3.转换为布尔型：Boolean(); 例：Boolean(&quot;aaa&quot;)的结果为true</p>
<p>从一个值中提取另一种类型的值的方法：</p>
<p>1.提取字符串中的整数：parseInt(); 例：parseInt(&quot;123zhang&quot;)的结果为123<br />2.提取字符串中的浮点数：parseFloat(); 例：parseFloat(&quot;0.55zhang&quot;)的结果为0.55<br />3.执行用字符串表示的一段javascript代码：eval(); 例：zhang=eval(&quot;1+1&quot;)的结果zhang=2</p>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.logang.com/article.asp?id=41" /> 
	  <id>http://www.logang.com/default.asp?id=41</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[JavaScript判断日期、数字、整数和特殊字符 ]]></title>
	  <author>
		 <name>logang</name>
		 <uri>http://www.logang.com/</uri>
		 <email>logang@sina.com</email>
	  </author>
	  <category term="" scheme="http://www.logang.com/default.asp?cateID=14" label="Donet" /> 
	  <updated>2006-08-15T21:57:06+08:00</updated>
	  <published>2006-08-15T21:57:06+08:00</published>
		  <summary type="html"><![CDATA[<p><br />如何在用一个程序检测所输入的内容是否合法，以下是本人自己编写的一个程序对日期、数字、整数和特殊字符进行了判断同时还可判断是正数还是负数(对数值类和整数而言) </p>
<p>LogicalValue:用于判断对象的值是否符合条件，现已提供的选择有： <br />integer：整型，还可判断正整型和负整型 <br />number ：数值型，同样可判断正负 <br />date ：日期型，可支持以自定义分隔符的日期格式，缺省是以&amp;acute;-&amp;acute;为分隔符 <br />string ：判断一个字符串包括或不包括某些字符 <br />返回值： <br />true或false </p>
<p>参数： <br />ObjStr ：对象标识符&mdash;&mdash;对象名； <br />ObjType：对象类型(&amp;acute;integer&amp;acute;,&amp;acute;number&amp;acute;,&amp;acute;date&amp;acute;,&amp;acute;string&amp;acute;之一) </p>
<p>其他说明： <br />当对象值为空时，则返回错误。 </p>
<p>Author:PPDJ </p>
<p>例子： <br />example 1:要求检验输入框text1的输入数据是否是&ldquo;整型&rdquo;数据，若不是，则提示 <br />if (!LogicalValue(&amp;acute;text1&amp;acute;,&amp;acute;integer&amp;acute;)) alert(&amp;acute;Error: Your must input a integer number&amp;acute;); <br />example 2:要求检验输入框text1的输入数据是否是&ldquo;正整型&rdquo;数据，若不是，则提示 <br />if (!LogicalValue(&amp;acute;text1&amp;acute;,&amp;acute;integer&amp;acute;,&amp;acute;+&amp;acute;)) alert(&amp;acute;Error: Your must input a positive integer number&amp;acute;); <br />example 3:要求检验输入框text1的输入数据是否是&ldquo;负整型&rdquo;数据，若不是，则提示 <br />if (!LogicalValue(&amp;acute;text1&amp;acute;,&amp;acute;integer&amp;acute;,&amp;acute;-&amp;acute;)) alert(&amp;acute;Error: Your must input a negative integer number&amp;acute;); <br />exmaple 4:要求检验输入框text1的输入数据是否是数值，若不是，则提示 <br />if (!LogicalValue(&amp;acute;text1&amp;acute;,&amp;acute;number&amp;acute;)) alert(&amp;acute;Error: Your must input a number&amp;acute;); <br />exmaple 5:要求检验输入框text1的输入数据是否是&ldquo;正&rdquo;数值，若不是，则提示 <br />if (!LogicalValue(&amp;acute;text1&amp;acute;,&amp;acute;number&amp;acute;,&amp;acute;+&amp;acute;)) alert(&amp;acute;Error: Your must input a number&amp;acute;); <br />exmaple 6:要求检验输入框text1的输入数据是否是&ldquo;负&rdquo;数值，若不是，则提示 <br />if (!LogicalValue(&amp;acute;text1&amp;acute;,&amp;acute;number&amp;acute;,&amp;acute;-&amp;acute;)) alert(&amp;acute;Error: Your must input a number&amp;acute;); <br />example 7:要求检验输入框text1的输入数据是否是日期型，若不是，则提示 <br />if (!LogicalValue(&amp;acute;text1&amp;acute;,&amp;acute;date&amp;acute;)) alert(&amp;acute;Error: Your must input a logical date value&amp;acute;); <br />若它的分隔符为A，&ldquo;A&rdquo;是一个变量，如常用的&amp;acute;-&amp;acute;和&amp;acute;/&amp;acute;，则用如下语法 <br />if (!LogicalValue(&amp;acute;text1&amp;acute;,&amp;acute;date&amp;acute;,A)) alert(&amp;acute;Error: Your must input a logical date value&amp;acute;); <br />或当分隔符为&amp;acute;/&amp;acute;时 <br />if (!LogicalValue(&amp;acute;text1&amp;acute;,&amp;acute;date&amp;acute;,&amp;acute;/&amp;acute;)) alert(&amp;acute;Error: Your must input a logical date value&amp;acute;); <br />当分隔符为&amp;acute;-&amp;acute;时，可不要参数&amp;acute;-&amp;acute;，可带上 <br />example 8:要求检验输入框text1的输入表示颜色的字符串是否合理，若不合理，则提示 <br />if (!LogicalValue(&amp;acute;text1&amp;acute;,&amp;acute;string&amp;acute;,&amp;acute;0123456789ABCDEFabcdef&amp;acute;)) alert(&amp;acute;Error: Your must input a logical color value&amp;acute;); <br />example 9:要求检验输入框text1的输入表示密码的字符串是否不含&ldquo;&amp;acute;&quot;@#$%&amp;^*&rdquo;这些字符，若含有，则提示 <br />if (!LogicalValue(&amp;acute;text1&amp;acute;,&amp;acute;string&amp;acute;,&amp;acute;&amp;acute;&quot;@#$%&amp;^*&amp;acute;,false)) alert(&amp;acute;Error: Your password can not contain &amp;acute;&quot;@#$%&amp;^*&amp;acute;); <br />其中false表示不包含有某些字符，true表示必须是哪些字符，缺省值为true <br />&nbsp; <br />引用:</p>
<p>&lt; script language=&quot;javascript&quot;&gt; <br />&lt; !-- <br />function LogicalValue(ObjStr,ObjType) <br />{ <br />var str=&amp;acute;&amp;acute;; <br />if ((ObjStr==null) || (ObjStr==&amp;acute;&amp;acute;) || ObjType==null) <br />{ <br />alert(&amp;acute;函数LogicalValue缺少参数&amp;acute;); <br />return false; <br />} <br />var obj = document.all(ObjStr); <br />if (obj.value==&amp;acute;&amp;acute;) return false; <br />for (var i=2;i{ <br />if (str!=&amp;acute;&amp;acute;) <br />str += &amp;acute;,&amp;acute;; <br />str += &amp;acute;arguments[&amp;acute;+i+&amp;acute;]&amp;acute;; <br />} <br />str=(str==&amp;acute;&amp;acute;?&amp;acute;obj.value&amp;acute;:&amp;acute;obj.value,&amp;acute;+str); <br />var temp=ObjType.toLowerCase(); <br />if (temp==&amp;acute;integer&amp;acute;) <br />{ <br />return eval(&amp;acute;IsInteger(&amp;acute;+str+&amp;acute;)&amp;acute;); <br />} <br />else if (temp==&amp;acute;number&amp;acute;) <br />{ <br />return eval(&amp;acute;IsNumber(&amp;acute;+str+&amp;acute;)&amp;acute;); <br />} <br />else if (temp==&amp;acute;string&amp;acute;) <br />{ <br />return eval(&amp;acute;SpecialString(&amp;acute;+str+&amp;acute;)&amp;acute;); <br />} <br />else if (temp==&amp;acute;date&amp;acute;) <br />{ <br />return eval(&amp;acute;IsDate(&amp;acute;+str+&amp;acute;)&amp;acute;); <br />} <br />else <br />{ <br />alert(&amp;acute;&quot;&amp;acute;+temp+&amp;acute;&quot;类型在现在版本中未提供&amp;acute;); <br />return false; <br />} <br />} <br />//--&gt; <br />&lt; /script&gt; </p>
<p>&nbsp;</p>
<p>IsInteger: 用于判断一个数字型字符串是否为整形， <br />还可判断是否是正整数或负整数，返回值为true或false <br />string: 需要判断的字符串 <br />sign: 若要判断是正负数是使用，是正用&amp;acute;+&amp;acute;，负&amp;acute;-&amp;acute;，不用则表示不作判断 <br />Author: PPDJ <br />sample: <br />var a = &amp;acute;123&amp;acute;; <br />if (IsInteger(a)) <br />{ <br />alert(&amp;acute;a is a integer&amp;acute;); <br />} <br />if (IsInteger(a,&amp;acute;+&amp;acute;)) <br />{ <br />alert(a is a positive integer); <br />} <br />if (IsInteger(a,&amp;acute;-&amp;acute;)) <br />{ <br />alert(&amp;acute;a is a negative integer&amp;acute;); <br />} </p>
<p>&nbsp; <br />引用:</p>
<p>&lt; script language=&quot;javascript&quot;&gt; <br />&lt; !-- <br />function IsInteger(string ,sign) <br />{ <br />var integer; <br />if ((sign!=null) &amp;&amp; (sign!=&amp;acute;-&amp;acute;) &amp;&amp; (sign!=&amp;acute;+&amp;acute;)) <br />{ <br />alert(&amp;acute;IsInter(string,sign)的参数出错： sign为null或&quot;-&quot;或&quot;+&quot;&amp;acute;); <br />return false; <br />} <br />integer = parseInt(string); <br />if (isNaN(integer)) <br />{ <br />return false; <br />} <br />else if (integer.toString().length==string.length) <br />{ <br />if ((sign==null) || (sign==&amp;acute;-&amp;acute; &amp;&amp; integer&lt;0) || (sign==&amp;acute;+&amp;acute; &amp;&amp; integer&gt;0)) <br />{ <br />return true; <br />} <br />else <br />return false; <br />} <br />else <br />return false; <br />} <br />//--&gt; <br />&lt; /script&gt; </p>
<p>&nbsp;</p>
<p>IsDate: 用于判断一个字符串是否是日期格式的字符串 </p>
<p>返回值： <br />true或false </p>
<p>参数： <br />DateString： 需要判断的字符串 <br />Dilimeter ： 日期的分隔符，缺省值为&amp;acute;-&amp;acute; </p>
<p>Author: PPDJ <br />sample: <br />var date = &amp;acute;1999-1-2&amp;acute;; <br />if (IsDate(date)) <br />{ <br />alert(&amp;acute;You see, the default separator is &quot;-&quot;); <br />} <br />date = &amp;acute;1999/1/2&quot;; <br />if (IsDate(date,&amp;acute;/&amp;acute;)) <br />{ <br />alert(&amp;acute;The date&amp;acute;s separator is &quot;/&quot;); <br />} </p>
<p>&nbsp; <br />引用:</p>
<p>&lt; script language=&quot;javascript&quot;&gt; <br />&lt; !-- <br />function IsDate(DateString , Dilimeter) <br />{ <br />if (DateString==null) return false; <br />if (Dilimeter==&amp;acute;&amp;acute; || Dilimeter==null) <br />Dilimeter = &amp;acute;-&amp;acute;; <br />var tempy=&amp;acute;&amp;acute;; <br />var tempm=&amp;acute;&amp;acute;; <br />var tempd=&amp;acute;&amp;acute;; <br />var tempArray; <br />if (DateString.length&lt;8 &amp;&amp; DateString.length&gt;10) <br />return false; <br />tempArray = DateString.split(Dilimeter); <br />if (tempArray.length!=3) <br />return false; <br />if (tempArray[0].length==4) <br />{ <br />tempy = tempArray[0]; <br />tempd = tempArray[2]; <br />} <br />else <br />{ <br />tempy = tempArray[2]; <br />tempd = tempArray[1]; <br />} <br />tempm = tempArray[1]; <br />var tDateString = tempy + &amp;acute;/&amp;acute;+tempm + &amp;acute;/&amp;acute;+tempd+&amp;acute; 8:0:0&amp;acute;;//加八小时是因为我们处于东八区 <br />var tempDate = new Date(tDateString); <br />if (isNaN(tempDate)) <br />return false; <br />if (((tempDate.getUTCFullYear()).toString()==tempy) &amp;&amp; (tempDate.getMonth()==parseInt(tempm)-1) &amp;&amp; (tempDate.getDate()==parseInt(tempd))) <br />{ <br />return true; <br />} <br />else <br />{ <br />return false; <br />} <br />} <br />//--&gt; <br />&lt; /script&gt; </p>
<p>&nbsp;</p>
<p><br />IsNumber: 用于判断一个数字型字符串是否为数值型， <br />还可判断是否是正数或负数，返回值为true或false <br />string: 需要判断的字符串 <br />sign: 若要判断是正负数是使用，是正用&amp;acute;+&amp;acute;，负&amp;acute;-&amp;acute;，不用则表示不作判断 <br />Author: PPDJ <br />sample: <br />var a = &amp;acute;123&amp;acute;; <br />if (IsNumber(a)) <br />{ <br />alert(&amp;acute;a is a number&amp;acute;); <br />} <br />if (IsNumber(a,&amp;acute;+&amp;acute;)) <br />{ <br />alert(a is a positive number); <br />} <br />if (IsNumber(a,&amp;acute;-&amp;acute;)) <br />{ <br />alert(&amp;acute;a is a negative number&amp;acute;); <br />} </p>
<p>&nbsp; <br />引用:</p>
<p>&lt; script language=&quot;javascript&quot;&gt; <br />&lt; !-- <br />function IsNumber(string,sign) <br />{ <br />var number; <br />if (string==null) return false; <br />if ((sign!=null) &amp;&amp; (sign!=&amp;acute;-&amp;acute;) &amp;&amp; (sign!=&amp;acute;+&amp;acute;)) <br />{ <br />alert(&amp;acute;IsNumber(string,sign)的参数出错： sign为null或&quot;-&quot;或&quot;+&quot;&amp;acute;); <br />return false; <br />} <br />number = new Number(string); <br />if (isNaN(number)) <br />{ <br />return false; <br />} <br />else if ((sign==null) || (sign==&amp;acute;-&amp;acute; &amp;&amp; number&lt;0) || (sign==&amp;acute;+&amp;acute; &amp;&amp; number&gt;0)) <br />{ <br />return true; <br />} <br />else <br />return false; <br />} <br />//--&gt; <br />&lt; /script&gt;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>SpecialString: 用于判断一个字符串是否含有或不含有某些字符 </p>
<p>返回值： <br />true或false </p>
<p>参数： <br />string ： 需要判断的字符串 <br />compare ： 比较的字符串(基准字符串) <br />BelongOrNot： true或false，&ldquo;true&rdquo;表示string的每一个字符都包含在compare中， <br />&ldquo;false&rdquo;表示string的每一个字符都不包含在compare中 </p>
<p>Author: PPDJ <br />sample1: <br />var str = &amp;acute;123G&amp;acute;; <br />if (SpecialString(str,&amp;acute;1234567890&amp;acute;)) <br />{ <br />alert(&amp;acute;Yes, All the letter of the string in &amp;acute;1234567890&amp;acute;&amp;acute;); <br />} <br />else <br />{ <br />alert(&amp;acute;No, one or more letters of the string not in &amp;acute;1234567890&amp;acute;&amp;acute;); <br />} <br />结果执行的是else部分 <br />sample2: <br />var password = &amp;acute;1234&amp;acute;; <br />if (!SpecialString(password,&amp;acute;&amp;acute;&quot;@#$%&amp;acute;,false)) <br />{ <br />alert(&amp;acute;Yes, The password is correct.&amp;acute;); <br />} <br />else <br />{ <br />alert(&amp;acute;No, The password is contain one or more letters of &amp;acute;&quot;@#$%&amp;acute;&amp;acute;); <br />} <br />结果执行的是else部分 </p>
<p>&nbsp; <br />引用:</p>
<p>&lt; script language=&quot;javascript&quot;&gt; <br />&lt; !-- <br />function SpecialString(string,compare,BelongOrNot) <br />{ <br />if ((string==null) || (compare==null) || ((BelongOrNot!=null) &amp;&amp; (BelongOrNot!=true) &amp;&amp; (BelongOrNot!=false))) <br />{ <br />alert(&amp;acute;function SpecialString(string,compare,BelongOrNot)参数错误&amp;acute;); <br />return false; <br />} <br />if (BelongOrNot==null || BelongOrNot==true) <br />{ <br />for (var i=0;i{ <br />if (compare.indexOf(string.charAt(i))==-1) <br />return false <br />} <br />return true; <br />} <br />else <br />{ <br />for (var i=0;i{ <br />if (compare.indexOf(string.charAt(i))!=-1) <br />return false <br />} <br />return true; <br />} <br />} <br />//--&gt; <br />&lt; /script&gt; <br />&nbsp;<br />&nbsp;<br /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.logang.com/article.asp?id=40" /> 
	  <id>http://www.logang.com/default.asp?id=40</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[2003系统上传文件不能超过200K的解决方案]]></title>
	  <author>
		 <name>logang</name>
		 <uri>http://www.logang.com/</uri>
		 <email>logang@sina.com</email>
	  </author>
	  <category term="" scheme="http://www.logang.com/default.asp?cateID=14" label="Donet" /> 
	  <updated>2005-10-09T14:31:08+08:00</updated>
	  <published>2005-10-09T14:31:08+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp; Windows2003系统下，上传较大的文件时，出现&ldquo;Request 对象 错误 'ASP 0104 : 80004005'&rdquo;错误。<br />&nbsp;&nbsp;&nbsp; <span class="style4">更改win2003的IIS&nbsp;6.0对asp的上传文件大小为200k限制</span><font class="htd"><span class="bw">，aspx的上传程序没有影响。在IIS6.0中，默认设置是特别严格和安全的，最大只能传送&nbsp;204,800&nbsp;个字节，这样可以最大限度地减少因以前太宽松的超时和限制而造成的攻击。IIS 6 出于安全考虑, 默认最大请求是200K(也即最大提交数据限额为200KByte，204800Byte)。（在&nbsp;IIS&nbsp;6.0&nbsp;之前的版本中无此限制）&nbsp;</span></font><br /><br />&nbsp;&nbsp;&nbsp; <font face="黑体" size="4"><strong>解决方案</strong></font><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; 办法一：<br /><br />&nbsp;&nbsp;&nbsp; 第一步：修改IIS设置，允许直接编辑配置数据库。先打开，Internet信息服务，如下图：<br /><img onmousewheel="return bbimg(this)" style="WIDTH: 524px; CURSOR: pointer" onclick="javascript:window.open(this.src);" alt="" src="http://help.powereasy.net/pe2005/UploadFiles_8243/200503/20050305153149465.jpg" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" />
<p>&nbsp;&nbsp;&nbsp; 第二步：先在服务里关闭iis&nbsp;admin&nbsp;service服务，找到windows\system32\inesrv\下的metabase.xml, 打开，找到ASPMaxRequestEntityAllowed 把他修改为需要的值，默认为204800，即200K，如把它修改为51200000（50M）。<br />&nbsp;&nbsp;&nbsp; 然后重启iis admin service服务。<br /><br /><br />&nbsp;&nbsp;&nbsp; 办法二：<br /><br />&nbsp;&nbsp;新建一个文本文件，内容如下：<br /><br />&nbsp;&nbsp;'----------------------------------------------------<br /><br />&nbsp;&nbsp;set&nbsp;providerObj=GetObject(&quot;winmgmts:/root/MicrosoftIISv2&quot;)<br /><br />&nbsp;&nbsp;set&nbsp;vdirObj=providerObj.get(&quot;IIsWebVirtualDirSetting='W3SVC/1/ROOT'&quot;)<br /><br />&nbsp;&nbsp;WScript.Echo&nbsp;&quot;Before:&nbsp;&quot;&nbsp;&amp;&nbsp;vdirObj.AspMaxRequestEntityAllowed<br /><br />&nbsp;&nbsp;vdirObj.AspMaxRequestEntityAllowed=51200000<br /><br />&nbsp;&nbsp;vdirObj.Put_()<br /><br />&nbsp;&nbsp;WScript.Echo&nbsp;&quot;Now:&nbsp;&quot;&nbsp;&amp;&nbsp;vdirObj.AspMaxRequestEntityAllowed<br /><br />&nbsp;&nbsp;'----------------------------------------------------<br /><br /><br />&nbsp;&nbsp;然后保存为.vbs文件，如：vf.vbs<br /><br />&nbsp;&nbsp;然后在命令行模式下，执行&nbsp;cscript&nbsp;文件路径及文件名，如：<br /><br />&nbsp;&nbsp;cscript&nbsp;d:\vf.vbs<br /><br />&nbsp;&nbsp;这样ASP上传大小就更改为了上面设置的：51200000字节&nbsp;(50兆)<br /></p>
<p><font face="黑体" color="#000000" size="4">关于win2003上传限制解决方案的补充说明</font></p>
<p>　　到微软站点载了IIS6 Resource Kit Tools（<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=56FC92EE-A71A-4C73-B628-ADE629C89499&amp;displaylang=en" target="_blank"><u><font color="#0000ff">http://www.microsoft.com/downloads/details.aspx?FamilyID=56FC92EE-A71A-4C73-B628-ADE629C89499&amp;displaylang=en</font></u></a>），安装后利用Metabase Explorer修改了(local)\LM\W3SVC\AspMaxRequestEntityAllowed属性（默认为200K=204800），修改为1G就是了；同时修改了AspScriptTimeout属性调整下时限，就可以上传大文件了。</p>
<p>此时发现AspMaxRequestEntityAllowed丢之，点右键添加new属性为asp，设置自己需要的大小，然后确定即可～～～<br /><br />详细操作过程图片：</p>
<p>第一步： 到微软站点载了IIS6 Resource Kit Tools后，双击进行安装，出现如下界面：<br /><img onmousewheel="return bbimg(this)" height="351" alt="" src="http://help.powereasy.net/pe2005/UploadFiles_8243/200512/20051220133133677.gif" width="495" onload="javascript:resizepic(this)" border="0" /><br /><br />第二步： 依次打开：开始－程序菜单－IIS Resources－Metabase Explorer，运行Metabase Explorer。<br /><img style="FILTER: ; WIDTH: 517px; HEIGHT: 283px" height="283" alt="" src="http://help.powereasy.net/pe2005/UploadFiles_8243/200512/20051220135156583.gif" width="517" border="0" /><br /><br />第三步： 在出现的窗口中填写相关信息： <br /><br /><br />第四步： 在程序窗口中选择(local)\LM\W3SVC<br /><img height="298" alt="" src="http://help.powereasy.net/pe2005/UploadFiles_8243/200503/20050313194701377.gif" width="157" /><br /><br />第五步： 修改(local)\LM\W3SVC\AspMaxRequestEntityAllowed属性，修改为较大的值，如1G：<br /><br /><img height="201" alt="" src="http://help.powereasy.net/pe2005/UploadFiles_8243/200503/20050313194704455.gif" width="453" /><br /><br /></p>
<p>补充：如果你按照<a href="http://help.asp163.net/PE_Help/win2003_02.htm" target="main"><u><font color="#800080">&ldquo;</font><font color="#ff0000">动易系统在Win2003下不能上传附件应该如何解决？</font></u></a> &rdquo;的方法修改了，那么请继续下面步骤：<br />第一步： <br /><img style="FILTER: ; WIDTH: 543px; HEIGHT: 326px" height="364" alt="" src="http://help.powereasy.net/pe2005/UploadFiles_8243/200503/20050313194704717.gif" width="543" border="0" /><br /><br /><img style="WIDTH: 476px; HEIGHT: 270px" height="312" alt="" src="http://help.powereasy.net/pe2005/UploadFiles_8243/200503/20050313194704114.gif" width="560" /><br /><br />第二步： 此时会出现aspmaxrequestentityallowed对象，鼠标双击。出现：<br /><img height="581" alt="" src="http://help.powereasy.net/pe2005/UploadFiles_8243/200503/20050313194704151.gif" width="469" /><br /><br />第三步： 点选：general，进行如下设置。<br /><img height="584" alt="" src="http://help.powereasy.net/pe2005/UploadFiles_8243/200503/20050313194704809.gif" width="465" /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.logang.com/article.asp?id=70" /> 
	  <id>http://www.logang.com/default.asp?id=70</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ASP实例:6行代码实现无组件上传]]></title>
	  <author>
		 <name>logang</name>
		 <uri>http://www.logang.com/</uri>
		 <email>logang@sina.com</email>
	  </author>
	  <category term="" scheme="http://www.logang.com/default.asp?cateID=14" label="Donet" /> 
	  <updated>2005-10-05T20:49:11+08:00</updated>
	  <published>2005-10-05T20:49:11+08:00</published>
		  <summary type="html"><![CDATA[<br/>目前有很多无组件上传类，我大概看了一下，大多写的相当复杂，有的居然还只能传文本<br/>&nbsp;&nbsp;最关键的是没有10行代码以下的 ：）<br/>&nbsp;&nbsp;我花了一个晚上时间研究了一下ADODB.Stream，并且用了6行代码实现了无组件上传：<br/><br/>&nbsp;&nbsp;strFileName = Request.QueryString(&#34;file1&#34;)<br/>&nbsp;&nbsp;Set objStream = Server.Cr&#101;ateObject(&#34;ADODB.Stream&#34;)<br/>&nbsp;&nbsp;objStream.Type = 1 &#39; adTypeBinary<br/>&nbsp;&nbsp;objStream.Open<br/>&nbsp;&nbsp;objStream.LoadFromFile strFileName<br/>&nbsp;&nbsp;objStream.SaveToFile Server.&#34;123_onweb.gif&#34;,2<br/><br/>&nbsp;&nbsp;使用方法：<br/><br/>&nbsp;&nbsp;把上面的代码写成upload.asp<br/>&nbsp;&nbsp;在浏览器里面输入：<br/>&nbsp;&nbsp;<a href="http://XXX/upload.asp?file1=c:" target="_blank" rel="external">http://XXX/upload.asp?file1=c:</a>\上传文件\123.gif<br/>&nbsp;&nbsp;XXX为你的主机地址<br/>&nbsp;&nbsp;执行完后你会看到你的目录下面多了一个123_onweb.gif<br/>&nbsp;&nbsp;他就是你要文件拉！！！！<br/><br/>&nbsp;&nbsp;根据原理我们可以扩展以下代码：<br/>&nbsp;&nbsp;upload.asp文件<br/>&nbsp;&nbsp;&lt;%<br/>&nbsp;&nbsp;Function GetFileName(ByVal strFile)<br/>&nbsp;&nbsp;If strFile &lt;&gt; &#34;&#34; Then<br/>&nbsp;&nbsp; GetFileName = mid(strFile,InStrRev(strFile, &#34;\&#34;)+1)<br/>&nbsp;&nbsp;Else<br/>&nbsp;&nbsp; GetFileName = &#34;&#34;<br/>&nbsp;&nbsp;End If<br/>&nbsp;&nbsp;End&nbsp;&nbsp;function<br/><br/>&nbsp;&nbsp;strFileName = Request.Form(&#34;file1&#34;)<br/>&nbsp;&nbsp;Set objStream = Server.Cr&#101;ateObject(&#34;ADODB.Stream&#34;)<br/>&nbsp;&nbsp;objStream.Type = 1 &#39; adTypeBinary<br/>&nbsp;&nbsp;objStream.Open<br/>&nbsp;&nbsp;objStream.LoadFromFile strFileName<br/>&nbsp;&nbsp;objStream.SaveToFile Server.MapPath(GetFileName(strFileName)),2<br/>&nbsp;&nbsp;objStream.Close<br/>&nbsp;&nbsp;%&gt;<br/><br/>&nbsp;&nbsp;upload.htm文件<br/>&nbsp;&nbsp;&lt;form name=&#34;FORM&#34; action=&#34;upload.asp&#34; method=&#34;post&#34;&gt;<br/>　　&lt;input type=&#34;submit&#34; name=&#34;submit&#34; value=&#34;OK&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type=&#34;file&#34; name=&#34;file1&#34; style=&#34;width:400&#34;&nbsp;&nbsp;value=&#34;&#34;&gt;<br/>&nbsp;&nbsp;&lt;/form&gt;<br/><br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.logang.com/article.asp?id=67" /> 
	  <id>http://www.logang.com/default.asp?id=67</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[操作必须使用一个可更新的查询]]></title>
	  <author>
		 <name>logang</name>
		 <uri>http://www.logang.com/</uri>
		 <email>logang@sina.com</email>
	  </author>
	  <category term="" scheme="http://www.logang.com/default.asp?cateID=14" label="Donet" /> 
	  <updated>2005-10-05T20:47:13+08:00</updated>
	  <published>2005-10-05T20:47:13+08:00</published>
		  <summary type="html"><![CDATA[<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 错误“操作必须使用一个可更新的查询”原因及解决办法<br/><br/><br/>Microsoft JET Database Engine (0x80004005)<br/>操作必须使用一个可更新的查询。<br/><br/>原因：<br/>有几个主要的错误原因：<br/>这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为<br/>ADO由于以下的几个原因而不能够写数据库造成的。<br/>1。最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。 <br/>要解决这个问题，在管理器中调整数据库文件的属性，让匿名用户有正确的权限。<br/>当使用ACCESS数据库时，不仅要给文件写的权限，还要给该目录写 的权限，因为<br/>Jet需要在该目录建立一个.ldb文件。<br/>2。第二个原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。<br/>SQL = &#34;Up&#100;ate Products Set UnitPrice = 2;&#34;<br/>Set Conn = Server.Cr&#101;ateObject(&#34;ADODB.Connection&#34;)<br/>Conn.Mode = 3 &#39;3 = adModeReadWrite<br/>Conn.Open &#34;myDSN&#34;<br/>Conn.Execute(SQL)<br/>Conn.Close<br/>注意默认的Mode是设置0(adModeUnknown),它是允许更新的。<br/>3。还有可能是在ODBC管理器中将该DSN的只读选项选中。<br/>4。你是在同时更新两个表中的字段，也会出现这个错误信息，解决办法是分开来更新<br/>这两个表中各自字段。<br/>5。当你使用了一个从低版本中（如ACCESS2.0,ACCESS7.0）载入到高版本(ACCESS 2000)<br/>中的查询时，在执行这个查询是会出现该错误。<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.logang.com/article.asp?id=66" /> 
	  <id>http://www.logang.com/default.asp?id=66</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[vbscrip常用函数]]></title>
	  <author>
		 <name>logang</name>
		 <uri>http://www.logang.com/</uri>
		 <email>logang@sina.com</email>
	  </author>
	  <category term="" scheme="http://www.logang.com/default.asp?cateID=14" label="Donet" /> 
	  <updated>2005-09-29T18:33:51+08:00</updated>
	  <published>2005-09-29T18:33:51+08:00</published>
		  <summary type="html"><![CDATA[1.数值型函数： <br/><br/>abs(num): 返回绝对值 <br/>sgn(num): num&gt;0 1; num=0 0; num&lt;0 -1;判断数值正负 <br/>hex(num): 返回十六进制值 直接表示：&amp;Hxx 最大8位 <br/>oct(num): 返回八进制值 直接表示：&amp;Oxx 最大8位 <br/>sqr(num): 返回平方根 num&gt;0 <br/>int(num): 取整 int(99.8)=99; int(-99.2)=100 <br/>fix(num): 取整 fix(99.8)=99; fix(-99.2)=99 <br/>round(num,n): 四舍五入取小数位 round(3.14159,3)=3.142 中点数值四舍五入为近偶取整 round(3.25,1)=3.2 <br/>log(num): 取以e为底的对数 num&gt;0 <br/>exp(n): 取e的n次幂 通常用 num^n <br/>sin(num): 三角函数，以弧度为值计算 (角度*Pai)/180=弧度 con(num); tan(num); atn(num) <br/><br/>2.字符串函数： <br/><br/>len(str)：计算字符串长度 中文字符长度也计为一！ <br/>mid(str,起始字符,[读取长度])：截取字符串中间子字符串 <br/>left(str,nlen)：从左边起截取nlen长度子字符串 <br/>right(str,nlen)：从右边起截取nlen长度子字符串 <br/>Lcase(str)：字符串转成小写 <br/>Ucase(str)：字符串转成大写 <br/>trim(str)：去除字符串两端空格 <br/>Ltrim(str)：去除字符串左侧空格 <br/>Rtrim(str)：去除字符串右侧空格 <br/>replace(str,查找字符串,替代字符串,[起始字符,替代次数,比较方法])：替换字符串 <br/>注：默认值：起始字符 1；替代次数 不限；比较方法 区分大小写（0） <br/>InStr([起始字符,]str,查找字符串[,比较方法])：检测是否包含子字符串 可选参数需同时选 返回起始位置 <br/>InStrRev(str,查找字符串[,起始字符][,比较方法])：反向检测是否包含子字符串 返回起始位置 <br/>space(n)：构造n个空格的字符串 <br/>string(n,str)：构造由n个str第一个字符组成的字符串 <br/>StrReverse(str)：反转字符串 <br/>split(str,分割字符串[,次数][,比较方法])：以分割字符串为分割标志将字符串转为字符数组 可选参数需同时选 <br/><br/>3.数据类型转换函数： <br/><br/>Cint(str)：转换正数 True -1；False 0；日期 距离1899/12/31天数；时间 上午段 0；下午段 1； <br/>Cstr(str)：日期 输出格式 yyyy/mm/dd；时间 输出格式 Am/Pm hh:mm:ss <br/>Clng(str)：与Cin()类似 <br/>Cbool(num)：num不为零 True；反之 False <br/>Cdate(str)：转换日期格式 0：#Am 12:00:00#；正数 距离1899/12/31天数的日期；浮点数 日期＋小数时间 <br/>Cbyte(num)：num&lt;255 转换为字节 <br/>Csng(str)：转换为单精度数值 <br/>Cdbl(str)：转换为双精度数值 <br/>Ccur(str)：转换为现金格式 <br/><br/>4.时间函数： <br/><br/>date：取系统当前日期 <br/>time：取系统当前时间 <br/>now：取系统当前时间及日期值 Datetime类型 <br/>timer：取当前时间距离零点秒值，计时器，可计算时间差 <br/>DateAdd(间隔单位,间隔值,日期)：推算相邻日期 <br/>DateDiff(间隔单位,日期一,日期二)：计算时间差 日期二-日期一 <br/>Datepart(间隔单位,日期)：计算日期的间隔单位值 <br/>Dateserial(date)：输出日期值（按序列计算） <br/>Timeserial(time)：输出时间值（按序列计算） <br/>DateValue(datetime)：取出字符串中日期值 <br/>Timevalue(datetime)：取出字符串中时间值 <br/>weekday(date)：计算星期几 <br/>MonthName(date)：输出月分名 <br/>year(datetime)：截取年份 <br/>month(datetime)：截取月份 <br/>day(datetime)：截取日 <br/>hour(datetime)：截取小时 <br/>minute(datetime)：截取分钟 <br/>second(datetime)：截取秒 <br/><br/>5.其它函数： <br/><br/>Array(unit,..)：动态生成数组 <br/>Asc(str)：输出字符串第一个字符的ASCII码 <br/>Chr(asc)：转换ASCII为字符 Enter：Chr(13)&amp;Chr(10) <br/>Filter(数组名称,关键字符串,[,包含][,比较方法])： <br/>将字符串数组中含有关键字符串的元素存成新的数组（默认） [包含]为false则取不包含的元素 <br/>Join(ArrayName)：将数组中元素连成字符串 <br/>Ubound(ArrayName[,维数])：取得数组相应维数的上界 <br/>Lbound(ArrayName[,维数])：取得数组相应维数的下界 一般为0 <br/>Randmize n：启动随机数种子 <br/>Rnd(n)：取得随机数，n&gt;0或为空，取序列下一随机值，n&lt;0，随机值相同，n=0，生产与上一随机值相同的数 <br/>取介于A和B之间的随机正数C，公式：C=Int((B-A+1)*Rnd+A) 条件（B&gt;A） <br/><br/>子程序和自定义函数 <br/><br/>Sub StrSubName Function StrFunName(arg[1],..) <br/>子程序体 函数体 <br/>Exit Sub 中途跳出 Exit Function 中途跳出 <br/>End Sub StrFunName＝Value 返回值 <br/>End Function <br/>[call] StrSubName 引用子程序 Var=StrFunName(arg[1],..) 引用函数 <br/><br/>子程序和自定义函数可以递归调用； <br/><br/>ASP六大对象常用语句示范： <br/><br/>Response： <br/><br/>Response.write StrVar/&#34;String&#34;：向网页写出参数值或字符串 等同于在Html标记中嵌入&lt;%=StrVar/&#34;String&#34;%&gt; <br/>Response.End：停止页面编译，并将已经编译内容输出到浏览器 <br/>Response.Buffer=True|False：页面编译时是否使用缓存的设置，一般在页面头部设置 <br/>Response.Flush：强制输出页面已编译部分内容 <br/>Response.Clear：将缓冲区内的数据清除 <br/>Response.Redirect URL：停止页面编译或输出，转载指定所需页面 <br/>Response.IsClientConnected：返回True|False，检测用户是否还处于连接状态 <br/>Response.Charset(CharsetName)：设置页面编码类型，即&lt;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=gb2312&#34;&gt; <br/>Response.ContentType [= ContentType ]：设置页面文件类型，同上 <br/>Response.Expires [= number]：设置页面失效时间，单位分钟 <br/>Response.ExpiresAbsolute [= [date] [time]]：设置页面失效的绝对时间 <br/>Response.Status = StatusDescription：设置页面状态描述 <br/><br/>Request： <br/><br/>Request(&#34;PassStrName&#34;)：读取网页传递值，包括表单及以？PassStrName＝value&amp;PassStrName_n＝value_n形式 <br/>Request[.collection|property|method](variable) <br/>Request.querystring(&#34;PassStrName&#34;)：读取Get方法传递的表单值和？PassStrName＝value <br/>Request.QueryString(Varible)[(Index).Count] <br/>Request.form(&#34;PassStrName&#34;)：读取Post方法传递的纯表单域的值 <br/>Request.Form(Parameter)[(Index).Count] <br/>Request.ServerVaribles(Server Environment Variable)：读取客户端系统环境变量，详见参考 <br/>Request.BinaryRead(Count)：读取指定字节数的传送值 <br/>Request.TotalBytes：查询体的长度，以字节为单位，只读 <br/><br/>注：同名表单如：CheckBox如有多项值，传递形式如右，StrName=value1,value2,...需要用Split函数分割各项值 <br/>Multiple的Sel&#101;ct表单与CheckBox类似，TextArea的值可包含换行字符，用Replace转为&lt;br&gt;，以满足格式需要 <br/><br/>Session：（用户全局变量） <br/><br/>Session(&#34;SesName&#34;)＝value：存储Session变量值，也可读取该值 <br/>Session(&#34;SesName&#34;)＝Empty：判断Session值是否存在的两种方法 <br/>IsEmpty(Session(&#34;SesName&#34;))=True|False：判断Session值是否存在的两种方法 <br/>Session.TimeOut=num：设置Session变量的存在时效，单位分钟 <br/>Session.Abandon：清除所有Session变量值 <br/>Session.SessionID：Session变量的ID序列号，只读 <br/><br/>Application：（应用程序全局变量） <br/><br/>Application(&#34;AppName&#34;)＝value：存储Application变量值，也可读取该值 <br/>Application(&#34;AppName&#34;)＝Empty：判断Application值是否存在的两种方法 <br/>IsEmpty(Application(&#34;AppName&#34;))=True|False：判断Application值是否存在的两种方法 <br/>Application.Lock：Application变量值锁定，防止同时更改变量值 <br/>Application.UnLock：Application变量值解锁，允许更改变量值 <br/><br/>注：Session与Application变量都可以用来存储数组和系统对象，引用方法是变量名相当于数组名而已， <br/>但不能直接改变其值，需要借助临时数组修改值后，再赋给Session与Application变量 <br/><br/>Global.asa文件的结构：&lt;% @language=&#34;VBscript&#34;%&gt; <br/>&lt;% Sub Application_OnStart ...End Sub <br/>Sub Application_OnEnd ... End Sub <br/>Sub Session_OnStart ...End Sub <br/>Sub Session_OnEnd ... End Sub%&gt; <br/><br/>Server: <br/><br/>Server.MapPath(&#34;FileUrl&#34;)：映射文件名的服务器站点绝对地址，Path=Server.MapPath(./)可以得到虚拟目录根路径 <br/>Server.HtmlEncode(&#34;string&#34;)：转换为可以直接显示带Html格式的字符串，如：&lt;,&gt;等 <br/>Server.URLEncode( &#34;string&#34;)：转换为浏览器地址编码 <br/>set Var＝Server.CreatObject(&#34;ObjName&#34;)：创建对象变量 <br/>Server.ScriptTimeout = NumSeconds：ASP程序页面执行时限，以秒为单位 <br/><br/>Cookies: 存储在用户本机的临时变量，每个Cookie的最大字节4KB，最多可以有300个Cookie 1.2MB <br/><br/>Response.cookies(&#34;StrCookieName&#34;)＝value：存储Cookie变量值，也可读取该值 <br/>Response.cookies(&#34;StrCookieName&#34;)＝&#34;&#34;：判断是否为空 <br/>Response.cookies(&#34;StrCookieName&#34;).Expires=Date：变量有效期，以天为单位，小于当前时间立即失效 <br/>Response.Cookies(Cookie[(key).Attribute])：标准语法 <br/><br/>ObjectContext 控制ASP的事务处理 <br/><br/>ObjectContext.OnTransactionAbort：由放弃的事务处理事件激发，在脚本完成处理后发生 <br/>ObjectContext.OnTransactionCommit：由成功的事务处理事件激发，在脚本完成处理后发生 <br/>ObjectContext.SetAbort：显式的放弃一次事务处理 <br/>ObjectContext.SetComplete：覆盖前面任何调用ObjectContext.SetAbort方法的调用 <br/>Msgbox &#34;string&#34;/StrName：VBscript提示框 <br/><br/>表单的Onsubmit事件：在同一页面写入 Function FormName_onsubmit()..FormName_onsubmit＝True/False..end Function， <br/>页面会在提交前先执行语句，并根据返回值判断是否完成提交任务。 <br/><br/>数据库连接字符串举例： <br/><br/>Access2000： <br/>conn.Open &#34;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&#34; &amp; Server.MapPath(&#34;dbase\liuyan.mdb&#34;) <br/>conn.Open &#34;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&#34; &amp; Server.MapPath(&#34;dbase\liuyan.mdb&#34;)&amp;&#34;;Password=admin&#34; <br/>Recordset.Open &#34;数据表名&#34;, conn, 2, 2 <br/><br/>SqlServer2000： <br/>conn.Open &#34;Provider=SQLOLEDB.1;User ID=sa;Password=admin;Initial Catalog=pubs;Data Source=server\garlmrm&#34; <br/>conn.Open &#34;provider=SQLOLEDB;data source=hyserver;uid=sa;pwd=;database=pubs&#34; <br/>Recordset.Open StrSQL, conn, 2, 2 <br/><br/>Dbase：(?) <br/>conn Open &#34;Driver={Microsoft dBase Driver};SourceType=DB;SourceDB=&#34; &amp; Server.MapPath( &#34;目录名&#34; ) <br/>Recordset.Open StrSQL, conn, 2, 2 <br/><br/>FoxBase： <br/>conn Open &#34;Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=&#34; &amp; Server.MapPath( &#34;目录名&#34; ) <br/>Recordset.Open DBF文件名或Sel&#101;ct语句, conn, 2, 2 <br/>conn Open &#34;Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=&#34; &amp; Server.MapPath( &#34;DBC数据库文件名&#34; ) <br/>Recordset.Open DBF文件名或Sel&#101;ct语句, conn, 2, 2 <br/><br/>Excel： <br/>conn Open &#34;Driver={Microsoft Excel Driver (*.xls)};DBQ=&#34; &amp; Server.MapPath( &#34;XLS文件名&#34; ) <br/>Recordset.Open &#34;Sel&#101;ct * From [&#34;&amp;sheet&amp;&#34;$]&#34;,conn,2,2 <br/><br/>注：使用DBF、DBC、Excel数据库，下面几点要注意：Excel数据库只能读取、增加记录、修改记录，但不能删除记录； <br/>DBF、DBC可以读取记录、增加记录、删除记录、修改记录，但是在增加记录时，任何一个字段值都不能为空，由此 <br/>可看出局限性很大，所以尽可能地用MDB或SQL数据库。 <br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.logang.com/article.asp?id=65" /> 
	  <id>http://www.logang.com/default.asp?id=65</id>
  </entry>	
		
</feed>
