<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>WEB|WAP|网站建设|网站设计|网站制作|网站开发 - ASP</title><link>http://www.hzzhit.com/blog/</link><description>兆合信息：专业的网站建设和网站制作公司 - </description><generator>RainbowSoft Studio Z-Blog 1.8 Arwen Build 81206</generator><language>zh-CN</language><copyright>Copyright 2008-2009 杭州兆合信息技术有限公司. All Rights Reserved.</copyright><pubDate>Tue, 07 Sep 2010 05:27:05 +0800</pubDate><item><title>DateAdd   函数</title><author>a@b.com (shine)</author><link>http://www.hzzhit.com/blog/ASP/DateAdd.html</link><pubDate>Tue, 29 Jun 2010 18:34:51 +0800</pubDate><guid>http://www.hzzhit.com/blog/ASP/DateAdd.html</guid><description><![CDATA[<p>DateAdd &nbsp; 函数 <br />返回已添加指定时间间隔的日期。 &nbsp; <br /><br />DateAdd(interval, &nbsp; number, &nbsp; date) <br /><br />参数 <br />interval <br />必选项。字符串表达式，表示要添加的时间间隔。有关数值，请参阅&ldquo;设置&rdquo;部分。 <br /><br />number <br />必选项。数值表达式，表示要添加的时间间隔的个数。数值表达式可以是正数（得到未来的日期）或负数（得到过去的日期）。 <br /><br />date <br />必选项。Variant &nbsp; 或要添加 &nbsp; interval &nbsp; 的表示日期的文字。 &nbsp; <br /><br />设置 <br />interval &nbsp; 参数可以有以下值： <br /><br />设置 &nbsp; 描述 &nbsp; <br />yyyy &nbsp; 年 &nbsp; <br />q &nbsp; 季度 &nbsp; <br />m &nbsp; 月 &nbsp; <br />y &nbsp; 一年的日数 &nbsp; <br />d &nbsp; 日 &nbsp; <br />w &nbsp; 一周的日数 &nbsp; <br />ww &nbsp; 周 &nbsp; <br />h &nbsp; 小时 &nbsp; <br />n &nbsp; 分钟 &nbsp; <br />s &nbsp; 秒 &nbsp; <br /><br /><br />说明 <br />可用 &nbsp; DateAdd &nbsp; 函数从日期中添加或减去指定时间间隔。例如可以使用 &nbsp; DateAdd &nbsp; 从当天算起 &nbsp; 30 &nbsp; 天以后的日期或从现在算起 &nbsp; 45 &nbsp; 分钟以后的时间。要向 &nbsp; date &nbsp; 添加以&ldquo;日&rdquo;为单位的时间间隔，可以使用&ldquo;一年的日数&rdquo;（&ldquo;y&rdquo;）、&ldquo;日&rdquo;（&ldquo;d&rdquo;）或&ldquo;一周的日数&rdquo;（&ldquo;w&rdquo;）。 <br /><br />DateAdd &nbsp; 函数不会返回无效日期。如下示例将 &nbsp; 95 &nbsp; 年 &nbsp; 1 &nbsp; 月 &nbsp; 31 &nbsp; 日加上一个月： &nbsp; <br /><br />NewDate &nbsp; = &nbsp; DateAdd( &quot;m &quot;, &nbsp; 1, &nbsp; &quot;31-Jan-95 &quot;) <br />在这个示例中，DateAdd &nbsp; 返回 &nbsp; 95 &nbsp; 年 &nbsp; 2 &nbsp; 月 &nbsp; 28 &nbsp; 日，而不是 &nbsp; 95 &nbsp; 年 &nbsp; 2 &nbsp; 月 &nbsp; 31 &nbsp; 日。如果 &nbsp; date &nbsp; 为 &nbsp; 96 &nbsp; 年 &nbsp; 1 &nbsp; 月 &nbsp; 31 &nbsp; 日，则返回 &nbsp; 96 &nbsp; 年 &nbsp; 2 &nbsp; 月 &nbsp; 29 &nbsp; 日，这是因为 &nbsp; 1996 &nbsp; 是闰年。 <br /><br />如果计算的日期是在公元 &nbsp; 100 &nbsp; 年之前，则会产生错误。 <br /><br />如果 &nbsp; number &nbsp; 不是 &nbsp; Long &nbsp; 型值，则在计算前四舍五入为最接近的整数。</p>]]></description><category>ASP</category><comments>http://www.hzzhit.com/blog/ASP/DateAdd.html#comment</comments><wfw:comment>http://www.hzzhit.com/blog/</wfw:comment><wfw:commentRss>http://www.hzzhit.com/blog/feed.asp?cmt=136</wfw:commentRss><trackback:ping>http://www.hzzhit.com/blog/cmd.asp?act=tb&amp;id=136&amp;key=1ee94682</trackback:ping></item><item><title>用vb编写asp组件(dll)示例(阿里西西版本)</title><author>a@b.com (shine)</author><link>http://www.hzzhit.com/blog/ASP/131.html</link><pubDate>Tue, 08 Jun 2010 01:26:56 +0800</pubDate><guid>http://www.hzzhit.com/blog/ASP/131.html</guid><description><![CDATA[<div id="hd"><div class="hd_top"><div class="quick"><span id="ulogin"><script type="text/javascript">showlogin();</script></span></div></div></div><div id="content"><div class="main"><div class="box"><div class="list_news"><div id="conbox" class="abg"><div id="context"><p><br />下面,将演示如何使用vb制作asp的dll组件... <br /><br />1. 启动你的vb,选择activex dll图标,然后在点击菜单的工程&gt;&gt;引用,接 <br />着在弹出的&quot;引用&quot;窗口从中选择 <br />microsoft active server pages object library. <br /><br />2. 给工程和类重命名,在asp中调用时,就全靠它了^_^!我们的工程名改 <br />为aspdll,类名为demo.在asp中调用的方法是: <br />set objreference = server.createobject(&quot;工程名.类名&quot;) <br />本例调用的相应代码如下: <br />set objreference = server.createobject(&quot;aspdll.demo&quot;) <br />调用的方法和一般常见的,比如fso等组件的方法一模一样. <br />心动了吧,呵呵,下面我们继续.... <br /><br />3. 接着,我们开始编写代码,打开我们刚才新建工程类窗口,第一步,先声 <br />明我们要用到的变量.主要是在vb声明替代asp几大对象的变量名,定义这 <br />asp的几大对象后,我们就可以像在asp环境中调用类似request,server等 <br />这样的几大对象了.(声明的变量名完全可以和asp对象名一样)代码如下: <br /><br />'********************************************** <br />private mys criptingcontext as s criptingcontext <br />private myapplication as application <br />private myrequest as request <br />private myresponse as response <br />private myserver as server <br />private mysession as session <br />'********************************************** <br /><br />4. 声明完变量后,我们必须在类中写onstartpage子函数.本函数的作用是 <br />当用户访问一个带有本组件的asp文件时,iis就会把s criptingcontext传 <br />送给我们vb组件对象.这个s criptingcontext包括了全部的asp方法和属性 <br />.这样,就使得我们有能力访问所有asp的对象.代码如下: <br /><br />'***************************************************************** <br />public sub onstartpage(passeds criptingcontext as s criptingcontext) <br />set mys criptingcontext = passeds criptingcontext <br />set myapplication = mys criptingcontext.application <br />set myrequest = mys criptingcontext.request <br />set myresponse = mys criptingcontext.response <br />set myserver = mys criptingcontext.server <br />set mysession = mys criptingcontext.session <br />end sub <br />'***************************************************************** <br /><br />通过上面的函数,我们在asp中调用本组件后,上面的几大对象就完全可以 <br />像平时我们在asp使用一样了,举个例子: <br /><br />在asp中实现接收提交的表单值并输出屏幕: <br /><br />&lt;% <br />formvalue=request.form(&quot;username&quot;) <br />response.write (&quot;你提交的用户名是&quot;&amp;myformvalue&amp;&quot;,欢迎您!&quot;) <br />%&gt; <br /><br />在vb中实现方法是: <br /><br />formvalue=myrequest.form(&quot;username&quot;) <br />myresponse.write (&quot;你提交的用户名是&quot;&amp;myformvalue&amp;&quot;,欢迎您!&quot;) <br /><br />5. 相对应于onstartpage函数,我们还要编写一个关闭onstartpage中对象 <br />的onendpage函数,代码如下: <br /><br />'********************************* <br />public sub onendpage() <br />set mys criptingcontext = nothing <br />set myapplication = nothing <br />set myrequest = nothing <br />set myresponse = nothing <br />set myserver = nothing <br />set mysession = nothing <br />end sub <br />'******************************** <br /><br />6.通过编写上面的代码,我们在vb中编写asp组件实例的环境已经具备了, <br />下面,我就尝试写两个与asp中基本相类似的函数,也就是说,关键部位就在 <br />这里了,你完全可以把你所有的asp源码封装在这里... <br /><br />先写个最简单的输出屏幕信息函数: <br />'******************************************** <br />public sub welcomeinfo() <br />myresponse.write (&quot;阿里西西_web开发,欢迎访www.alixixi.com!&quot;) <br />end sub <br />'******************************************** <br /><br />再写个带参数传递及显示now()现在时间的函数: <br />'********************************** <br />public sub setinfo(content as string) <br />myresponse.write content &amp; &quot;&lt;br&gt;&quot; <br />myresponse.write &quot;现在的时间是:&quot; &amp; now() <br />end sub <br />'********************************** <br /><br />通过上面的asp代码实例,你会发现其实这和asp源码基本没有区别^_^ <br /><br />7. 好了,整个类就编写完了,我们开始打包封装成dll.我们先保存工程, <br />这里我们保存到e:\vbdll,接着选择菜单上的文件&gt;&gt;生成aspdll.dll,很 <br />快的dll组件就封装并生成完毕了. <br /><br />8. 生成dll文件后,我们开始调试和使用.在系统运行栏输入cmd,进入dos <br />命令行状态,我们要注册刚才生成的dll组件,注册方法是可以直接输入 <br />regsvr32 e:\vbdll\aspdll.dll ,为了安装方便,你同时可以写个批处理 <br />文件,这里不一一举例了...好,注册成功! <br /><br />9.注册完dll组件后,我们针对刚才的组件,按照上面介绍过的方法编写一 <br />个asp文件来调试.代码如下: <br /><br />&lt;% <br />set redll = server.createobject(&quot;aspdll.demo&quot;) <br />redll.welcomeinfo <br />response.write &quot;&lt;hr /&gt;&quot; <br />redll.setinfo(&quot;传递参数到服务器组件,并返回值及当前日期now()!&quot;) <br />response.write &quot;&lt;hr /&gt;&quot; <br />set redll = nothing <br />%&gt; <br />在iis中打开此文件,屏幕显示: <br /><br />阿里西西_web开发,欢迎访www.alixixi.com! <br />------------------------------------------------------------ <br />传递参数到服务器组件,并返回值及当前日期now()! <br />现在的时间是:xxxx-xx-xx-xx:xx:xx</p></div></div></div></div></div></div>]]></description><category>ASP</category><comments>http://www.hzzhit.com/blog/ASP/131.html#comment</comments><wfw:comment>http://www.hzzhit.com/blog/</wfw:comment><wfw:commentRss>http://www.hzzhit.com/blog/feed.asp?cmt=131</wfw:commentRss><trackback:ping>http://www.hzzhit.com/blog/cmd.asp?act=tb&amp;id=131&amp;key=0a137406</trackback:ping></item><item><title>asp利用飞信api发送飞信</title><author>a@b.com (shine)</author><link>http://www.hzzhit.com/blog/ASP/api-fetion.html</link><pubDate>Sat, 27 Feb 2010 00:38:49 +0800</pubDate><guid>http://www.hzzhit.com/blog/ASP/api-fetion.html</guid><description><![CDATA[<ol>    <li class="alt"><span class="comment"><font color="#008000">'调用时，只需使用call 语句即可格式为：</font></span><span>&nbsp;&nbsp;</span></li>    <li><span class="comment"><font color="#008000">'-----call sendsms(用户名,密码,发送到,短信内容)</font></span><span>&nbsp;&nbsp;</span></li>    <li class="alt"><span>function sendsms(u,p,s,m) &nbsp;&nbsp;</span></li>    <li><span>if len(u)=0 or len(p)=0 or len(s)=0 or len(m)=0 then &nbsp;&nbsp;</span></li>    <li class="alt"><span>sendsms = flash &nbsp;&nbsp;</span></li>    <li><span>else &nbsp;&nbsp;</span></li>    <li class="alt"><span>smsapi=</span><span class="string"><font color="#0000ff">&quot;http://sms.api.bz/fetion.php?username=&quot;</font></span><span>&amp; u &amp;</span><span class="string"><font color="#0000ff">&quot;&amp;password=&quot;</font></span><span>&amp; p &amp;</span><span class="string"><font color="#0000ff">&quot;&amp;sendto=&quot;</font></span><span>&amp; s &amp;</span><span class="string"><font color="#0000ff">&quot;&amp;message=&quot;</font></span><span>&amp; m &amp;</span><span class="string"><font color="#0000ff">&quot;&quot;</font></span><span>&nbsp;&nbsp;</span></li>    <li><span>smsgg= getHTTPPage(smsapi) &nbsp;&nbsp;</span></li>    <li class="alt"><span>if smsgg=</span><span class="string"><font color="#0000ff">&quot;短信已提交到发送队列！&quot;</font></span><span>then &nbsp;&nbsp;</span></li>    <li><span>sendsms=true &nbsp;&nbsp;</span></li>    <li class="alt"><span>else &nbsp;&nbsp;</span></li>    <li><span>sendsms=flash &nbsp;&nbsp;</span></li>    <li class="alt"><span>end if &nbsp;&nbsp;</span></li>    <li><span>end if &nbsp;&nbsp;</span></li>    <li class="alt"><span>end function &nbsp;&nbsp;</span></li>    <li class="alt"><span>&nbsp;&nbsp;</span></li>    <li><span class="keyword"><strong><font color="#0000ff">On</font></strong></span><span class="keyword"><strong><font color="#0000ff">Error</font></strong></span><span class="keyword"><strong><font color="#0000ff">Resume</font></strong></span><span class="keyword"><strong><font color="#0000ff">Next</font></strong></span><span>&nbsp;&nbsp;</span></li>    <li class="alt"><span><a onclick="javascript:tagshow(event, 'Server');" href="javascript:;" target="_self"><u><strong>Server</strong></u></a>.ScriptTimeOut=9999999 &nbsp;&nbsp;</span></li>    <li><span class="keyword"><strong><font color="#0000ff">Function</font></strong></span><span>getHTTPPage(Path) &nbsp;&nbsp;</span></li>    <li class="alt"><span>t = GETBody(Path) &nbsp;&nbsp;</span></li>    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>    <li class="alt"><span class="keyword"><strong><font color="#0000ff">End</font></strong></span><span>function &nbsp;&nbsp;</span></li>    <li><span class="comment"><font color="#008000">'上面的常用函数'首先.进行小偷程序的一些初始化设置.以上代码的作用分别是忽略掉所有非致命性错误.把小偷程序的运行超时时间设置得很长.这样不会出现运行超时的错误.</font></span><span>&nbsp;&nbsp;</span></li>    <li class="alt"><span>&nbsp;&nbsp;</span></li>    <li><span class="comment"><font color="#008000">'---------------------------------盗窃开始设置---------------------------------------------</font></span><span>&nbsp;&nbsp;</span></li>    <li class="alt"><span>&nbsp;&nbsp;</span></li>    <li><span class="comment"><font color="#008000">'1、下面是经典的小偷核发心源码.输入url目标网页地址.返回值getHTTPPage是目标网页的代码</font></span><span>&nbsp;&nbsp;</span></li>    <li class="alt"><span>function getHTTPPage(url) &nbsp;&nbsp;</span></li>    <li><span>dim Http &nbsp;&nbsp;</span></li>    <li class="alt"><span>set Http=server.createobject(</span><span class="string"><font color="#0000ff">&quot;Microsoft.XMLHTTP&quot;</font></span><span>) &nbsp;&nbsp;</span></li>    <li><span>Http.open</span><span class="string"><font color="#0000ff">&quot;GET&quot;</font></span><span>,url,false &nbsp;&nbsp;</span></li>    <li class="alt"><span>Http.send() &nbsp;&nbsp;</span></li>    <li><span>if Http.readystate&lt;&gt;4 then &nbsp;&nbsp;</span></li>    <li class="alt"><span>exit function &nbsp;&nbsp;</span></li>    <li><span>end if &nbsp;&nbsp;</span></li>    <li class="alt"><span>getHTTPPage=bytesToBSTR(Http.responseBody,</span><span class="string"><font color="#0000ff">&quot;utf-8&quot;</font></span><span>)</span><span class="comment"><font color="#008000">'注意WAP网页用utf-8,WEB用gb2312</font></span><span>&nbsp;&nbsp;</span></li>    <li><span>set http=nothing &nbsp;&nbsp;</span></li>    <li class="alt"><span>if err.number&lt;&gt;0 then err.Clear &nbsp;&nbsp;</span></li>    <li><span>end function &nbsp;&nbsp;</span></li>    <li class="alt"><span>&nbsp;&nbsp;</span></li>    <li><span class="comment"><font color="#008000">'------------------------------------------------------------------------------------------</font></span><span>&nbsp;&nbsp;</span></li>    <li class="alt"><span>&nbsp;&nbsp;</span></li>    <li><span class="comment"><font color="#008000">'2、转换乱玛.直接用xmlhttp调用有中文字符的网页得到的将是乱玛.可以通过adodb.stream组件进行转换</font></span><span>&nbsp;&nbsp;</span></li>    <li class="alt"><span class="keyword"><strong><font color="#0000ff">Function</font></strong></span><span>BytesToBstr(body,Cset) &nbsp;&nbsp;</span></li>    <li><span>dim objstream &nbsp;&nbsp;</span></li>    <li class="alt"><span>set objstream = Server.CreateObject(</span><span class="string"><font color="#0000ff">&quot;adodb.stream&quot;</font></span><span>) &nbsp;&nbsp;</span></li>    <li><span>objstream.Type = 1 &nbsp;&nbsp;</span></li>    <li class="alt"><span>objstream.Mode =3 &nbsp;&nbsp;</span></li>    <li><span>objstream.Open &nbsp;&nbsp;</span></li>    <li class="alt"><span>objstream.Write body &nbsp;&nbsp;</span></li>    <li><span>objstream.Position = 0 &nbsp;&nbsp;</span></li>    <li class="alt"><span>objstream.Type = 2 &nbsp;&nbsp;</span></li>    <li><span>objstream.Charset = Cset &nbsp;&nbsp;</span></li>    <li class="alt"><span>BytesToBstr = objstream.ReadText &nbsp;&nbsp;</span></li>    <li><span>objstream.Close &nbsp;&nbsp;</span></li>    <li class="alt"><span>set objstream = nothing &nbsp;&nbsp;</span></li>    <li><span class="keyword"><strong><font color="#0000ff">End</font></strong></span><span class="keyword"><strong><font color="#0000ff">Function</font></strong></span><span>&nbsp;&nbsp;</span></li>    <li class="alt"><span>%&gt;&nbsp;&nbsp;</span></li></ol>]]></description><category>ASP</category><comments>http://www.hzzhit.com/blog/ASP/api-fetion.html#comment</comments><wfw:comment>http://www.hzzhit.com/blog/</wfw:comment><wfw:commentRss>http://www.hzzhit.com/blog/feed.asp?cmt=123</wfw:commentRss><trackback:ping>http://www.hzzhit.com/blog/cmd.asp?act=tb&amp;id=123&amp;key=404366ec</trackback:ping></item><item><title>ASP中汉字与UTF-8的互相转换</title><author>a@b.com (shine)</author><link>http://www.hzzhit.com/blog/ASP/117.html</link><pubDate>Sun, 27 Dec 2009 22:12:28 +0800</pubDate><guid>http://www.hzzhit.com/blog/ASP/117.html</guid><description><![CDATA[<p><strong>ASP中汉字与UTF-8的互相转换</strong></p><p><strong>ASP中汉字与UTF-8的互相转换</strong> <br />'=============汉字转换为UTF-8================== <br />function chinese2unicode(Str) <br />for i=1 to len(Str) <br />Str_one=Mid(Str,i,1) <br />Str_unicode=Str_unicode&amp;chr(38) <br />Str_unicode=Str_unicode&amp;chr(35) <br />Str_unicode=Str_unicode&amp;chr(120) <br />Str_unicode=Str_unicode&amp; Hex(ascw(Str_one)) <br />Str_unicode=Str_unicode&amp;chr(59) <br />next <br />chinese2unicode = Str_unicode <br />end function</p><p><strong>'=============UTF-8转换为汉字================== <br />function UTF2GB(UTFStr) <br />for Dig=1 to len(UTFStr) <br />if mid(UTFStr,Dig,1)=&quot;%&quot; then <br />if len(UTFStr) &gt;= Dig+8 then <br />GBStr=GBStr &amp; ConvChinese(mid(UTFStr,Dig,9)) <br />Dig=Dig+8 <br />else <br />GBStr=GBStr &amp; mid(UTFStr,Dig,1) <br />end if <br />else <br />GBStr=GBStr &amp; mid(UTFStr,Dig,1) <br />end if <br />next <br />UTF2GB=GBStr <br />end function</strong></p>]]></description><category>ASP</category><comments>http://www.hzzhit.com/blog/ASP/117.html#comment</comments><wfw:comment>http://www.hzzhit.com/blog/</wfw:comment><wfw:commentRss>http://www.hzzhit.com/blog/feed.asp?cmt=117</wfw:commentRss><trackback:ping>http://www.hzzhit.com/blog/cmd.asp?act=tb&amp;id=117&amp;key=46597269</trackback:ping></item><item><title>asp导出Excel,导入Excel到MSSQL</title><author>a@b.com (shine)</author><link>http://www.hzzhit.com/blog/ASP/MSSQL-EXCEL.html</link><pubDate>Thu, 24 Dec 2009 17:00:19 +0800</pubDate><guid>http://www.hzzhit.com/blog/ASP/MSSQL-EXCEL.html</guid><description><![CDATA[<p>asp 导出Excel</p><p>&lt;% <br /><br />dim s,sql,filename,fs,myfile,x <br /><br />Set fs = server.CreateObject(&quot;scripting.filesystemobject&quot;) <br />'--假设你想让生成的EXCEL文件做如下的存放 <br />filename = Server.MapPath(&quot;order.xls&quot;) <br />'--如果原来的EXCEL文件存在的话删除它 <br />if fs.FileExists(filename) then <br />&nbsp;&nbsp;&nbsp; fs.DeleteFile(filename) <br />end if <br />'--创建EXCEL文件 <br />set myfile = fs.CreateTextFile(filename,true) <br /><br />'Set rs = Server.CreateObject(&quot;ADODB.Recordset&quot;) <br />'--从数据库中把你想放到EXCEL中的数据查出来 <br />'sql = &quot;select * from Tb_Execl order by id desc&quot; <br />'rs.Open sql,conn <br />StartTime = Request(&quot;StartTime&quot;)<br />EndTime = Request(&quot;EndTime&quot;)<br />StartEndTime = &quot;AddTime between #&quot;&amp; StartTime &amp;&quot; 00:00:00# and #&quot;&amp; EndTime &amp;&quot; 23:59:59#&quot;</p><p>strSql = &quot;select * from ljphs200 &quot;<br />Set rstData =conn.execute(strSql)<br />if not rstData.EOF and not rstData.BOF then <br /><br />&nbsp;&nbsp;&nbsp; dim trLine,responsestr <br />&nbsp;&nbsp;&nbsp; strLine=&quot;&quot; <br />&nbsp;&nbsp;&nbsp; For each x in rstData.fields <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strLine = strLine &amp; x.name &amp; chr(9) <br />&nbsp;&nbsp; Next <br /><br />'--将表的列名先写入EXCEL <br />&nbsp;&nbsp;&nbsp; myfile.writeline strLine <br /><br />&nbsp;&nbsp;&nbsp; Do while Not rstData.EOF <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strLine=&quot;&quot; <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for each x in rstData.Fields <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strLine = strLine &amp; x.value &amp; chr(9) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myfile.writeline strLine <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rstData.MoveNext <br />&nbsp;&nbsp;&nbsp; loop <br /><br />end if</p><p>Response.Write &quot;生成EXCEL文件成功，点击&lt;a href=&quot;/&quot;order.xls&quot;&quot; target=&quot;&quot;_blank&quot;&quot;&gt;下载&lt;/a&gt;！&quot;</p><p>rstData.Close <br />set rstData = nothing<br />Conn.Close<br />Set Conn = nothing<br />%&gt;</p><p>&nbsp;</p><p>Exce导入到SQL<br />&lt;%<br />Dim PatnNow<br />PatnNow=&quot;uploadfile/ultrawebgrid1.xls&quot;</p><p>'=====================ASP读取EXCEL注事项===========================<br />'i)将Excel97或Excel2000生成的XLS文件（book）看成一个数据库，其中的每一个工作表(sheet)看成数据库表<br />'ii)ADO假设Excel中的第一行为字段名.所以你定义的范围中必须要包括第一行的内容<br />'iii)Excel中的行标题（即字段名）不能够包含数字. Excel的驱动在遇到这种问题时就会出错的。例如你的行标题名为&ldquo;F1&rdquo;<br />'iiii)如果你的Excel电子表格中某一列同时包含了文本和数字的话,那么Excel的ODBC驱动将不能够正常, 处理这一行的数据类型，<br />&nbsp;&nbsp;&nbsp;&nbsp; '你必须要保证该列的数据类型一致<br />'===========================================================</p><p>Dim ConnXls,Driver,DBPath,Rs<br />' 建立Connection对象<br />Set ConnXls = Server.CreateObject(&quot;ADODB.Connection&quot;)<br />Driver = &quot;Driver={Microsoft Excel Driver (*.xls)};&quot;<br />DBPath = &quot;DBQ=&quot; &amp; Server.MapPath(PatnNow)<br />'调用Open 方法打开数据库<br />ConnXls.Open Driver &amp; DBPath</p><p>'DSN连接方式<br />'ConnXls.Open &quot;Dsn=test&quot;<br />'注意 表名一定要以下边这种格试 &quot;[表名$]&quot; 书写<br />Sql=&quot;Select * From [Sheet1$] &quot;<br />Set Rs=ConnXls.Execute(Sql)</p><p>IF Rs.Eof And Rs.Bof Then<br />&nbsp;&nbsp;&nbsp; Response.write &quot;&lt;br&gt;&lt;br&gt;没有找到您需要的数据!!&quot;<br />Else<br />&nbsp;&nbsp;&nbsp; Do While Not Rs.EOF<br />&nbsp;&nbsp;&nbsp; conn.execute&quot;insert into YuFuFei (HaoMa,YuENow,YuENowTime,YuEOld,YuEOldTime,State) values ('&quot;&amp;Rs(&quot;号码&quot;)&amp;&quot;','&quot;&amp;Rs(&quot;当前余额(分)&quot;)&amp;&quot;','&quot;&amp;Rs(&quot;当前余额时间&quot;)&amp;&quot;','&quot;&amp;Rs(&quot;上次余额(分)&quot;)&amp;&quot;','&quot;&amp;Rs(&quot;上次余额时间&quot;)&amp;&quot;','&quot;&amp;Rs(&quot;当前状态&quot;)&amp;&quot;')&quot;<br />&nbsp;&nbsp;&nbsp; 'Response.write Rs(&quot;接入号&quot;)&amp;&quot;&lt;br&gt;&quot;<br />&nbsp;&nbsp;&nbsp; Rs.MoveNext<br />Loop<br />End IF</p><p>Rs.Close<br />Set Rs=nothing<br />ConnXls.Close<br />Set ConnXls=Nothing<br />'Response.Write &quot;成功！&quot;</p><p>conn.close<br />set conn=nothing</p><p>%&gt;</p>]]></description><category>ASP</category><comments>http://www.hzzhit.com/blog/ASP/MSSQL-EXCEL.html#comment</comments><wfw:comment>http://www.hzzhit.com/blog/</wfw:comment><wfw:commentRss>http://www.hzzhit.com/blog/feed.asp?cmt=116</wfw:commentRss><trackback:ping>http://www.hzzhit.com/blog/cmd.asp?act=tb&amp;id=116&amp;key=0c53b2e5</trackback:ping></item><item><title>各浏览器Cookie大小、个数限制</title><author>a@b.com (shine)</author><link>http://www.hzzhit.com/blog/ASP/115.html</link><pubDate>Thu, 17 Dec 2009 19:24:03 +0800</pubDate><guid>http://www.hzzhit.com/blog/ASP/115.html</guid><description><![CDATA[<p>一、浏览器允许每个域名所包含的cookie数：</p><p>　　Microsoft指出InternetExplorer8增加cookie限制为每个域名50个，但IE7似乎也允许每个域名50个cookie。</p><p>　　Firefox每个域名cookie限制为50个。</p><p>　　Opera每个域名cookie限制为30个。</p><p>　　Safari/WebKit貌似没有cookie限制。但是如果cookie很多，则会使header大小超过服务器的处理的限制，会导致错误发生。</p><p>　　注：&ldquo;每个域名cookie限制为20个&rdquo;将不再正确！</p><p>二、当很多的cookie被设置，浏览器如何去响应。</p><p>　　除Safari（可以设置全部cookie，不管数量多少），有两个方法：</p><p>　　最少最近使用（leastrecentlyused(LRU)）的方法：当Cookie已达到限额，自动踢除最老的Cookie，以使给最新的Cookie一些空间。InternetExplorer和Opera使用此方法。</p><p>　　Firefox很独特：虽然最后的设置的Cookie始终保留，但似乎随机决定哪些cookie被保留。似乎没有任何计划（建议：在Firefox中不要超过Cookie限制）。</p><p>三、不同浏览器间cookie总大小也不同：</p><p>　　Firefox和Safari允许cookie多达4097个字节，包括名（name）、值（value）和等号。</p><p>　　Opera允许cookie多达4096个字节，包括：名（name）、值（value）和等号。</p><p>　　InternetExplorer允许cookie多达4095个字节，包括：名（name）、值（value）和等号。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注：多字节字符计算为两个字节。在所有浏览器中，任何cookie大小超过限制都被忽略，且永远不会被设置。</p><p><br />&nbsp;</p>]]></description><category>ASP</category><comments>http://www.hzzhit.com/blog/ASP/115.html#comment</comments><wfw:comment>http://www.hzzhit.com/blog/</wfw:comment><wfw:commentRss>http://www.hzzhit.com/blog/feed.asp?cmt=115</wfw:commentRss><trackback:ping>http://www.hzzhit.com/blog/cmd.asp?act=tb&amp;id=115&amp;key=48a48382</trackback:ping></item><item><title>ASP读取TXT内容</title><author>a@b.com (shine)</author><link>http://www.hzzhit.com/blog/ASP/ASP-TXT-READ.html</link><pubDate>Thu, 05 Nov 2009 22:54:28 +0800</pubDate><guid>http://www.hzzhit.com/blog/ASP/ASP-TXT-READ.html</guid><description><![CDATA[<p>set fs=server.createobject(&quot;scripting.filesystemobject&quot;)<br />file=server.mappath(&quot;1.txt&quot;)<br />set txt=fs.opentextfile(file,1,true)</p><p>if not txt.atendofstream then<br />line=txt.readline<br />response.write line<br />end if</p><p><br />'ReadLine：从文件中读取一行数据<br />'Read(N)：从文件中读取N个字节的数据<br />'ReadAll：读取文件中的所有数据</p>]]></description><category>ASP</category><comments>http://www.hzzhit.com/blog/ASP/ASP-TXT-READ.html#comment</comments><wfw:comment>http://www.hzzhit.com/blog/</wfw:comment><wfw:commentRss>http://www.hzzhit.com/blog/feed.asp?cmt=114</wfw:commentRss><trackback:ping>http://www.hzzhit.com/blog/cmd.asp?act=tb&amp;id=114&amp;key=b9601b7a</trackback:ping></item><item><title>asp写入TXT</title><author>a@b.com (shine)</author><link>http://www.hzzhit.com/blog/ASP/ASP-TXT-INSERT.html</link><pubDate>Thu, 05 Nov 2009 22:52:40 +0800</pubDate><guid>http://www.hzzhit.com/blog/ASP/ASP-TXT-INSERT.html</guid><description><![CDATA[<p>txtfile=server.mappath(&quot;1.txt&quot;) <br />Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;) <br />Set MyFile = fso.CreateTextFile(txtfile,True) <br />MyFile.WriteLine(&quot;222&quot;) <br />MyFile.Close</p>]]></description><category>ASP</category><comments>http://www.hzzhit.com/blog/ASP/ASP-TXT-INSERT.html#comment</comments><wfw:comment>http://www.hzzhit.com/blog/</wfw:comment><wfw:commentRss>http://www.hzzhit.com/blog/feed.asp?cmt=113</wfw:commentRss><trackback:ping>http://www.hzzhit.com/blog/cmd.asp?act=tb&amp;id=113&amp;key=f7d09d88</trackback:ping></item><item><title>总结一般黑客入侵ASP+Access或ASP+MSSQL网站的手法和如何防御</title><author>a@b.com (shine)</author><link>http://www.hzzhit.com/blog/ASP/asp-hack-basic-all.html</link><pubDate>Thu, 05 Nov 2009 01:26:00 +0800</pubDate><guid>http://www.hzzhit.com/blog/ASP/asp-hack-basic-all.html</guid><description><![CDATA[<p>1.【ASP+ACCESS入侵方式】<br />1.用啊D或明小子扫描检测是否有注入点。<br />2.扫描ACCESS数据库里的管理员的帐号和密码，但是密码一般都是用MD5加密过的，大家可以到其他<br />MD5网站里破解。<br />3.扫描网站的后台地址，然后用破解出来的帐号和密码登录后台，找到文件上传的地方，利用ASP上传漏洞上传ASP木马，但是有不少网站都限制了上传ASP文件的类型，一般来说ASP为后缀的文件都不允许上传。但是这种限制是可以被骇客突破的。比如：把ASP扩展名修改成asa，aaspsp，cer后进行上传ASP木马。获得WEBSHELL<br />如不能上传asa，aaspsp，cer文件格式，也可以利用备份功能，首先找到文件上传功能，上传一个ASP木马但是要注意：把ASP木马的扩展名改成JPG或GIF后缀的，然后找到后台的数据库备份把要备份的文件后缀改成.ASP。获得WEBSHELL<br />或用采取上传一个正常的JPG图片用抓包工具抓包得到图片的上传路径和COOKIE，然后利用桂林老兵或明小子进行上传的欺骗方式来上传ASP木马，如上传失败用UE修改数据包再用NC上传。获得WEBSHELL。<br />还有一种方法就是现在很多网站的管理员都很懒，都没修改数据库默认路径和后台的默认路径。<br />（尤其是国内很多的管理员都很懒！甚至连后台的用户名和密码都懒的修改！这样菜鸟们就可以利用数据库默认的路径下载到本地然后用&ldquo;辅臣数据库浏览器&rdquo;查看管理员用户名和密码，但是密码一般都是用MD5加密过的，大家可以到其他MD5网站里破解。然后找到后台的默认路径将破解出来的用户名和密码进行登陆，登陆后就用以上的方式获得WEBSHELL）</p><p>如以上的都不行就用提交一句话木马的入侵方式<br />这种入侵方式是对一些数据库地址被改成asp文件的网站来实施入侵。骇客通过利用一些论坛存在的安全漏洞提交一句话木马到数据库里，然后在一句话木马的客户端里输入这个网站的数据库地址并提交一个ASP木马，从而获得WEBSHELL。<br />最典型的就是动网6.0版本论坛漏洞的利用入侵方式，7.0版本都存在安全漏洞，我就拿7.0版本来说吧。<br />首先注册一个正常的用户，然后去发一个帖子，发帖子的时候在附件里上传一个正常的JPG图片，用抓包工具抓包得到图片的上传路径和COOKIE，然后利用桂林老兵或明小子进行上传的欺骗方式来上传ASP木马，如上传失败用UE修改数据包再用NC上传。获得WEBSHELL。<br />2.【ASP+MSSQL注入方式】<br />MSSQL通常会给用户分配一个帐号，帐号的权限分为三种SA，dbowner，public，SA权限最高，public最低。<br />以前有很多数据库都给SA权限，特别是一些韩国的网站，一扫一大把都是SA权限的，现在大部分网站都是给DBOWNER权限。<br />如是SA权限的网站有注入点，那么可以直接用数据库的存储扩展XP_CMDSHELL来执行系统命令，建立一个系统帐号，然后通过3389登录进去。<br />或者上传一个NC，然后用NC反向连接，获取一个远程的SHELL权限。<br />（当然利用SA注入点入侵的方法还有很多种，我在这里就不一一讲解。）<br />如是DB_OWNER权限的话，那么就要用到差异备份的技术来备份出一个WEBSHELL，前提是要知道网站的绝对路径。<br />或利用DB_OWNER权限列出数据库，然后下载到本地用&ldquo;辅臣数据库浏览器&rdquo;查看管理员用户名和密码，但是密码一般都是用MD5加密过的，大家可以到其他MD5网站里破解。然后找到后台地址将破解出来的用户名和密码进行登陆，登陆后就用以上的方式获得WEBSHELL。<br />如以上都不成功那么可以试试一下的！<br />3.【旁注方式】<br />这种技术是通过IP绑定域名查询的功能查出服务器上有多少网站，然后通过一些薄弱的网站实施入侵，拿到权限之后转而控制服务器的其它网站（跨站）。<br />4.【利用百度或Google批量入侵方式】<br />这种技术方式是用GOOGLE来搜索一些存在安全漏洞的网站，我简单列出GOOGLE的一些语法的使用方法：<br />intext:<br />这个就是把网页中的正文内容中的某个字符做为搜索条件.例如在google里输入:intext:红盟.将返回所有在网页正文部分包含&quot;红盟&quot;的网页<br />.allintext:使用方法和intext类似.<br />intitle:<br />和上面那个intext差不多，搜索网页标题中是否有我所要找的字符.例如搜索:intitle:红客.将返回所有网页标题中包含&quot;红客&quot;的网页.同理allintitle:也同intitle类似.<br />cache:<br />搜索google里关于某些内容的缓存，有时候也许能找到一些好东西哦.<br />define:<br />搜索某个词语的定义，搜索:define:hacker，将返回关于hacker的定义.<br />filetype:<br />这个我要重点推荐一下，无论是撒网式攻击还是我后面要说的对特定目标进行信息收集都需要用到这个.搜索指定类型的文件.例如输入:filetype:<br />doc.将返回所有以doc结尾的文件URL.当然如果你找.bak、.mdb或.inc也是可以的，获得的信息也许会更丰富:)<br />:filetype:doc.将返回所有以doc结尾的文件URL.当然如果你找.bak、.mdb或.inc也是可以的，获得的信息也许会更丰富<br />info:<br />查找指定站点的一些基本信息.<br />inurl:<br />搜索我指定的字符是否存在于URL中.例如输入:inurl:admin，将返回N个类似于这样的连接:http://www.xxx.com/xxx/admin，用来找管理员登陆的URL不错.allinurl也同inurl类似，可指定多个字符。<br />link:<br />例如搜索:inurl:www.jz5u.com可以返回所有和<a href="http://www.jz5u.com">www.jz5u.com</a>做了链接的URL.<br />site:<br />这个也很有用，例如:site:www.jz5u.com将返回所有和jz5u.com这个站有关的URL.<br />对了还有一些*作符也是很有用的:<br />+ 把google可能忽略的字列如查询范围<br />- 把某个字忽略<br />~ 同意词<br />. 单一的通配符<br />* 通配符，可代表多个字母<br />&quot;&quot; 精确查询<br />现在简单来讲解一些实例：<br />对于一些骇客来说，获取密码文件是他们最感兴趣的，那么可以在GOOGLE上搜索以下内容：<br />intitle:&quot;index of&quot; etc<br />intitle:&quot;index of&quot; passwd<br />intitle:&quot;index of&quot; pwd.db<br />intitle:&quot;index of&quot; etc/shadow<br />intitle:&quot;index of&quot; master.passwd<br />intitle:&quot;index of&quot; htpasswd<br />这样就会有很多一些服务器的重要密码文件没有任何保护的暴露在网络上，骇客就会利用这些密码来获取系统的一些权限。<br />以上骇客通过WEB的入侵技术我只是做了简单的介绍，目的是希望大家对骇客技术有一定的了解，但不希望大家利用这些技术来实施入侵。我想大家就很想知道对于这么多形形色色的入侵方式，有些什么好的防御方法。</p><p>现在大家都知道了骇客是如何入侵网站的，那么下面我就来讲讲怎样来防御基于WEB的各种攻击。<br />网站和服务器的一些安全防范，防范WEB入侵有两种方式，一种是用技术手段来防御攻击，另一种是用安全软件来防御攻击。<br />【手动的方式来防范基于WEB的入侵】<br />1.【安装补丁】<br />安装好操作系统之后，首先要做的就是要安装系统的各种补丁程序，配置好网络之后，如果是WIN 2000的操作系统就装上SP4，WIN 2003就安装好SP1，然后点击WINDOWS UPDATE，安装好所有关键的更新。<br />2.【安装杀毒软件】<br />杀毒软件我现在主要推荐使用两款：卡巴斯基和瑞星。这两款杀毒软件我做过N多测试，结果表明卡巴斯基的杀查能力要强过瑞星，很多做过免杀的木马过得了瑞星但是确逃不过卡巴斯基的法眼，当然卡巴斯基也不是百分百所有病毒都能查杀，一些木马程序也是能做出过卡巴斯基的免杀。只不过卡巴斯基在所有杀毒软件当中查杀能力还算是不错的。<br />3.【设置端口的安全保护功能】<br />端口保护的方式有两种，一种是TCP/IP筛选里面进行端口设置，另外一种系统自带的防火墙（我以WINDOWS 2003操作系统为准，现在大部分的网站都使用的是WINDOWS 2003操作系统。）。<br />4.【TCP/IP筛选的端口设置方式】<br />在&ldquo;网上邻居&rdquo;上选右键点开&ldquo;属性&rdquo;，然后在&ldquo;本地连接&rdquo;上右键点开&ldquo;属性&rdquo;，选择&ldquo;Internet协议（TCP/IP）&rdquo;点&ldquo;属性&rdquo;，然后在弹出的&ldquo;Internet协议（TCP/IP）属性&rdquo;框里选择&ldquo;高级&rdquo;，然后在&ldquo;高级TCP/IP设置&rdquo;框里选择&ldquo;选项&rdquo;，然后选择&ldquo;TCP/IP筛选&rdquo;后点击&ldquo;属性&rdquo;，然后在弹出的&ldquo;TCP/IP筛选&rdquo;的框里勾上&ldquo;启用TCP/IP筛选（所有适配器）&rdquo;，选择只允许，然后点击添加你所需要开放的端口。<br />5.【自带防火墙的端口设置】<br />通过WINDOWS 2003操作系统自带的防火墙来进行端口设置比较灵活，不用重新启动服务器。开始设置，在&ldquo;网上邻居&rdquo;上选右键点开&ldquo;属性&rdquo;，然后在&ldquo;本地连接&rdquo;上右键点开&ldquo;属性&rdquo;，在弹出的框里选择&ldquo;高级&rdquo;，选择&ldquo;Internet连接防火墙&rdquo;点击设置，这样就会弹出&ldquo;WINDOWS 防火墙&rdquo;的框。选择&ldquo;启用&rdquo;，然后点&ldquo;例外&rdquo;，在这个里面可以选择&ldquo;添加程序&rdquo;和&ldquo;添加端口&rdquo;的方式来设置一些开放的端口。有一点需要特别注意，如果是远程连接服务器的，要注意远程虚拟终端的端口一定要开放。<br />6.【目录的安全设置】<br />包括系统盘在内的所有磁盘只给Administrators和SYSTEM的完全控制权限。<br />C:\Documents and Settings 目录只给Administrators和SYSTEM的完全控制权限。<br />C:\Documents and Settings\All Users 目录只给 Administrators 组和 SYSTEM 的完全控制权限。C: \Inetpub 目录及下面所有目录、文件只给 Administrators 组和 SYSTEM 的完全控制权限。C:\Windows目录除了给Administrators和SYSTEM的完全控制权限之外，还需要给CREATOR OWNER用一个&ldquo;特别的权限&rdquo;，Power Users用户组除了完全控制之外的所有权限，Users用户组&ldquo;读取和运行&rdquo;，&ldquo;列出文件夹目录&rdquo;，&ldquo;读取&rdquo;的权限。C:\Windows目录的这些权限设置是非常重要的，如果除了Administrators和SYSTEM的完全控制权限之外的那些权限没有设置，那么系统重启后，很多系统服务都不能正常使用。<br />C: \Windows\System32\cacls.exe、cmd.exe、net.exe，、net1.exe 文件只给 Administrators 组和 SYSTEM 的完全控制权限。<br />7.【IIS控制帐号的权限分配】<br />现在骇客的入侵技术当中，有一种技术叫网站旁注入侵，这种技术方式上面骇客入侵技术环节已经讲过了，是通过服务器里面一个有漏洞网站的来实施入侵，成功获取权限之后转而控制其它网站。那大家就想知道这个问题是由于什么原因导致的。原来IIS对于远程的普通用户访问是设置了一个专用的&ldquo;IUSR_机器名&rdquo;的帐号。那么正因为IIS用&ldquo;IUSR_机器名&rdquo;的帐号来管理所有网站访问权限，因此骇客就可以用到这种旁注入侵技术了。那么怎么来解决这个问题？很简单，我给每个网站分别设置一个单独的IIS控制帐号，IIS控制帐号的权限设为GUESTS组就可以。这样即使骇客通过服务器的一个网站拿到权限，那他也只有这个网站的权限，服务器其它网站他都没有权限可以访问，骇客对服务器破坏的风险降低了，那么安全就相对提高了。<br />8.【注入漏洞的修补以及上传文件类型的限制】<br />这两个部分是各位网站程序员所必须关注的，骇客对网站实施入侵的过程中，80％会用到网站的注入点和上传漏洞来实施入侵。注入漏洞的修补可以使用网上一些现成的修补代码，如ASP通用防注入组件，防注入代码完美版等，但是我还是建议网站程序员稍微花点时间自己来写防注入代码，这样会比较安全可靠。上传文件类型的限制这个写起来也不难，只允许用户上传你们网站所要用到的文件类型，限制好文件类型，特别不要让ASP，ASA等扩展名的文件上传上来，然后对文件的头文件进行一个检查，发现有ASP木马特征的就限制上传。当然，现在的骇客越来越聪明，ASP木马大部分都使用一句话木马，然后还会对代码进行各种各样的变形处理来逃过网站的限制以及杀毒软件的查杀。对于这些免杀技术的木马用ASP代码的方式很难防范，最好使用安全产品来进行防御。<br />9.【SQL权限的安全设置】<br />ASP+MSSQL是骇客最感兴趣的网站，通常骇客能很轻松的利用MSSQL的漏洞拿到系统权限，因此这一块是大家要加以重视。<br />首先系统安装的时候，尽量不要默认安装到c:\Program files目录里面，然后安装好之后要打好SQL数据库最新的补丁程序。然后数据库不要放在默认的位置，接下来就要看网站是否需要远程登录sql服务器，我建议能不用远程就不要用，如果必须使用的话，那建议大家可以把端口改成一个高端端口，这样骇客很难找到。<br />在做好安全安装的工作之后，就要把SA设置一个复杂的密码，然后把SQL里面的BUILTIN\Administrators用户组删除，这样是避免骇客以WINDOWS身份登录SQL。接着在企业管理器里面编辑SQL Server注册属性，选择使用&ldquo;使用SQL Server身份验证&rdquo;并勾选&ldquo;总是提示输入登录名和密码&rdquo;。<br />然后在增加用户的时候，只给public和db_owner权限。<br />添加用户<br />exec sp_addlogin 'abc'<br />使它变为当前数据库的合法用户<br />exec sp_grantdbaccess N'abc'<br />授予abc用户对数据库的db_owner权限<br />exec sp_addrolemember N'db_owner'， N'abc'<br />最后就要删除一些骇客常用到的调用SHELL，操作注册表，调用COM组件的权限。<br />打开查询分析器，输入：<br />use master<br />EXEC sp_dropextendedproc 'xp_cmdshell'<br />EXEC sp_dropextendedproc 'Sp_OACreate'<br />EXEC sp_dropextendedproc 'Sp_OADestroy'<br />EXEC sp_dropextendedproc 'Sp_OAGetErrorInfo'<br />EXEC sp_dropextendedproc 'Sp_OAGetProperty'<br />EXEC sp_dropextendedproc 'Sp_OAMethod'<br />EXEC sp_dropextendedproc 'Sp_OASetProperty'<br />EXEC sp_dropextendedproc 'Sp_OAStop'<br />EXEC sp_dropextendedproc 'Xp_regaddmultistring'<br />EXEC sp_dropextendedproc 'Xp_regdeletekey'<br />EXEC sp_dropextendedproc 'Xp_regdeletue'<br />EXEC sp_dropextendedproc 'Xp_regenumvalues'<br />EXEC sp_dropextendedproc 'Xp_regread'<br />EXEC sp_dropextendedproc 'Xp_regremovemultistring'<br />EXEC sp_dropextendedproc 'Xp_regwrite'<br />drop procedure sp_makewebtask<br />点击菜单上&ldquo;查询&rdquo;里面的&ldquo;执行&rdquo;，这样就可以把这些会被骇客利用的权限删除掉。</p>]]></description><category>ASP</category><comments>http://www.hzzhit.com/blog/ASP/asp-hack-basic-all.html#comment</comments><wfw:comment>http://www.hzzhit.com/blog/</wfw:comment><wfw:commentRss>http://www.hzzhit.com/blog/feed.asp?cmt=112</wfw:commentRss><trackback:ping>http://www.hzzhit.com/blog/cmd.asp?act=tb&amp;id=112&amp;key=92a2868a</trackback:ping></item><item><title>ASP调用存储过程的几种方式</title><author>a@b.com (shine)</author><link>http://www.hzzhit.com/blog/ASP/asp-chunchuguocheng.html</link><pubDate>Fri, 30 Oct 2009 17:16:40 +0800</pubDate><guid>http://www.hzzhit.com/blog/ASP/asp-chunchuguocheng.html</guid><description><![CDATA[<p>1. 这也是最简单的方法,两个输入参数，无返回值：<br />set connection = server.createobject(&quot;adodb.connection&quot;)<br />connection.open someDSN <br />Connection.Execute &quot;procname varvalue1, varvalue2&quot;<br /><br />''将所有对象清为nothing，释放资源<br />connection.close<br />set connection = nothing<br /><br /><br />2. 如果要返回 Recordset 集:<br />set connection = server.createobject(&quot;adodb.connection&quot;)<br />connection.open someDSN <br />set rs = server.createobject(&quot;adodb.recordset&quot;)<br />rs.Open &quot;Exec procname varvalue1, varvalue2&quot;,connection<br /><br />''将所有对象清为nothing，释放资源<br />rs.close<br />connection.close<br />set rs = nothing<br />set connection = nothing<br /><br /><br />3. 以上两种方法都不能有返回值，（Recordset除外），如果要得到返回值，需要用Command的方法。<br />首先说明，返回值有两种。一种是在存储过程中直接return一个值，就象C和VB的函数返回值那样；另一种是可以返回多个值，存<br />储这些值的变量名称需要在调用参数中先行指定。<br />这个例子要处理多种参数，输入参数，输出参数，返回记录集以及一个直接返回值（够全了吧？）<br />存储过程如下：<br /><br />use pubs<br />GO<br /><br />-- 建立存储过程<br />create procedure sp_PubsTest<br /><br />-- 定义三个参数变量，注意第三个，特别标记是用于输出<br />@au_lname varchar (20), <br />@intID int,<br />@intIDOut int OUTPUT<br /><br />AS<br /><br />SELECT @intIDOut = @intID + 1<br /><br />SELECT * <br />FROM authors <br />WHERE au_lname LIKE @au_lname + ''%''<br /><br />--直接返回一个值<br />RETURN @intID + 2<br /><br /><br />调用该存储过程的asp程序如下：<br /><br />&lt;%@ Language=VBScript %&gt;<br />&lt;%<br />Dim CmdSP<br />Dim adoRS<br />Dim adCmdSPStoredProc<br />Dim adParamReturnValue<br />Dim adParaminput<br />Dim adParamOutput<br />Dim adInteger<br />Dim iVal<br />Dim oVal<br />Dim adoField<br />Dim adVarChar<br /><br />&lsquo;这些值在 VB 中是预定义常量，可以直接调用，但在 VBScript 中没有预定义<br />adCmdSPStoredProc = 4<br />adParamReturnValue = 4<br />adParaminput = 1<br />adParamOutput = 2<br />adInteger = 3<br />adVarChar = 200<br /><br />iVal = 5<br />oVal = 3<br /><br />''建一个command对象<br />set CmdSP = Server.CreateObject(&quot;ADODB.Command&quot;)<br /><br />''建立连结<br />CmdSP.ActiveConnection = &quot;Driver={SQL Server};server=(local);Uid=sa;Pwd=;Database=Pubs&quot;<br /><br />''定义command 对象调用名称 <br />CmdSP.CommandText = &quot;sp_PubsTest&quot;<br /><br />''设置command调用类型是存储过程 (adCmdSPStoredProc = 4)<br />CmdSP.CommandType = adCmdSPStoredProc<br /><br />''往command 对象中加参数<br />''定义存储过程有直接返回值，并且是个整数，省缺值是4<br />CmdSP.Parameters.Append CmdSP.CreateParameter(&quot;RETURN_VALUE&quot;, adInteger, adParamReturnValue, 4)<br />''定义一个字符型输入参数<br />CmdSP.Parameters.Append CmdSP.CreateParameter(&quot;@au_lname&quot;, adVarChar, adParaminput, 20, &quot;M&quot;)<br />''定义一个整型输入参数<br />CmdSP.Parameters.Append CmdSP.CreateParameter(&quot;@intID&quot;, adInteger, adParamInput, , iVal)<br />''定义一个整型输出参数<br />CmdSP.Parameters.Append CmdSP.CreateParameter(&quot;@intIDOut&quot;, adInteger, adParamOutput, oVal)<br /><br />''运行存储过程，并得到返回记录集<br />Set adoRS = CmdSP.Execute<br /><br /><br />''把每个记录打印出来，其中的字段是虚拟的，可以不用管<br />While Not adoRS.EOF<br /><br />for each adoField in adoRS.Fields<br />Response.Write adoField.Name &amp; &quot;=&quot; &amp; adoField.Value &amp; &quot;&lt;br&gt;&quot; &amp; vbCRLF<br />Next<br />Response.Write &quot;&lt;br&gt;&quot;<br />adoRS.MoveNext<br />Wend<br /><br />''打印两个输出值：<br />Response.Write &quot;&lt;p&gt;@intIDOut = &ldquo; &amp; CmdSP.Parameters(&quot;@intIDOut&quot;).Value &amp; &quot;&lt;/p&gt;&quot;<br />Response.Write &quot;&lt;p&gt;Return value = &quot; &amp; CmdSP.Parameters(&quot;RETURN_VALUE&quot;).Value &amp; &quot;&lt;/p&gt;&quot;<br /><br /><br />''大扫除<br />Set adoRS = nothing<br />Set CmdSP.ActiveConnection = nothing<br />Set CmdSP = nothing<br />%&gt;<br /><br /><br />------------------------------------------------------------------------------------------------------------------------------------<br /><br />在asp中调用sql server的存储过程可以加快程序运行速度<br /><br />1.调用存储过程的一般方法<br />先假设在sql server中有一存储过程dt_users：<br />CREATE PROCEDURE [dbo].[dt_users] <br />AS<br />select * from users<br />return<br />GO<br />第一种方法是不利用command对象，直接用recordset对象<br />set rs=server.createobject(&quot;adodb.recordset&quot;)<br />sql=&quot;exec dt_users&quot;<br />rs.open sql,conn,1,1&nbsp; 这样就可<br />第二种方法是利用command对象<br />set comm=server.createobject(&quot;adodb.command&quot;)<br />comm.commantype=4<br />set comm.activeconnection=conn<br />comm.commandtext=&quot;dbo.dt_users&quot;<br />set rs=server.createobject(&quot;adodb.recordset&quot;)<br />rs.open comm,,1,1<br /><br />2.给存储过程传递参数<br />如果存储过程中不用参数，而是单一的sql语句，还显示不出调用存储过程的优势！<br />比如说一bbs的查询，可以按作者和主题查询！则可以建立存储过程如下：<br />参数keyword为关键字，choose是选择查询的方法。<br />CREATE PROCEDURE [dbo].[dt_bbs] <br />@keyword varchar(20)=null,<br />@choose int=null<br />as<br />if @choose=1 <br />&nbsp; select * from bbs where name like @keyword<br />else<br />&nbsp; select * from bbs where subject like @keyword<br />return<br />go<br />这样我们调用存储过程时只需将参数传递过去就行了，而省去在asp中来写一段程序<br />用第一种方法：<br />set rs=server.createobject(&quot;adodb.recordset&quot;)<br />sql=&quot;exec dt_bbs ''&quot;&amp;keyword&amp;&quot;'',&quot;&amp;choose&amp;&quot;&quot;<br />rs.open sql,conn,1,1<br />用第二种方法:<br />set comm=server.createobject(&quot;adodb.command&quot;)<br />comm.commantype=4<br />comm.Parameters.append comm.CreateParameter(&quot;@keyword&quot;,adChar,adParamInput,50,keyword)<br />comm.Parameters.append comm.CreateParameter(&quot;@keyword&quot;,adInteger,adParamInput,,choose)<br />set comm.activeconnection=conn<br />comm.commandtext=&quot;dbo.dt_bbs&quot;<br />set rs=server.createobject(&quot;adodb.recordset&quot;)<br />rs.CursorType=3<br />rs.open comm,1,1</p>]]></description><category>ASP</category><comments>http://www.hzzhit.com/blog/ASP/asp-chunchuguocheng.html#comment</comments><wfw:comment>http://www.hzzhit.com/blog/</wfw:comment><wfw:commentRss>http://www.hzzhit.com/blog/feed.asp?cmt=109</wfw:commentRss><trackback:ping>http://www.hzzhit.com/blog/cmd.asp?act=tb&amp;id=109&amp;key=e4fa33f8</trackback:ping></item></channel></rss>
