<?xml version="1.0" encoding="gb2312"?><rss version="2.0">
<channel>
<title>酷库网络</title>
<link>http://www.cuku.net</link>
<description><![CDATA[酷库网欢迎您的到来，本站的服务有 asp、php、jsp教程,jdk下载,resin下载,<a href=/cctv5.html>cctv5在线直播</a>，nba在线直播,本站论坛 <a href=http://bbs.cuku.net/>bbs.cuku.net</a> 欢迎访问  ]]></description>
<language>zh-cn</language>
<copyright><![CDATA[CopyRight&copy;2005-2007 BY www.cuku.net  <A href="http://www.cuku.net">酷库网络<BR></A>E-mail:Info#cuku.net QQ:3662296 建站时间2005<BR>]]></copyright>
<webMaster><![CDATA[耶律]]></webMaster>
<generator>酷库网,程序,教程,让酷库网做得更好!</generator> 
<image>
	<title>酷库网,程序,教程,让酷库网做得更好!</title> 
	<url>http://www.cuku.net/img/logo.gif</url> 
	<link>酷库网络</link> 
	<description>酷库网,程序,教程,让酷库网做得更好!</description> 
</image>

		 		<item>
			<link>http://www.cuku.net/show.php/1019.html</link>
			<title>最大的悲哀</title>
			<author>原創</author>
			<category>综合版块</category>
			<pubDate>2008-03-19 15:55:28</pubDate>
			<guid>http://www.cuku.net/show.php/1019.html</guid>
		<description><![CDATA[<div>關於 aixq.com</div>
<div>这个月一直被关,我很无耐,这个这个域名了在baidu中,被扫除,本来不会坚持这个域名,但是没有办法,比较好记,真真能进来的人还不是很多<br /><br />我在2003年開始做網站,那時候21windows有免費空間,我去的時候沒有了<br />2005年的時候買了aixq.com這個域名,開始做網站,<br />後來在這裡面買了幾個域名,本來想拿去賣,但是賣不了,<br />因為如果我過戶的話,要交1200<br />於是只好努力的做好我的網站,但是這個月,網站被關了兩次,<br />我用的是bo-blog<br />不時的說我占的資源多,然後關了,<br />現在又被關,<br />域名又轉不走,<br /><br />你們碰到這些在哪裡投訴? </div>
<div>&nbsp;</div>
<div>站长统计-当前在线[] Powered by Bo-Blog 2.1.0 <br />Run in 3604 ms, 6 Queries.<br /><br />当天PV 79 <br />当天独立访客 45 <br />当天IP数 47 <br />------------------ ---------- <br />昨日PV 116 <br />昨日独立访客 74 <br />昨日IP数 76 <br />平均每人访问页数 1.53&nbsp;&nbsp;<br /><br />上面是統計資料<br /><br /><a href="http://www.cnzz.com/stat/view.php?web_id="58186" target="_blank">http://www.cnzz.com/stat/view.php?web_id=58186</a><br />我的統計<br /><br />那些數字大的,不在這個空間朝左面 </div>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1018.html</link>
			<title>PHP Web服务的价值</title>
			<author>佚名</author>
			<category>PHP教程</category>
			<pubDate>2008-01-29 09:14:59</pubDate>
			<guid>http://www.cuku.net/show.php/1018.html</guid>
		<description><![CDATA[据我所知，Web服务是最酷的技术，但它最终会让大家觉得沉闷。不知道您感觉如何，每当我参加讨论web服务的演讲时，总是听到很多缩写，如REST、XML/RPC、SOAP和RSS。然后就开始打盹，梦到有个地方树上长满Krispy Kreme甜面卷。醒来时，我认识到实际上我做了很多web服务工作，并没完全用到那些毫无意义的标准程序。我看待web服务的方式非常简单，它就是web应用程序的备用接口，允许其他程序以编程语言可以理解的方式与我的应用程序通信。人们通过HTML与应用程序通信，应用程序通过XML、CSV或其他标准与我的应用程序通信。<BR><BR><IMG height=234 alt="" src="/admin/edit/UploadFile/200812991435109.jpg" width=400><BR><BR>图1能更好地解释这个理论：<BR>图1. 传统的web应用程序与面向服务的架构（SOA）<BR><BR>左侧为传统的web应用程序。服务器通过HTML与web客户端通信。该服务器可以是任何技术：Java、.NET、Rails、PHP、Python或ColdFusion。右侧为相同的web应用程序。但是它除了提供HTML，还使用XML通信，因此可以与其他应用程序或RSS阅读器之类的专用服务器交流。<BR>我经常听到人们谈论完全基于服务的应用服务器。这对于后端技术来说可能不错。但是对于普通的web应用程序，您总是希望它同时支持HTML和XML接口。拥有两种接口的一项好处在于，它强制您将业务逻辑集中到一个位置（可能是一个“中间层”），因此HTML和XML接口都可以与数据库通信并获得相同的结果。<BR><BR>允许web应用程序通过XML与其他程序通信的价值对您来说可能显而易见，但是对我来说并非如此，至少最初是这样。因此本文讲述一个示例，演示通过在应用程序中设置XML接口可以实现哪些功能。首先讲述简单的HTML前端，然后显示如何构建XML接口并添加各种阅读器（包括Ajax、RSS和Adobe Flex）。<BR><BR>文章应用程序<BR>首先讲述的测试应用程序是数据库中有一个文章列表的程序。清单1显示了这个数据库。<BR>清单 1. articles.sql<BR>DROP TABLE IF EXISTS articles;<BR>CREATE TABLE articles (<BR>id INTEGER NOT NULL AUTO_INCREMENT,<BR>title VARCHAR(255),<BR>author VARCHAR(255),<BR>description TEXT,<BR>PRIMARY KEY( id ) );<BR>INSERT INTO articles VALUES ( null,<BR>'What I like about dogs', 'Megan Herrington',<BR>'Everything that I love about dogs I learned in preschool' );<BR>INSERT INTO articles VALUES ( null,<BR>'Making action movies', 'Jack Herrington',<BR>'How to script, produce and direct Hong Kong action flicks' );<BR>INSERT INTO articles VALUES ( null,<BR>'Super Paper Mario Tips', 'Lori Herrington',<BR>'Everything you need to know to win at Paper Mario' );<BR>INSERT INTO articles VALUES ( null,<BR>'Why I bark', 'Oso Herrington',<BR>'' );<BR><BR>该程序非常简单。它包含一个存储文章列表的简单表格；每篇文章都有标题、作者和描述。<BR>清单2显示此表格的详细HTML前端。<BR>清单2. articles.php<BR>&lt;html&gt;<BR>&lt;head&gt;&lt;title&gt;Articles&lt;/title&gt;&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;?php<BR>require_once( "DB.php" );<BR>$db =&amp; DB::Connect( 'mysql://root@localhost/articles1', array() );<BR>if (PEAR::isError($db)) { die($db-&gt;getMessage()); }<BR>$res = $db-&gt;query( "SELECT * FROM articles" );<BR>$rows = array();<BR>while( $res-&gt;fetchInto($row, DB_FETCHMODE_ASSOC) ) {<BR>?&gt;<BR>&lt;div class="title"&gt;&lt;?php echo( $row['title'] ) ?&gt;&lt;/div&gt;<BR>&lt;div class="author"&gt;&lt;?php echo( $row['author'] ) ?&gt;&lt;/div&gt;<BR>&lt;?php if ( strlen( $row['description'] ) &gt; 0 ) { ?&gt;<BR>&lt;div class="description"&gt;&lt;?php echo( $row['description'] ) ?&gt;&lt;/div&gt;<BR>&lt;?php } ?&gt;<BR>&lt;br/&gt;<BR>&lt;?php } ?&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR><BR>如果一切工作正常并且设置了此数据库，就能在浏览器中导航到此页面时显示<BR><BR>看到的内容并不多，但是我希望这个示例尽量简单。主要是因为后面的内容不容易处理。<BR>提供XML接口的一个主要原因是人们不必编写清单3所示的代码。<BR><BR>清单 3. fetch.rb<BR>require 'net/http'<BR>articles = []<BR>Net::HTTP.start('localhost', 80) { |http|<BR>response = http.get('/ws/articles.php')<BR>body = response.body<BR>body.scan( /(&lt;div class="title"&gt;.*?)&lt;br\/&gt;/m ) { |item|<BR>title = item[0].scan( /&lt;div class="title"&gt;(.*?)&lt;\/div&gt;/ )<BR>author = item[0].scan( /&lt;div class="author"&gt;(.*?)&lt;\/div&gt;/ )<BR>description = item[0].scan( /&lt;div class="description"&gt;(.*?)&lt;\/div&gt;/ )<BR>title = title[0][0] if ( title[0].length &gt; 0 )<BR>author = author[0][0] if ( author[0].length &gt; 0 )<BR>description = ( description.length &gt; 0 ) ? description[0][0] : ''<BR>articles.push( { :title =&gt; title,<BR>:author =&gt; author, :description =&gt; description } )<BR>}<BR>}<BR>p articles<BR><BR>这是基于Ruby的“屏幕截取器”。这个脚本以一个大文本字符串获取页面，然后使用一组复杂的正则表达式解析页面的标题、作者和描述元素。<BR>在命令行运行时，将看到清单4所示的代码。<BR>清单4. 运行fetch.rb<BR>% ruby fetch.rb<BR>[{:author=&gt;"Megan Herrington", :description=&gt;"Everything that I love about dogs I<BR>learned in preschool", :title=&gt;"What I like about dogs"}, {:author=&gt;"Jack<BR>Herrington", :description=&gt;"How to script, produce and direct Hong Kong action<BR>flicks", :title=&gt;"Making action movies"}, {:author=&gt;"Lori Herrington",<BR>:description=&gt;"Everything you need to know to win at Paper Mario", :title=&gt;"Super<BR>Paper Mario Tips"}, {:author=&gt;"Oso Herrington", :description=&gt;"", :title=&gt;"Why I<BR>bark"}]<BR>是的，它获得了数据，但是不能获得这些元素的ID，因为HTML没有ID。<BR>您可能想知道为什么我选择使用Ruby实现。这主要是因为它很酷，并且易于阅读，可是这里却看不到这些优点。但这不是Ruby的错。屏幕截取器本身就很复杂。它们难于编写、易于出错、难以维护，即使对接口的HTML稍加修改就可能崩溃。本文中的所有屏幕截取器代码都只有一个目的：说服您对数据设置XML接口。如果您的数据很有趣，人们就能通过某种途径找到它。如果您不支持XML，当您更新站点以“美化”界面时，就会获得屏幕截取，并且触怒客户。<BR><BR>添加XML服务<BR>因此，为了避免屏幕截取问题，并制作一些炫酷的程序来使用我们的数据，我将对表格编写一个XML接口，如清单5所示。<BR>清单5. artxml.php<BR>&lt;?php<BR>require_once( "DB.php" );<BR>$db =&amp; DB::Connect( 'mysql://root@localhost/articles1', array() );<BR>if (PEAR::isError($db)) { die($db-&gt;getMessage()); }<BR>$dom = new DomDocument();<BR>$dom-&gt;formatOutput = true;<BR>$root = $dom-&gt;createElement( "articles" );<BR>$dom-&gt;appendChild( $root );<BR>$res = $db-&gt;query( "SELECT * FROM articles" );<BR>$rows = array();<BR>while( $res-&gt;fetchInto($row, DB_FETCHMODE_ASSOC) ) {<BR>$art = $dom-&gt;createElement( "article" );<BR>$art-&gt;setAttribute( 'id', $row['id'] );<BR>$root-&gt;appendChild( $art );<BR>$title = $dom-&gt;createElement( "title" );<BR>$title-&gt;appendChild( $dom-&gt;createTextNode( $row['title'] ) );<BR>$art-&gt;appendChild( $title );<BR>$author = $dom-&gt;createElement( "author" );<BR>$author-&gt;appendChild( $dom-&gt;createTextNode( $row['author'] ) );<BR>$art-&gt;appendChild( $author );<BR>$desc = $dom-&gt;createElement( "description" );<BR>$desc-&gt;appendChild( $dom-&gt;createTextNode( $row['description'] ) );<BR>$art-&gt;appendChild( $desc );<BR>}<BR>header( "Content-type: text/xml" );<BR>echo $dom-&gt;saveXML();<BR>?&gt;<BR>在命令行运行此脚本时，将获得清单6所示的输出。<BR>清单6. 文章XML<BR>% php artxml.php<BR>&lt;?xml version="1.0"?&gt;<BR>&lt;articles&gt;<BR>&lt;article id="1"&gt;<BR>&lt;title&gt;What I like about dogs&lt;/title&gt;<BR>&lt;author&gt;Megan Herrington&lt;/author&gt;<BR>&lt;description&gt;Everything that I love about dogs I learned in<BR>preschool&lt;/description&gt;<BR>&lt;/article&gt;<BR>&lt;article id="2"&gt;<BR>&lt;title&gt;Making action movies&lt;/title&gt;<BR>&lt;author&gt;Jack Herrington&lt;/author&gt;<BR>&lt;description&gt;How to script, produce and direct Hong Kong action<BR>flicks&lt;/description&gt;<BR>&lt;/article&gt;<BR>...<BR>这非常直观。有一个根文章标记，它包含一组文章标记。每个文章标记都有id属性（包含记录的数字id），以及存储相应数据的作者和描述标记。<BR>我使用了PHP中的XML文档对象模型（Document Object Model，DOM）功能，而不是手动编写标记。这样DOM将为我处理所有XML节点平衡和编码工作。这是确保页面返回的XM总是有效的简便方式。强烈推荐使用XML DOM功能来输出XML。所有主要的web语言都支持构建和导出XML DOM。<BR>获取XML<BR>上文中我展示了从HTML中提取数据的HTML和Ruby代码。既然拥有了此XML服务，下面将观察获得相同数据的Ruby代码片断，但是这次使用XML语言。清单7显示了XML提取代码。<BR>清单7. fetchxml.rb<BR>require 'net/http'<BR>require 'rexml/document'<BR>articles = []<BR>Net::HTTP.start('localhost', 80) { |http|<BR>response = http.get('/ws/artxml.php')<BR>body = response.body<BR>doc = REXML::Document.new body<BR>doc.each_element( '/articles/article' ) { |art|<BR>articles.push( {<BR>:id =&gt; art.attributes['id'],<BR>:title =&gt; art.elements['title'].text,<BR>:author =&gt; art.elements['author'].text,<BR>:description =&gt; art.elements['description'].text<BR>} )<BR>}<BR>}<BR>p articles<BR><BR>这更简单。仍然能以相同的方式获得页面，但是将页面内存提供给REXML库，并使用XML功能轻松快捷地获得id、标题、作者和描述数据。此代码易于阅读、易于维护并且不会崩溃，除非XML格式发生变化，但这不太可能。<BR>作为比较，我使用C#编写了相同的代码以显示如何使用两种不同的语言阅读单个数据源。如清单8所示。<BR>清单8. WebServiceTest.cs<BR>using System;<BR>using System.IO;<BR>using System.Net;<BR>using System.Xml;<BR>namespace wstest1<BR>{<BR>class WebServiceTest<BR>{<BR>[STAThread]<BR>static void Main(string[] args)<BR>{<BR>HttpWebRequest r = (HttpWebRequest)WebRequest.Create(<BR>"http://localhost/ws/artxml.php" );<BR>WebResponse res = r.GetResponse();<BR>string sPage;<BR>StreamReader reader = new StreamReader( res.GetResponseStream() );<BR>sPage = reader.ReadToEnd();<BR>reader.Close();<BR>res.Close();<BR>XmlDocument doc = new XmlDocument();<BR>doc.LoadXml( sPage );<BR>foreach( XmlElement elArticle in doc.GetElementsByTagName( "article" ) )<BR>{<BR>string sTitle = (elArticle.SelectSingleNode( "title" )).InnerXml;<BR>string sAuthor = (elArticle.SelectSingleNode( "author" )).InnerXml;<BR>string sDescription = (elArticle.SelectSingleNode( "description"<BR>)).InnerXml;<BR>int nID = Int32.Parse( elArticle.Attributes["id"].Value );<BR>}<BR>}<BR>}<BR>}<BR><BR>解决了本文中最难以处理的部分后，下面应该讨论有趣的事情了，比如以其他方式使用XML可以实现什么功能。<BR>在XSLT中使用XML<BR>等等，我刚才是不是说最难以处理的部分已经解决了？哦，不好意思，还有另外一项。结果发现使用XML Style Sheet或XSL可以快速设置XML数据格式。清单9所示的代码设置web服务（从articles.php页面写入到HTML）所返回的XML代码的格式。<BR>清单9. articles.xsl<BR>&lt;xsl:stylesheet version="1.0"<BR>xmlns:xsl="http://www.w3.org/1999/XSL/Transform"<BR>xmlns="http://www.w3.org/TR/xhtml1/strict"&gt;<BR>&lt;xsl:output method="html" indent="yes" encoding="iso-8859-1" /&gt;<BR>&lt;xsl:template match="/"&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;&lt;title&gt;Article list&lt;/title&gt;&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;xsl:for-each select="/articles/article"&gt;<BR>&lt;div class="title"&gt;&lt;xsl:value-of select="title"/&gt;&lt;/div&gt;<BR>&lt;div class="author"&gt;&lt;xsl:value-of select="author"/&gt;&lt;/div&gt;<BR>&lt;xsl:if test="string-length( description ) &amp;gt; 0"&gt;<BR>&lt;div class="description"&gt;&lt;xsl:value-of select="description"/&gt;&lt;/div&gt;<BR>&lt;/xsl:if&gt;<BR>&lt;/xsl:for-each&gt;<BR>&lt;/body&gt;&lt;/html&gt;<BR>&lt;/xsl:template&gt;<BR>&lt;/xsl:stylesheet&gt;<BR><BR>读起来有点不太容易，但是这是您的XSL。基本上，XSL是模式匹配器，我定义了匹配传入XML树的根标记的XSL模板。它输出HTML报头，然后使用for-each循环遍历每篇文章，并输出标题、作者和描述的值（如果有）。<BR>此样式表可以附加到XML输出本身，大多数浏览器将使用它将XML呈现到HTML以自动显示。怎么样！<BR><BR>Ajax<BR>从应用程序中导出XML的最可能的理由是为了能够在web客户端中使用。客户端的JavaScript可以在加载页面之后从服务器请求XML，并以它所选择的任何方式（经常根据用户输入动态更改）呈现，并且不需要刷新页面。<BR>清单10显示了一个基于Ajax的简单表格，它呈现来自XML feed的数据。<BR>清单10. ajax.html<BR>&lt;html&gt;&lt;head&gt;<BR>&lt;script src="prototype.js"&gt;&lt;/script&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;&lt;table id="articles"&gt;&lt;/table&gt;<BR>&lt;script&gt;<BR>new Ajax.Request( 'artxml.php', {<BR>method: 'get',<BR>onSuccess: function( transport ) {<BR>var artTags = transport.responseXML.getElementsByTagName( 'article' );<BR>for( var a = 0; a &lt; artTags.length; a++ ) {<BR>var author =<BR>artTags[a].getElementsByTagName('author')[0].firstChild.nodeValue;<BR>var title = artTags[a].getElementsByTagName('title')[0].firstChild.nodeValue;<BR>var description =<BR>artTags[a].getElementsByTagName('description')[0].firstChild.nodeValue;<BR>var elTR = $('articles').insertRow( -1 );<BR>var elTD1 = elTR.insertCell( -1 );<BR>elTD1.innerHTML = author;<BR>var elTD2 = elTR.insertCell( -1 );<BR>elTD2.innerHTML = title;<BR>var elTD3 = elTR.insertCell( -1 );<BR>elTD3.innerHTML = description;<BR>}<BR>}<BR>} );<BR>&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;<BR><BR>此代码使用Prototype.js库从数据库访问数据，然后使用浏览器中的XML DOM功能访问作者、标题和描述字段。然后，使用HTML DOM函数针对数据集中的每篇文章向“articles”表格添加新行和单元格。<BR><BR>这是非常基础的示例，但是完全不必向服务器端请求额外的数据，即可轻松地设想添加客户端排序或搜索。<BR><BR>使用Flex访问XML<BR>下一代内容丰富的Internet应用程序框架（如Adobe Flex）是基于XML产生和发展起来的。因此可以轻松使用和显示XML数据。观察清单11所示的示例Flex应用程序。<BR>清单11. wstest.mxml<BR>&lt;?xml version="1.0" encoding="utf-8"?&gt;<BR>&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"&gt;<BR>&lt;mx:XML id="articles" source="http://localhost/ws/artxml.php" /&gt;<BR>&lt;mx:DataGrid dataProvider="{articles..article}" width="400"&gt;<BR>&lt;mx:columns&gt;<BR>&lt;mx:Array&gt;<BR>&lt;mx:DataGridColumn dataField="author" headerText="Author" /&gt;<BR>&lt;mx:DataGridColumn dataField="title" headerText="Title" /&gt;<BR>&lt;mx:DataGridColumn dataField="description" headerText="Description" /&gt;<BR>&lt;/mx:Array&gt;<BR>&lt;/mx:columns&gt;<BR>&lt;/mx:DataGrid&gt;<BR>&lt;/mx:Application&gt;<BR>其中并没有实际代码，仅仅是对XML数据源的引用，然后此数据源被传送到DataGrid控件。<BR><BR>是不是很酷？实现此功能不需要任何代码。这只是Flex 和ActionScript使用XML可以实现的基本功能。ActionScript有一个内置的语言扩展，名为E4X。借助E4X，可以像使用“点标注”语法一样简单地导航XML文档树。这意味着没有太多沉闷的XML DOM方法，仅仅是直观对象和数组引用，就像内存中有任何其他数据结构一样。<BR><BR>标准化<BR>我使用了仅适于本示例的XML风格。但是也可以使用标准XML格式实现，如RSS。清单12中的代码以RSS格式显示了相同数据库输出。<BR><BR>清单12. artrss.php<BR>&lt;?php<BR>require_once( "DB.php" );<BR>$db =&amp; DB::Connect( 'mysql://root@localhost/articles1', array() );<BR>if (PEAR::isError($db)) { die($db-&gt;getMessage()); }<BR>$dom = new DomDocument();<BR>$dom-&gt;formatOutput = true;<BR>$rss = $dom-&gt;createElement( "rss" );<BR>$rss-&gt;setAttribute( "version", "0.91" );<BR>$dom-&gt;appendChild( $rss );<BR>$root = $dom-&gt;createElement( "channel" );<BR>$rss-&gt;appendChild( $root );<BR>$rtitle = $dom-&gt;createElement( "title" );<BR>$rtitle-&gt;appendChild( $dom-&gt;createTextNode( "Article list" ) );<BR>$root-&gt;appendChild( $rtitle );<BR>$rdesc = $dom-&gt;createElement( "description" );<BR>$rdesc-&gt;appendChild( $dom-&gt;createTextNode( "The article list" ) );<BR>$root-&gt;appendChild( $rdesc );<BR>$res = $db-&gt;query( "SELECT * FROM articles" );<BR>$rows = array();<BR>while( $res-&gt;fetchInto($row, DB_FETCHMODE_ASSOC) ) {<BR>$art = $dom-&gt;createElement( "item" );<BR>$root-&gt;appendChild( $art );<BR>$title = $dom-&gt;createElement( "title" );<BR>$title-&gt;appendChild( $dom-&gt;createTextNode( $row['title'] ) );<BR>$art-&gt;appendChild( $title );<BR>$title = $dom-&gt;createElement( "link" );<BR>$title-&gt;appendChild( $dom-&gt;createTextNode(<BR>"http://myhost/showarticle.php?id=".$row['id'] ) );<BR>$art-&gt;appendChild( $title );<BR>$desc = $dom-&gt;createElement( "description" );<BR>$desc-&gt;appendChild( $dom-&gt;createTextNode( $row['description'] ) );<BR>$art-&gt;appendChild( $desc );<BR>}<BR>header( "Content-type: text/xml" );<BR>echo $dom-&gt;saveXML();<BR>?&gt;<BR><BR>此方法的好处在于，除了可以阅读XML的任何自定义代码之外，还可以使用所有的RSS工具。例如，可以在feed中指向我的Firefox浏览器，就会创建可以放到工具栏并检查更新的“活动书签”，<BR>&nbsp;<BR>当然，不是所有数据都能方便地设置为RSS格式，这没什么问题。但是如果可以成为RSS、RDF或任何其他方便的XML格式。那么最好遵循这些格式，而不是自己发明。<BR><BR>结束语<BR>希望本文能够使您以正确的角度理解应用程序的web服务。我知道并没有讲述所有REST、XML/RPC或SOAP基础知识。有很多文章讨论过这些技术，多年以来，技术人员已经历过很多基于标准的噩梦。相反，我希望展示从应用程序中获得XML数据并以实用的方式使用它是件多么轻松的事情。如果我成功了，请写信告知我并展示从您的应用程序中提取的XML数据。也许我们可以使用其他web服务一起完成一个mash-up。<BR><BR>资源<BR>&#61589;&#61472;Flex是基于开放源码的内容丰富的Internet应用程序开发环境，由Adobe提出。<BR>&#61589;&#61472;REST是简单的web服务标准，用来更直接地映射到HTTP协议。<BR>&#61589;&#61472;SOAP是HTTP协议之上的高级的对象方法调用协议。<BR>&#61589;&#61472;XML/RPC是HTTP协议之上的中间层方法调用协议，与SOAP相比，是略微轻量级的协议。<BR>&#61589;&#61472;RSS是聚合标准，用于博客条目和新文章之类的内容。<BR>Google的Reader服务就是web浏览器或智能电话的强大、免费的RSS管理器。<BR>&#61589;&#61472;Prototype.js是免费的JavaScript库，可以帮助编写易于维护的跨浏览器Ajax代码。<BR>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1017.html</link>
			<title>使用java开发facebook网站应用程序</title>
			<author>else</author>
			<category>java相关</category>
			<pubDate></pubDate>
			<guid>http://www.cuku.net/show.php/1017.html</guid>
		<description><![CDATA[<div class=theTitle>
<h1 id="endTitle">
<div class=text><a href="http://bbs.tech.163.com/"><font color="#000000"></font></a></div><font size="4"><span id="digest">　　这里有一些技巧帮助你使用java开始建立自己的 facebook应用。 这并不是一个完整的入门指南，但他可以帮你在着手做时少走些弯路。</span> </font></h1></div>
<div id="endText">
<div style="text-indent: 2em">原文作者：Daniel　译者：<a href="http://www.yeeyan.com/space/show/kwyjibo" target="_blank"><font color="#1f3a87">kwyjibo</font></a></div>
<div style="text-indent: 2em">原文链接：<a href="http://javablog.co.uk/2007/07/25/tips-for-writing-facebook-applications-in-java/" target="_blank"><font color="#1f3a87">Tips for writing FaceBook applications in Java</font></a></div>
<div style="text-indent: 2em">丹尼尔 写于 2007年7月25日</div>
<div style="text-indent: 2em">当你想用Java写一Facebook的应用？你把在facebook的帐号中加入的程序开发模块，下载了相关的java类库。忽然你发现不得不停下来:开发相关的入门介绍，样例代码和文档说明在哪儿？这样的挫败感令人愤怒，而最终导致你不得不放弃。</div>
<div style="text-indent: 2em"><sup></sup>但愿有人会尽快写一个不错的应用Java 开发facebook应用的入门指南。也许只需要你给我些好吃的巧克力，我们可以写些相关的介绍文档，老实说我们的确也解决了不少相关的问题。这里有一些技巧帮助你使用java开始建立自己的 facebook应用。 这并不是一个完整的入门指南，但他可以帮你在着手做时少走些弯路。</div>
<div style="text-indent: 2em"><strong>八个注意事项辅助你构建Java/facebook应用</strong></div>
<div style="text-indent: 2em"><clk>1.为了你的幸福和<nobr oncontextmenu="return false;" onmousemove=kwM(0); id="key0" onmouseover="kwE(event,0, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,0);" onmouseout="kwL(event, this);" target="_blank">健康</nobr>，建议你使用5.0或更高的JDK开发包。</clk></div>
<div style="text-indent: 2em"><clk>2.不用看facebook java开发包中的列子，因为那些例子是针对java桌面应用程序的。而通常你是需要写一个web应用，这两种应用的区别还是很大的。 一开始，你需要一个web应用<nobr oncontextmenu="return false;" onmousemove=kwM(5); id="key5" onmouseover="kwE(event,5, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,5);" onmouseout="kwL(event, this);" target="_blank">服务</nobr>容器，你可以能会选择tomcat，但我不会，这里面有另一个故事，我会找个合适的时间再告诉你。Facebook的网络应用有一个不常见的调用模式。大多数你的页面会被facebook调用。用户请求一个facebook的页面，页面中的主要内容会从你的服务器中返回给用户。你体统的内容会融合到facebook的页面里返回给用户。大多数情况下这些流程不需要你的干预就能很好的执行。但需要注意的是你服务器端产生的页面中的javascript是不能执行的，这就意味着普通的ajax不再在facebook中应用。如果你需要使用AJAX的技术实现facebook 提供的 mock-ajax不能完成的<nobr oncontextmenu="return false;" onmousemove=kwM(2); id="key2" onmouseover="kwE(event,2, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,2);" onmouseout="kwL(event, this);" target="_blank">功能</nobr>，则需要通过facebook的页面跳到你服务配器上的一般页面。</clk></div>
<div style="text-indent: 2em">3.配置你在facebook上的应用程序</div>
<div style="text-indent: 2em">不要忘了填写facebook应用的配置文件，你应该设置： 应用程序的回调网址。</div>
<div style="text-indent: 2em">应用程序的名字- 这个名字用来表示标识在facebook的页面。（这些页面可以是用iframe嵌入到facebook的导航页，也可以是用FBML标记的页面）。一但设定，比如<a href="http://apps.facebook.com/yourappname/yourpagename" target="_blank"><font color="#1f3a87">http://apps.facebook.com/yourappname/yourpagename</font></a> 这个页面就会从facebok产生一个请求到你的服务器 。对于新用户来说，这就是一个你的应用程序的欢迎页面，邀请用户来使用传播你的这个应用。</div>
<div style="text-indent: 2em">4.用facebookrestclient</div>
<div style="text-indent: 2em">最重要的阶级，在客户端类库中最重要的类是facebookrestclient。这个类中包含一系列调用facebook服务端的方法，并涵盖了大部分你需要的功能。可惜facebookrestclient是不是个架构清晰的类。几乎所有的请求，需要一个facebookrestclient 这是建造一个会话密钥 。用户登陆后可以从CGI变量中获得会话的密钥。（参考 FacebookParam.SESSION_KEY.toString()）没有登陆的用户需要引导到一个登陆页面。 试试以下方法：</div>
<div style="text-indent: 2em">// 创建一个无会话状态的FacebookRestClient </div>
<div style="text-indent: 2em">FacebookRestClient client = new FacebookRestClient ( 你的api密钥 , 你的加密密钥 ) ; </div>
<div style="text-indent: 2em">String token = client.authcreateToken () ; </div>
<div style="text-indent: 2em">String loginURL = “http : //www.facebook.com/login.php?v=1.0&amp;apikey=&amp;”+ YOUR APIKEY +“&amp;auth_token =”+ token ; </div>
<div style="text-indent: 2em">// 这里转向到登陆页面 </div>
<div style="text-indent: 2em">// 登陆后就会返回会话key</div>
<div style="text-indent: 2em"><clk>FacebookRestClient.auth_getSession() 以我的经验基本没用。他的作用是把一个无会话的client变成一个有会话的。我发现从CGI变量中获取会话要比试用这个方法<nobr oncontextmenu="return false;" onmousemove=kwM(1); id="key1" onmouseover="kwE(event,1, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,1);" onmouseout="kwL(event, this);" target="_blank">简单</nobr>。</clk></div>
<div style="text-indent: 2em">当有一个会话key的FacebookRestClient，你可以调用这个类提供的各种facebook编辑方法。这些方法可以很方便与facebook进行交换操作。但不幸的事这些方法返回的是未经处理的XML文档，这些文档后续的处理会比较麻烦。</div>
<div style="text-indent: 2em">比如 friends_get()返回的是</div>
<div style="text-indent: 2em">&lt;document&gt; </div>
<div style="text-indent: 2em">&lt;friendsgetresponse&gt; </div>
<div style="text-indent: 2em">&lt;uid&gt;1&lt;/uid&gt; </div>
<div style="text-indent: 2em">&lt;uid&gt;2&lt;/uid&gt; </div>
<div style="text-indent: 2em">&lt;uid&gt;3&lt;/uid&gt; </div>
<div style="text-indent: 2em">&lt;/friendsgetresponse&gt; </div>
<div style="text-indent: 2em">&lt;/document&gt; </div>
<div style="text-indent: 2em"><clk>你也许想封装一些提取<nobr oncontextmenu="return false;" onmousemove=kwM(3); id="key3" onmouseover="kwE(event,3, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,3);" onmouseout="kwL(event, this);" target="_blank">信息</nobr>的方法，例如调用friends_get()，试试这个</clk></div>
<div style="text-indent: 2em">Document d = client . friends_get () ; </div>
<div style="text-indent: 2em">NodeList userIDNodes = d . getElementsByTagName ( " uid " ) ; </div>
<div style="text-indent: 2em">int fcount = ids . getLength () ; </div>
<div style="text-indent: 2em">List &lt; Integer &gt; friends = new ArrayList &lt; Integer &gt; () ; </div>
<div style="text-indent: 2em">for ( int i = 0 ; i &lt; fcount ; i ++ ) </div>
<div style="text-indent: 2em">{ Node node = userIDNodes . item ( i ) ; </div>
<div style="text-indent: 2em">String idText = node . getTextContent () ; </div>
<div style="text-indent: 2em">Integer id = Integer . valueOf ( idText ) ; </div>
<div style="text-indent: 2em">friends . add ( id ) ; }</div>
<div style="text-indent: 2em">这样friends的列表里就填充好了用户的id。</div>
<div style="text-indent: 2em">5.servlet返回局部页面</div>
<div style="text-indent: 2em"><clk>当你<nobr oncontextmenu="return false;" onmousemove=kwM(8); id="key7" onmouseover="kwE(event,8, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,8);" onmouseout="kwL(event, this);" target="_blank">生产</nobr>在facebook中的页面时，比如这样的一个地址</clk><a href="http://apps.facebook.com/yourappname/yourpagename" target="_blank"><font color="#1f3a87">http://apps.facebook.com/yourappname/yourpagename</font></a>，你必须返回的一个HTML或FBML标记的页面片段，而不是一个完全的HTML页面。</div>
<div style="text-indent: 2em"><clk>6.<nobr oncontextmenu="return false;" onmousemove=kwM(4); id="key4" onmouseover="kwE(event,4, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,4);" onmouseout="kwL(event, this);" target="_blank">学习</nobr>FBML 。 </clk></div>
<div style="text-indent: 2em">FBML这是一套特有的facebook标签。试用标签可以让你很方便的完成很多功能（比如显示用户的名称和图片）。</div>
<div style="text-indent: 2em">7.用户邀请好友</div>
<div style="text-indent: 2em"><clk>你想完成病毒式<nobr oncontextmenu="return false;" onmousemove=kwM(7); id="key6" onmouseover="kwE(event,7, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,7);" onmouseout="kwL(event, this);" target="_blank">推广</nobr>的邀请好友？facebook最近修改了他的api（2007.11）。新版本主要改进了一个特殊的form，fb：form。具体的说明在这里：</clk><a href="http://wiki.developers.facebook.com/index.php/Fb:request-form" target="_blank"><font color="#1f3a87">http://wiki.developers.facebook.com/index.php/Fb:request-form</font></a>。</div>
<div style="text-indent: 2em">原来完成这功能的方法FacebookRestClient.notifications_sendRequest()已经不再使用了，如果你不慎调用将会得到一个异常。</div>
<div style="text-indent: 2em">8.用户档案信息显示页面</div>
<div style="text-indent: 2em">要想将一些信息放入用户的档案信息页面，使用FacebookRestClient.profile_setFBML()。这个方法复写了你在应用里设定的默认信息页面。当你设定了用户的个人档案的FBML页面，这些页面被流量时，facebook会缓存这些页面信息而不会即时更新。这样就使得用户信息的动态更新会麻烦一些。当一个事件触发用户信息改变时，你需要重新调用profile_setFBML()更新这些信息。幸运的时既然你已经有一个登陆的客户端可以做任何事情，所以这个客户端也可以任意设置你的用户资料的数据项。</div>
<div style="text-indent: 2em">好了，就这些．我还是一个facebookapi的初学者，如果你是专家，请留言斧正。</div>
<div style="text-indent: 2em">祝福你们在构建web2.0的路上一路顺风</div></div>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1016.html</link>
			<title>現 cpu排行</title>
			<author>网络收集</author>
			<category>精彩点播</category>
			<pubDate>2008-01-21 13:47:10</pubDate>
			<guid>http://www.cuku.net/show.php/1016.html</guid>
		<description><![CDATA[<TABLE cellSpacing=0 cellPadding=0 width="94%" border=0>
<TBODY>
<TR>
<TD height=10></TD></TR>
<TR>
<TD class=a_hei14 style="LINE-HEIGHT: 25px" align=left colSpan=2>
<P>别人评出来的。挺真实的，就是从单纯的性能上面来说，我说的性能是综合性能</P><BR>
<P><SPAN class=a_hei14i>AMD. 3600+ <BR>AMD. BE-2300 <BR>Intel. E2140 <BR>AMD. 3600+(90) <BR>AMD. 3800+(90) <BR>AMD. 4000+ <BR>AMD. BE-2350 <BR>Intel . E2160 <BR>Intel. E4300 <BR>AMD. 4200+ <BR>AMD. 4200+(90) <BR>AMD. 4400+ <BR>Intel. E2180 <BR>Intel. E6300 <BR>AMD. 4400+(90) <BR>Intel. E6320 <BR>Intel. E4400 <BR>AMD. 4600+(90) <BR>AMD. 4800+ <BR>Intel.E2200 <BR>Intel. E4500 <BR>AMD. 5000+ <BR>AMD. 5000+(黑盒) <BR>Intel. E6400 <BR>AMD. 5200+ <BR>Intel. E6420 <BR>AMD. 5400+(90) <BR>AMD. 5600+(90) <BR>Intel. E6550 <BR>Intel. E6600 <BR>AMD. FX-62(90) <BR>AMD. 6000+(90) <BR>Intel. E6700 <BR>AMD. 6400+(90) <BR>Intel. E6750 <BR>Intel. E6800 <BR>Intel. E6850<BR></SPAN></P></TD></TR></TBODY></TABLE>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1015.html</link>
			<title>本站推出的电视台</title>
			<author>cuku</author>
			<category>精彩点播</category>
			<pubDate></pubDate>
			<guid>http://www.cuku.net/show.php/1015.html</guid>
		<description><![CDATA[<P><A href="http://www.cuku.net/tv/index.php?id=1">cctv5在线直播_21cn</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=2">cctv5_sports_cor</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=3">cctv5_p2p_cat</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=6">广东体育</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=8">cctv5-无插件-1</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=9">cctv5-无插件-2</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=10">cctv1-无插件-1</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=11">河北卫视-无插件-2</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=12">山东体育-无插件-1</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=13">Nba播放在线直播_pxp</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=14">cctv5在线直播_最稳定的</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=15">凤凰卫视</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=16">BTV-6（北京体育频道)</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=18">理财频道</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=19">sohu体育</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=20">华娱卫视</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=21">东方卫视</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=22">cctv5在线直播_TvantsX</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=23">百家讲坛3</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=24">我猜</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=25">百家讲坛2</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=26">百家讲坛</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=27">康熙来了</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=28">快乐男声</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=29">情书全集</A> <BR>&nbsp;<A href="http://www.cuku.net/tv/index.php?id=30">新情书</A> </P>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1014.html</link>
			<title>mysql模式匹配</title>
			<author>网络收集</author>
			<category>Mysql</category>
			<pubDate>2008-01-04 14:14:37</pubDate>
			<guid>http://www.cuku.net/show.php/1014.html</guid>
		<description><![CDATA[&nbsp;模式匹配&nbsp; <BR>MySQL提供标准的SQL模式匹配，以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式。&nbsp; <BR><BR>SQL模式匹配允许你使用“_”匹配任何单个字符，而“%”匹配任意数目字符(包括零字符)。在&nbsp;MySQL中，SQL的模式默认是忽略大小写的。下面给出一些例子。注意使用SQL模式时，不能使用=或!=；而应使用LIKE或NOT&nbsp;LIKE比较操作符。&nbsp; <BR><BR>要想找出以“b”开头的名字：&nbsp; <BR><BR>mysql&gt;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;pet&nbsp;WHERE&nbsp;name&nbsp;LIKE&nbsp;’b%’;&nbsp; <BR>+--------+--------+---------+------+------------+------------+&nbsp; <BR>|&nbsp;name&nbsp;&nbsp;&nbsp;|&nbsp;owner&nbsp;&nbsp;|&nbsp;species&nbsp;|&nbsp;sex&nbsp;&nbsp;|&nbsp;birth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;death&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp; <BR>+--------+--------+---------+------+------------+------------+&nbsp; <BR>|&nbsp;Buffy&nbsp;&nbsp;|&nbsp;Harold&nbsp;|&nbsp;dog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1989-05-13&nbsp;|&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp; <BR>|&nbsp;Bowser&nbsp;|&nbsp;Diane&nbsp;&nbsp;|&nbsp;dog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1989-08-31&nbsp;|&nbsp;1995-07-29&nbsp;|&nbsp; <BR>+--------+--------+---------+------+------------+------------+&nbsp; <BR>要想找出以“fy”结尾的名字：&nbsp; <BR><BR>mysql&gt;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;pet&nbsp;WHERE&nbsp;name&nbsp;LIKE&nbsp;’%fy’;&nbsp; <BR>+--------+--------+---------+------+------------+-------+&nbsp; <BR>|&nbsp;name&nbsp;&nbsp;&nbsp;|&nbsp;owner&nbsp;&nbsp;|&nbsp;species&nbsp;|&nbsp;sex&nbsp;&nbsp;|&nbsp;birth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;death&nbsp;|&nbsp; <BR>+--------+--------+---------+------+------------+-------+&nbsp; <BR>|&nbsp;Fluffy&nbsp;|&nbsp;Harold&nbsp;|&nbsp;cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1993-02-04&nbsp;|&nbsp;NULL&nbsp;&nbsp;|&nbsp; <BR>|&nbsp;Buffy&nbsp;&nbsp;|&nbsp;Harold&nbsp;|&nbsp;dog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1989-05-13&nbsp;|&nbsp;NULL&nbsp;&nbsp;|&nbsp; <BR>+--------+--------+---------+------+------------+-------+&nbsp; <BR>要想找出包含“w”的名字：&nbsp; <BR><BR>mysql&gt;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;pet&nbsp;WHERE&nbsp;name&nbsp;LIKE&nbsp;’%w%’;&nbsp; <BR>+----------+-------+---------+------+------------+------------+&nbsp; <BR>|&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;owner&nbsp;|&nbsp;species&nbsp;|&nbsp;sex&nbsp;&nbsp;|&nbsp;birth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;death&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp; <BR>+----------+-------+---------+------+------------+------------+&nbsp; <BR>|&nbsp;Claws&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Gwen&nbsp;&nbsp;|&nbsp;cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1994-03-17&nbsp;|&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp; <BR>|&nbsp;Bowser&nbsp;&nbsp;&nbsp;|&nbsp;Diane&nbsp;|&nbsp;dog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1989-08-31&nbsp;|&nbsp;1995-07-29&nbsp;|&nbsp; <BR>|&nbsp;Whistler&nbsp;|&nbsp;Gwen&nbsp;&nbsp;|&nbsp;bird&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;NULL&nbsp;|&nbsp;1997-12-09&nbsp;|&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp; <BR>+----------+-------+---------+------+------------+------------+&nbsp; <BR>要想找出正好包含5个字符的名字，使用“_”模式字符：&nbsp; <BR><BR>mysql&gt;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;pet&nbsp;WHERE&nbsp;name&nbsp;LIKE&nbsp;’_____’;&nbsp; <BR>+-------+--------+---------+------+------------+-------+&nbsp; <BR>|&nbsp;name&nbsp;&nbsp;|&nbsp;owner&nbsp;&nbsp;|&nbsp;species&nbsp;|&nbsp;sex&nbsp;&nbsp;|&nbsp;birth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;death&nbsp;|&nbsp; <BR>+-------+--------+---------+------+------------+-------+&nbsp; <BR>|&nbsp;Claws&nbsp;|&nbsp;Gwen&nbsp;&nbsp;&nbsp;|&nbsp;cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1994-03-17&nbsp;|&nbsp;NULL&nbsp;&nbsp;|&nbsp; <BR>|&nbsp;Buffy&nbsp;|&nbsp;Harold&nbsp;|&nbsp;dog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1989-05-13&nbsp;|&nbsp;NULL&nbsp;&nbsp;|&nbsp; <BR>+-------+--------+---------+------+------------+-------+&nbsp; <BR>由MySQL提供的模式匹配的其它类型是使用扩展正则表达式。当你对这类模式进行匹配测试时，使用REGEXP和NOT&nbsp;REGEXP操作符(或RLIKE和NOT&nbsp;RLIKE，它们是同义词)。&nbsp;&nbsp; <BR><BR>扩展正则表达式的一些字符是：&nbsp;&nbsp; <BR><BR>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;‘.’匹配任何单个的字符。&nbsp; <BR><BR>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字符类“[...]”匹配在方括号内的任何字符。例如，“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围，使用一个“-”。“[a-z]”匹配任何字母，而“[0-9]”匹配任何数字。&nbsp; <BR><BR>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;“&nbsp;*&nbsp;”匹配零个或多个在它前面的字符。例如，“x*”匹配任何数量的“x”字符，“[0-9]*”匹配任何数量的数字，而“.*”匹配任何数量的任何字符。&nbsp; <BR><BR>如果REGEXP模式与被测试值的任何地方匹配，模式就匹配(这不同于LIKE模式匹配，只有与整个值匹配，模式才匹配)。&nbsp;&nbsp; <BR>为了定位一个模式以便它必须匹配被测试值的开始或结尾，在模式开始处使用“^”或在模式的结尾用“$”。&nbsp;&nbsp; <BR>为了说明扩展正则表达式如何工作，下面使用REGEXP重写上面所示的LIKE查询：&nbsp; <BR><BR>为了找出以“b”开头的名字，使用“^”匹配名字的开始：&nbsp; <BR><BR>mysql&gt;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;pet&nbsp;WHERE&nbsp;name&nbsp;REGEXP&nbsp;’^b’;&nbsp; <BR>+--------+--------+---------+------+------------+------------+&nbsp; <BR>|&nbsp;name&nbsp;&nbsp;&nbsp;|&nbsp;owner&nbsp;&nbsp;|&nbsp;species&nbsp;|&nbsp;sex&nbsp;&nbsp;|&nbsp;birth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;death&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp; <BR>+--------+--------+---------+------+------------+------------+&nbsp; <BR>|&nbsp;Buffy&nbsp;&nbsp;|&nbsp;Harold&nbsp;|&nbsp;dog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1989-05-13&nbsp;|&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp; <BR>|&nbsp;Bowser&nbsp;|&nbsp;Diane&nbsp;&nbsp;|&nbsp;dog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1989-08-31&nbsp;|&nbsp;1995-07-29&nbsp;|&nbsp; <BR>+--------+--------+---------+------+------------+------------+&nbsp; <BR>如果你想强制使REGEXP比较区分大小写，使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘b’。&nbsp; <BR><BR>mysql&gt;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;pet&nbsp;WHERE&nbsp;name&nbsp;REGEXP&nbsp;BINARY&nbsp;’^b’;&nbsp; <BR>为了找出以“fy”结尾的名字，使用“$”匹配名字的结尾：&nbsp; <BR><BR>mysql&gt;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;pet&nbsp;WHERE&nbsp;name&nbsp;REGEXP&nbsp;’fy$’;&nbsp; <BR>+--------+--------+---------+------+------------+-------+&nbsp; <BR>|&nbsp;name&nbsp;&nbsp;&nbsp;|&nbsp;owner&nbsp;&nbsp;|&nbsp;species&nbsp;|&nbsp;sex&nbsp;&nbsp;|&nbsp;birth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;death&nbsp;|&nbsp; <BR>+--------+--------+---------+------+------------+-------+&nbsp; <BR>|&nbsp;Fluffy&nbsp;|&nbsp;Harold&nbsp;|&nbsp;cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1993-02-04&nbsp;|&nbsp;NULL&nbsp;&nbsp;|&nbsp; <BR>|&nbsp;Buffy&nbsp;&nbsp;|&nbsp;Harold&nbsp;|&nbsp;dog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1989-05-13&nbsp;|&nbsp;NULL&nbsp;&nbsp;|&nbsp; <BR>+--------+--------+---------+------+------------+-------+&nbsp; <BR>为了找出包含一个“w”的名字，使用以下查询：&nbsp; <BR><BR>mysql&gt;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;pet&nbsp;WHERE&nbsp;name&nbsp;REGEXP&nbsp;’w’;&nbsp; <BR>+----------+-------+---------+------+------------+------------+&nbsp; <BR>|&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;owner&nbsp;|&nbsp;species&nbsp;|&nbsp;sex&nbsp;&nbsp;|&nbsp;birth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;death&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp; <BR>+----------+-------+---------+------+------------+------------+&nbsp; <BR>|&nbsp;Claws&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Gwen&nbsp;&nbsp;|&nbsp;cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1994-03-17&nbsp;|&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp; <BR>|&nbsp;Bowser&nbsp;&nbsp;&nbsp;|&nbsp;Diane&nbsp;|&nbsp;dog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1989-08-31&nbsp;|&nbsp;1995-07-29&nbsp;|&nbsp; <BR>|&nbsp;Whistler&nbsp;|&nbsp;Gwen&nbsp;&nbsp;|&nbsp;bird&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;NULL&nbsp;|&nbsp;1997-12-09&nbsp;|&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp; <BR>+----------+-------+---------+------+------------+------------+&nbsp; <BR>既然如果一个正则表达式出现在值的任何地方，其模式匹配了，就不必在先前的查询中在模式的两侧放置一个通配符以使得它匹配整个值，就像你使用了一个SQL模式那样。&nbsp; <BR><BR>为了找出包含正好5个字符的名字，使用“^”和“$”匹配名字的开始和结尾，和5个“.”实例在两者之间：&nbsp; <BR><BR>mysql&gt;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;pet&nbsp;WHERE&nbsp;name&nbsp;REGEXP&nbsp;’^.....$’;&nbsp; <BR>+-------+--------+---------+------+------------+-------+&nbsp; <BR>|&nbsp;name&nbsp;&nbsp;|&nbsp;owner&nbsp;&nbsp;|&nbsp;species&nbsp;|&nbsp;sex&nbsp;&nbsp;|&nbsp;birth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;death&nbsp;|&nbsp; <BR>+-------+--------+---------+------+------------+-------+&nbsp; <BR>|&nbsp;Claws&nbsp;|&nbsp;Gwen&nbsp;&nbsp;&nbsp;|&nbsp;cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1994-03-17&nbsp;|&nbsp;NULL&nbsp;&nbsp;|&nbsp; <BR>|&nbsp;Buffy&nbsp;|&nbsp;Harold&nbsp;|&nbsp;dog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1989-05-13&nbsp;|&nbsp;NULL&nbsp;&nbsp;|&nbsp; <BR>+-------+--------+---------+------+------------+-------+&nbsp; <BR>你也可以使用“{n}”“重复n次”操作符重写前面的查询：&nbsp; <BR><BR>mysql&gt;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;pet&nbsp;WHERE&nbsp;name&nbsp;REGEXP&nbsp;’^.{5}$’;&nbsp; <BR>+-------+--------+---------+------+------------+-------+&nbsp; <BR>|&nbsp;name&nbsp;&nbsp;|&nbsp;owner&nbsp;&nbsp;|&nbsp;species&nbsp;|&nbsp;sex&nbsp;&nbsp;|&nbsp;birth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;death&nbsp;|&nbsp; <BR>+-------+--------+---------+------+------------+-------+&nbsp; <BR>|&nbsp;Claws&nbsp;|&nbsp;Gwen&nbsp;&nbsp;&nbsp;|&nbsp;cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1994-03-17&nbsp;|&nbsp;NULL&nbsp;&nbsp;|&nbsp; <BR>|&nbsp;Buffy&nbsp;|&nbsp;Harold&nbsp;|&nbsp;dog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1989-05-13&nbsp;|&nbsp;NULL&nbsp;&nbsp;|&nbsp; <BR>+-------+--------+---------+------+------------+-------+&nbsp;]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1013.html</link>
			<title>InnoDB</title>
			<author>佚名</author>
			<category>Mysql</category>
			<pubDate>2008-01-03 16:35:45</pubDate>
			<guid>http://www.cuku.net/show.php/1013.html</guid>
		<description><![CDATA[<P><STRONG>InnoDB概述</STRONG></P>
<P><A name=id2935155></A><A name=id2935162></A><A name=id2935172></A><A name=id2935179></A><SPAN>InnoDB给MySQL提供了具有提交，回滚和崩溃恢复能力的事务安全（ACID兼容）存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要，因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中，你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来，甚至在同一个查询中也可以混合。</SPAN></P>
<P><SPAN>InnoDB是为处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。 <?XML:NAMESPACE PREFIX = O /><O:P></O:P></SPAN></P>
<P><SPAN>InnoDB存储引擎被完全与MySQL服务器整合，InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB存储它的表＆索引在一个表空间中，表空间可以包含数个文件（或原始磁盘分区）。这与MyISAM表不同，比如在MyISAM表中每个表被存在分离的文件中。InnoDB 表可以是任何尺寸，即使在文件尺寸被限制为2GB的操作系统上。 <O:P></O:P></SPAN></P>
<P><SPAN>InnoDB默认地被包含在MySQL二进制</SPAN><SPAN>分发</SPAN><SPAN>中。Windows Essentials installer使InnoDB成为Windows上MySQL的默认表。 <O:P></O:P></SPAN></P>
<P><SPAN>InnoDB被用来在众多需要高性能的大型数据库站点上产生。著名的Internet新闻站点Slashdot.org运行在InnoDB上。Mytrix, Inc.在InnoDB上存储超过1TB的数据，还有一些其它站点在InnoDB上处理平均每秒800次插入/更新的负荷。</SPAN></P>
<P><SPAN><STRONG>InnoDB配置</STRONG></SPAN></P><SPAN>
<P><SPAN>InnoDB存储引擎是默认地被允许的。如果你不想用InnoDB表，你可以添加skip-innodb选项到MySQL选项文件。</SPAN></P>
<P><SPAN>被InnoDB存储引擎管理的两个重要的基于磁盘的资源是InnoDB表空间数据文件和它的日志文件。</SPAN></P>
<P><SPAN>如果你指定无InnoDB配置选项，MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件，以及两个名为ib_logfile0和ib_logfile<?XML:NAMESPACE PREFIX = ST1 /><ST1:CHMETCNV unitname="in" sourcevalue="1" hasspace="True" negative="False" numbertype="1" tcsc="0" w:st="on">1的5MB大小的日志文件。</ST1:CHMETCNV></SPAN></P>
<P><STRONG><SPAN>注释</SPAN></STRONG><SPAN>：InnoDB给MySQL提供具有提交，回滚和崩溃恢复能力的事务安全（ACID兼容）存储引擎。如果拟运行的操作系统和硬件不能如广告说的那样运行，InnoDB<STRONG><SPAN>就不能实现如上能力</SPAN></STRONG>。许多操作系统或磁盘子系统可能为改善性能而延迟或记录写操作。在一些操作系统上，就是系统调用（fsync()） 也要等着，直到所有未写入已被刷新文件的数据在被刷新到稳定内存之前可以确实返回了。因为这个，操作系统崩溃或掉电可能损坏当前提交的数据，或者在最坏的 情况，因为写操作已被记录了，甚至破坏了数据库。如果数据完整性对你很重要，你应该在用任何程序于生产中之前做一些“<SPAN class=quote>pull-the-plug</SPAN>”测试。Mac OS X 10.3 及以后版本，InnoDB使用一个特别的fcntl()文件刷新方法。在Linux下，建议<STRONG><SPAN>禁止回写缓存。</SPAN></STRONG></SPAN></P>
<P><SPAN>在ATAPI硬盘上，一个类似hdparm -W0 /dev/<EM>hda</EM>命令可能起作用。<STRONG><SPAN>小心某些驱动器或者磁盘控制器可能不能禁止回写缓存。</SPAN></STRONG> </SPAN></P>
<P><SPAN>注释：要获得好的性能，你应该如下面例子所讨论那样，明确提供InnoDB参数。自然地，你应该编辑设置来适合你的硬件和要求。 </SPAN></P>
<P><SPAN>要建立InnoDB表空间文件，在my.cnf选项文件里的[mysqld]节里使用innodb_data_file_path选项。在Windows上，你可以替代地使用my.ini文件。innodb_data_file_path的值应该为一个或多个数据文件规格的列表。如果你命名一个以上的数据文件，用 分号(‘;’)分隔它们： </SPAN></P>
<P><SPAN>innodb_data_file_path=datafile_spec1[;datafile_spec2]...<BR>例如：把明确创建的具有相同特征的表空间作为默认设置的设置操作如下： </SPAN></P>
<P><SPAN>[mysqld]<BR>innodb_data_file_path=ibdata1:10M:autoextend<BR>这个设置配置一个可扩展大小的尺寸为10MB的单独文件，名为ibdata1。没有给出文件的位置，所以默认的是在MySQL的数据目录内。 </SPAN></P>
<P><SPAN>尺寸大小用M或者G后缀来指定说明单位是MB或者GB。</SPAN></P>
<P><SPAN>一个表空间，它在数据目录里包含一个名为ibdata1的固定尺寸50MB的数据文件和一个名为ibdata2大小为50MB的自动扩展文件，其可以像这样被配置： </SPAN></P>
<P><SPAN>[mysqld]<BR>innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend<BR>一个指定数据文件的完全后缀包括文件名，它的尺寸和数个可选属性：</SPAN></P>
<P><SPAN>file_name:file_size[:autoextend[:max:max_file_size]]<BR>autoextend属性和后面跟着的属性只可被用来对innodb_data_file_path行里最后一个数据文件。 </SPAN></P>
<P><SPAN>如果你对最后的数据文件指定autoextend选项。如果数据文件耗尽了表空间中的自由空间，InnoDB就扩展数据文件。扩展的幅度是每次8MB。</SPAN></P><SPAN><O:P>
<P><SPAN>InnoDB并不感知最大文件尺寸，所以要小心文件系统，在那上面最大的文件尺寸是2GB。要为一个自动扩展数据文件指定最大尺寸，请使用max属性。下列配置允许ibdata1涨到极限的500MB：</SPAN></P><PRE><SPAN>[mysqld]<O:P></O:P></SPAN></PRE><PRE><SPAN>innodb_data_file_path=ibdata1:<ST1:CHMETCNV unitname="m" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">10M</ST1:CHMETCNV>:autoextend:max:<ST1:CHMETCNV unitname="m" sourcevalue="500" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">500M</ST1:CHMETCNV><O:P></O:P></SPAN></PRE>
<P><SPAN>InnoDB</SPAN><SPAN>默认地在MySQL数据目录创建表空间文件。要明确指定一个位置，请使用innodb_data_home_dir选项。比如，要使用两个名为ibdata1和ibdata2的文件，但是要把他们创建到/ibdata，像如下一样配置InnoDB：</SPAN></P><PRE><SPAN>[mysqld]<O:P></O:P></SPAN></PRE><PRE><SPAN>innodb_data_home_dir = /ibdata<O:P></O:P></SPAN></PRE><PRE><SPAN>innodb_data_file_path=ibdata1:<ST1:CHMETCNV unitname="m" sourcevalue="50" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">50M</ST1:CHMETCNV>;ibdata2:<ST1:CHMETCNV unitname="m" sourcevalue="50" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">50M</ST1:CHMETCNV>:autoextend<O:P></O:P></SPAN></PRE>
<P><STRONG><SPAN>注释</SPAN></STRONG><SPAN>：InnoDB不创建目录，所以在启动服务器之前请确认/ibdata目录的确存在。这对你配置的任何日志文件目录来说也是真实的。使用Unix或DOS的mkdir命令来创建任何必需的目录。</SPAN></P>
<P><SPAN>通过把innodb_data_home_dir的值原原本本地部署到数据文件名，并在需要的地方添加斜杠或反斜杠，InnoDB为每个数据文件形成目录路径。如果innodb_data_home_dir选项根本没有在my.cnf中提到，默认值是“<SPAN class=quote>dot</SPAN>”目录 ./，这意思是MySQL数据目录。 </SPAN></P>
<P><SPAN><STRONG>处理InnoDB初始化问题</STRONG></P>
<P><O:P>如果InnoDB在一个文件操作中打印一个操作系统错误，通常问题是如下中的一个： </O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你没有创建一个InnoDB数据文件目录或InnoDB日志目录。</O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysqld没有访问这些目录的权限以创建文件。</O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysqld不能恰当地读取my.cnf或my.ini选项文件，因此不能看到你指定的选项。 </O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 磁盘已满，或者超出磁盘配额。 </O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你已经创建一个子目录，它的名字与你指定的数据文件相同。 </O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在innodb_data_home_dir或innodb_data_file_path有一个语法错误。</O:P></P>
<P><O:P>当InnoDB试着初始化它的表空间或日志文件之时，如果出错了，你应该删除InnoDB创建的所有文件。这意味着是所有ibdata文件和所有ib_logfiles文件。万一你创建了一些InnoDB表，为这些表也从MySQL数据库目录删除相应的.frm文件(如果你使用多重表空间的话，也删除任何.ibd文件）。然后你可以试着再次创建InnoDB数据库。最好是从命令提示符启动MySQL服务器，以便你可以查看发生了什么。 </O:P></P><STRONG>AUTO_INCREMENT列在InnoDB里如何工作</STRONG> 
<P><O:P>如果你为一个表指定AUTO_INCREMENT列，在数据词典里的InnoDB表句柄包含一个名为自动增长计数器的计数器，它被用在为该列赋新值。自动增长计数器仅被存储在主内存中，而不是存在磁盘上。 </O:P></P>
<P><O:P>InnoDB使用下列算法来为包含一个名为ai_col的AUTO_INCREMENT列的表T初始化自动增长计数器：服务器启动之后，当一个用户对表T做插入之时，InnoDB执行等价如下语句的动作：</O:P></P>
<P><O:P>SELECT MAX(ai_col) FROM T FOR UPDATE;<BR>语句取回的值逐次加一，并被赋给列和自动增长计数器。如果表是空的，值1被赋予该列。如果自动增长计数器没有被初始化，而且用户调用为表T显示输出的SHOW TABLE STATUS语句，则计数器被初始化（但不是增加计数）并被存储以供随后的插入使用。注意，在这个初始化中，我们对表做一个正常的独占读锁定，这个锁持续到事务的结束。</O:P></P>
<P><O:P>InnoDB对为新创建表的初始化自动增长计数器允许同样的过程。 </O:P></P>
<P><O:P>注意，如果用户在INSERT中为AUTO_INCREMENT列指定NULL或者0，InnoDB处理行，就仿佛值还没有被指定，且为它生成一个新值。 </O:P></P>
<P><O:P>自动增长计数器被初始化之后，如果用户插入一个明确指定该列值的行，而且该值大于当前计数器值，则计数器被设置为指定列值。如果没有明确指定一个值，InnoDB给计数器增加一，并且赋新值给该列。 </O:P></P>
<P><O:P>当访问自动增长计数器之时，InnoDB使用专用的表级的AUTO-INC锁定，该锁持续到当前SQL语句的结束而不是到业务的结束。引入了专用锁释放策略，来为对一个含AUTO_INCREMENT列的表的插入改善部署。两个事务不能同时对同一表有AUTO-INC锁定。 </O:P></P>
<P><O:P>注意，如果你回滚从计数器获得数的事务，你可能会在赋给AUTO_INCREMENT列的值的序列中发现间隙。 </O:P></P>
<P><O:P>如果用户给列赋一个赋值，或者，如果值大过可被以指定整数格式存储的最大整数，自动增长机制的行为不被定义。 </O:P></P>
<P><O:P>在CREATE TABLE和ALTER TABLE语句中，InnoDB支持AUTO_INCREMENT = n 表选项来设置计数器初始值或变更当前计数器值。因在本节早先讨论的原因，这个选项的影响在服务器重启后就无效了。 </O:P></P>
<P><O:P><STRONG>外键约束</STRONG></O:P></P>
<P><O:P>InnoDB也支持外键约束。InnoDB中对外键约束定义的语法看起来如下：</O:P></P>
<P><O:P>[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)<BR>&nbsp;&nbsp;&nbsp; REFERENCES tbl_name (index_col_name, ...)<BR>&nbsp;&nbsp;&nbsp; [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]<BR>&nbsp;&nbsp;&nbsp; [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]<BR>外键定义服从下列情况： </O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所有tables必须是InnoDB型，它们不能是临时表。 </O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在引用表中，必须有一个索引，外键列以同样的顺序被列在其中作为第一列。这样一个索引如果不存在，它必须在引用表里被自动创建。 </O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在引用表中，必须有一个索引，被引用的列以同样的顺序被列在其中作为第一列。 </O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不支持对外键列的索引前缀。这样的后果之一是BLOB和TEXT列不被包括在一个外键中，这是因为对这些列的索引必须总是包含一个前缀长度。 </O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果CONSTRAINTsymbol被给出，它在数据库里必须是唯一的。如果它没有被给出，InnoDB自动创建这个名字。 </O:P></P>
<P><O:P>InnoDB拒绝任何试着在子表创建一个外键值而不匹配在父表中的候选键值的INSERT或UPDATE操作。一个父表有一些匹配的行的子表，InnoDB对任何试图更新或删除该父表中候选键值的UPDATE或DELETE操作有所动作，这个动作取决于用FOREIGN KEY子句的ON UPDATE和ON DETETE子句指定的referential action。当用户试图从一个父表删除或更新一行之时，且在子表中有一个或多个匹配的行，InnoDB根据要采取的动作有五个选择：</O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CASCADE: 从父表删除或更新且自动删除或更新子表中匹配的行。ON DELETE CASCADE和ON UPDATE CASCADE都可用。在两个表之间，你不应定义若干在父表或子表中的同一列采取动作的ON UPDATE CASCADE子句。 </O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET NULL: 从父表删除或更新行，并设置子表中的外键列为NULL。如果外键列没有指定NOT NULL限定词，这就是唯一合法的。ON DELETE SET NULL和ON UPDATE SET NULL子句被支持。</O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NO ACTION: 在ANSI SQL-92标准中，NO ACTION意味这不采取动作，就是如果有一个相关的外键值在被参考的表里，删除或更新主要键值的企图不被允许进行（Gruber, 掌握SQL, 2000:181）。 InnoDB拒绝对父表的删除或更新操作。 </O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RESTRICT: 拒绝对父表的删除或更新操作。NO ACTION和RESTRICT都一样，删除ON DELETE或ON UPDATE子句。（一些数据库系统有延期检查，并且NO ACTION是一个延期检查。在MySQL中，外键约束是被立即检查的，所以NO ACTION和RESTRICT是同样的）。 </O:P></P>
<P><O:P>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET DEFAULT: 这个动作被解析程序识别，但InnoDB拒绝包含ON DELETE SET DEFAULT或ON UPDATE SET DEFAULT子句的表定义。 </O:P></P>
<P><O:P>当父表中的候选键被更新的时候，InnoDB支持同样选择。选择CASCADE，在子表中的外键列被设置为父表中候选键的新值。以同样的方式，如果在子表更新的列参考在另一个表中的外键，更新级联。 </O:P></P>
<P><O:P>注意，InnoDB支持外键在一个表内引用，在这些情况下，子表实际上意味这在表内附属的记录。 </O:P></P>
<P><O:P>InnoDB需要对外键和被引用键的索引以便外键检查可以快速进行且不需要一个表扫描。对外键的索引被自动创建。这是相对于一些老版本，在老版本中索引必须明确创建，否则外键约束的创建会失败。 </O:P></P>
<P><O:P>在InnoDB内，外键里和被引用列里相应的列必须有类似的内部数据类型，以便它们不需类型转换就可被比较。整数类型的大小和符号必须相同。字符串类型的长度不需要相同。如果你指定一个SET NULL动作，请确认你没有在子表中宣告该列为为NOT NULL。</O:P></P>
<P><O:P>如果MySQL从CREATE TABLE语句报告一个错误号1005，并且错误信息字符串指向errno 150，这意思是因为一个外键约束被不正确形成，表创建失败。类似地，如果ALTER TABLE失败，且它指向errno 150， 那意味着对已变更的表，外键定义会被不正确的形成。你可以使用SHOW INNODB STATUS来显示一个对服务器上最近的InnoDB外键错误的详细解释。 </O:P></P>
<P><O:P>注释：InnoDB不对那些外键或包含NULL列的被引用键值检查外键约束。 </O:P></P>
<P><O:P>对SQL标准的背离：如果在父表内有数个行，其中有相同的被引用键值，然后InnoDB在外键检查中采取动作，就仿佛其它有相同键值的父行不存在一样。例如，如果你已定义一个RESTRICT类型的约束，并且有一个带数个父行的子行，InnoDB不允许任何对这些父行的删除。 </O:P></P>
<P><O:P>居于对应外键约束的索引内的记录，InnoDB通过深度优先选法施行级联操作。</O:P></P>
<P><O:P>对SQL标准的背离： 如果ON UPDATE CASCADE或ON UPDATE SET NULL递归更新相同的表，之前在级联过程中该表一被更新过，它就象RESTRICT一样动作。这意味着你不能使用自引用ON UPDATE CASCADE或者ON UPDATE SET NULL操作。这将阻止级联更新导致的无限循环。另一方面，一个自引用的ON DELETE SET NULL是有可能的，就像一个自引用ON DELETE CASCADE一样。级联操作不可以被嵌套超过15层深。 </O:P></P>
<P><O:P>对SQL标准的背离： 类似一般的MySQL，在一个插入，删除或更新许多行的SQL语句内，InnoDB逐行检查UNIQUE和FOREIGN KEY约束。按照SQL的标准，默认的行为应被延迟检查，即约束仅在整个SQL语句被处理之后才被检查。直到InnoDB实现延迟的约束检查之前，一些事情是不可能的，比如删除一个通过外键参考到自身的记录。 </O:P></P>
<P><O:P>注释：当前，触发器不被级联外键的动作激活。</O:P></P>
<P><O:P>一个通过单列外键联系起父表和子表的简单例子如下： </O:P></P>
<P><O:P>CREATE TABLE parent(id INT NOT NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PRIMARY KEY (id)<BR>) TYPE=INNODB;<BR>CREATE TABLE child(id INT, parent_id INT,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INDEX par_ind (parent_id),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FOREIGN KEY (parent_id) REFERENCES parent(id)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON DELETE CASCADE<BR>) TYPE=INNODB;<BR>如下是一个更复杂的例子，其中一个product_order表对其它两个表有外键。一个外键引用一个product表中的双列索引。另一个引用在customer表中的单行索引： </O:P></P>
<P><O:P>CREATE TABLE product (category INT NOT NULL, id INT NOT NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; price DECIMAL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PRIMARY KEY(category, id)) TYPE=INNODB;<BR>CREATE TABLE customer (id INT NOT NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PRIMARY KEY (id)) TYPE=INNODB;<BR>CREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; product_category INT NOT NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; product_id INT NOT NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; customer_id INT NOT NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PRIMARY KEY(no),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INDEX (product_category, product_id),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FOREIGN KEY (product_category, product_id)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; REFERENCES product(category, id)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON UPDATE CASCADE ON DELETE RESTRICT,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INDEX (customer_id),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FOREIGN KEY (customer_id)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; REFERENCES customer(id)) TYPE=INNODB;<BR>InnoDB允许你用ALTER TABLE往一个表中添加一个新的外键约束： </O:P></P>
<P><O:P>ALTER TABLE yourtablename<BR>&nbsp;&nbsp;&nbsp; ADD [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)<BR>&nbsp;&nbsp;&nbsp; REFERENCES tbl_name (index_col_name, ...)<BR>&nbsp;&nbsp;&nbsp; [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]<BR>&nbsp;&nbsp;&nbsp; [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]<BR>记住先创建需要的索引。你也可以用ALTER TABLE往一个表添加一个自引用外键约束。 </O:P></P>
<P><O:P>InnoDB也支持使用ALTER TABLE来移除外键： </O:P></P>
<P><O:P>ALTER TABLE yourtablename DROP FOREIGN KEY fk_symbol;<BR>当年创建一个外键之时，如果FOREIGN KEY子句包括一个CONSTRAINT名字，你可以引用那个名字来移除外键。另外，当外键被创建之时，fk_symbol值被InnoDB内部保证。当你想要移除一个外键之时，要找出标记，请使用SHOW CREATE TABLE语句。例子如下： </O:P></P>
<P><O:P>mysql&gt; SHOW CREATE TABLE ibtest11c\G<BR>*************************** 1. row ***************************<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Table: ibtest11c<BR>Create Table: CREATE TABLE `ibtest11c` (<BR>&nbsp; `A` int(11) NOT NULL auto_increment,<BR>&nbsp; `D` int(11) NOT NULL default '0',<BR>&nbsp; `B` varchar(200) NOT NULL default '',<BR>&nbsp; `C` varchar(175) default NULL,<BR>&nbsp; PRIMARY KEY&nbsp; (`A`,`D`,`B`),<BR>&nbsp; KEY `B` (`B`,`C`),<BR>&nbsp; KEY `C` (`C`),<BR>&nbsp; CONSTRAINT `0_38775` FOREIGN KEY (`A`, `D`)<BR>REFERENCES `ibtest11a` (`A`, `D`)<BR>ON DELETE CASCADE ON UPDATE CASCADE,<BR>&nbsp; CONSTRAINT `0_38776` FOREIGN KEY (`B`, `C`)<BR>REFERENCES `ibtest11a` (`B`, `C`)<BR>ON DELETE CASCADE ON UPDATE CASCADE<BR>) ENGINE=INNODB CHARSET=latin1<BR>1 row in set (0.01 sec)<BR>&nbsp;<BR>mysql&gt; ALTER TABLE ibtest11c DROP FOREIGN KEY 0_38775;<BR>InnoDB解析程序允许你在FOREIGN KEY ... REFERENCES ...子句中用`（backticks)把表和列名名字围起来。InnoDB解析程序也考虑到lower_case_table_names系统变量的设置。 </O:P></P>
<P><O:P>InnoDB返回一个表的外键定义作为SHOW CREATE TABLE语句输出的一部分： </O:P></P>
<P><O:P>SHOW CREATE TABLE tbl_name;<BR>从这个版本起，mysqldump也将表的正确定义生成到转储文件中，且并不忘记外键。 </O:P></P>
<P><O:P>你可以如下对一个表显示外键约束：</O:P></P>
<P><O:P>SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';<BR>外键约束被列在输出的Comment列。</O:P></P>
<P><O:P>当执行外键检查之时，InnoDB对它照看着的子或父记录设置共享的行级锁。InnoDB立即检查外键约束，检查不对事务提交延迟。 </O:P></P>
<P><O:P>要使得对有外键关系的表重新载入转储文件变得更容易，mysqldump自动在转储输出中包括一个语句设置FOREIGN_KEY_CHECKS为0。这避免在转储被重新装载之时，与不得不被以特别顺序重新装载的表相关的问题。也可以手动设置这个变量： </O:P></P>
<P><O:P>mysql&gt; SET FOREIGN_KEY_CHECKS = 0;<BR>mysql&gt; SOURCE dump_file_name;<BR>mysql&gt; SET FOREIGN_KEY_CHECKS = 1;<BR>如果转储文件包含对外键是不正确顺序的表，这就以任何顺序导入该表。这样也加快导入操作。设置FOREIGN_KEY_CHECKS为0，对于在LOAD DATA和ALTER TABLE操作中忽略外键限制也是非常有用的。 </O:P></P>
<P><O:P>InnoDB不允许你删除一个被FOREIGN KEY表约束引用的表，除非你做设置SET FOREIGN_KEY_CHECKS=0。当你移除一个表的时候，在它的创建语句里定义的约束也被移除。 </O:P></P>
<P><O:P>如果你重新创建一个被移除的表，它必须有一个遵从于也引用它的外键约束的定义。它必须有正确的列名和类型，并且如前所述，它必须对被引用的键有索引。如果这些不被满足，MySQL返回错误号1005 并在错误信息字符串中指向errno 150。 </SPAN></SPAN></SPAN></O:P></O:P></P>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1012.html</link>
			<title>技巧：用 isapi rewrite 实现asp的HTML静态化</title>
			<author>佚名</author>
			<category>精彩点播</category>
			<pubDate>2008-01-03 13:34:23</pubDate>
			<guid>http://www.cuku.net/show.php/1012.html</guid>
		<description><![CDATA[<P>asp网站程序在国内运用很广，但是类似于im286.asp?id=20050307213811这样的url有点不利于搜索引擎的收录，也就是说不符合友好url(urls-friendly)的标准，那么我们用isapi_rewrite打造一个clean url，让蜘蛛欢欢喜喜的来爬你的站吧。 </P>
<P>废话不多说，开工！ 
<P class=Ube257>&nbsp;</P>
<P></P>
<P>1、下载isapi_rewrite.isapi_rewrite分精简(lite)和完全(full)版.精简版不支持对每个虚拟主机站点进行重写，只能进行全局处理。不过对于有服务器的朋友，精简版也就够啦。精简版下载地址:http://www.helicontech.com/download/，就是那lite version (free)啦。 </P>
<P>2、安装.msi的文件，和装一般程序一样装就可以了，俺就装在d:\isapi_rewrite。 
<DIV class=Ube257>&nbsp;</DIV>
<P></P>
<P>3、接下来一步比较重要哦，看仔细喽.打开internet 信息服务，右键，web站点属性，电isapi筛选器选项卡.添加筛选器，名称自己填，路径自己指定isapi_rewrite.dll，然后确定。 
<P class=Ube257>&nbsp;</P>
<P></P>
<P align=center><IMG style="WIDTH: 516px; HEIGHT: 361px" height=361 alt="" src="/admin/edit/UploadFile/200813133320677.jpg" width=548 border=0>&nbsp;<BR>4、来测试一下。新建一个1ting.asp，里面写上&lt;%=request.querystring("inso")%&gt;，效果就是执行的时候1ting.asp?inso=*浏览器显示*。 </P>
<DIV class=Ube257>&nbsp;</DIV>
<P></P>
<P align=center><IMG height=129 alt="" src="/admin/edit/UploadFile/200813133321843.jpg" width=218 border=0> 
<P class=Ube257>&nbsp;</P>
<P></P>
<P><BR>5、这一步很重要哦，开始添加rewrite规则.正则，好头痛，幸亏这个例子比较简单。 
<P class=Ube257>&nbsp;</P>
<P></P>
<P>找到isapi_rewrite目录，把httpd.ini的只读属性去掉，打开编辑.我们要把1ting.asp?inso=im286映射成为1ting-im286.html这样的类型，需要在httpd.ini里加上这么一行:rewriterule /1ting-([0-9，a-z]*).html /1ting.asp\?inso=$1，保存。 <SPAN class=Ube257>中国.站长站</SPAN> </P>
<P align=center><IMG style="WIDTH: 525px; HEIGHT: 154px" height=154 alt="" src="/admin/edit/UploadFile/200813133321476.jpg" width=553 border=0>&nbsp; 
<DIV class=Ube257>&nbsp;</DIV>
<P></P>
<P><BR>6、来来来，到浏览器里查看一下效果吧。输入http://127.0.0.1/1ting.asp?inso=im286和http://127.0.0.1/1ting-im286.html，显示的内容是不是都是im286?这就证明成功啦！ <FONT color=#f5fafe>中.国站长站</FONT> </P>
<P align=center><IMG height=185 alt="" src="/admin/edit/UploadFile/200813133321546.jpg" width=248 border=0> 
<DIV class=Ube257>&nbsp;</DIV>
<P></P>
<P align=center><IMG height=180 alt="" src="/admin/edit/UploadFile/200813133321999.jpg" width=219 border=0> 
<DIV class=Ube257>&nbsp;</DIV>
<P></P>
<P>嘿嘿，1ting-im286.html这样的页面要比1ting.asp?inso=im286容易收入，所以现在还在用动态方式的朋友可以尝试一下这样的静态映射效果. iis rewrite也可以实现这样的功能。 </P>
<P>后话:这个可行性可能不是太强，俺只是从纯技术的角度来讨论，表拍我砖啊，上次的伤还没养好呢。 </P>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1011.html</link>
			<title>MYSQL中的五种数据类型</title>
			<author>cuku.net</author>
			<category>Mysql</category>
			<pubDate></pubDate>
			<guid>http://www.cuku.net/show.php/1011.html</guid>
		<description><![CDATA[<h3>&nbsp;</h3>
<table class=blog-content>
<tbody>
<tr>
<td>
<div>MYSQL中的五种数据类型：字符型，文本型，数值型，逻辑型和日期型<br />字符型<br /><br />VARCHAR VS CHAR<br />VARCHAR型和CHAR型数据的这个差别是细微的，但是非常重要。他们都是用来储存字符串长度小于255的字符。<br /><br />假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时，你取出的数据其长度为十个字符——字符串Bill Gates的长度。 现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中，那么当你取出数据时，所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。<br /><br />当你建立自己的站点时，你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时，你不需要为剪掉你数据中多余的空格而操心。<br /><br />VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时，这种内存和磁盘空间的节省会变得非常重要<br /><br />文本型<br /><br />TEXT<br />使用文本型数据，你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时，应该使用文本型数据。<br /><br />注意文本型数据没有长度，而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空，要么很大。<br /><br />当你从HTML form的多行文本编辑框（TEXTAREA）中收集数据时，你应该把收集的信息存储于文本型字段中。但是，无论何时，只要你能避免使用文本型字段，你就应该不适用它。文本型字段既大且慢，滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。<br /><br />一旦你向文本型字段中输入了任何数据（甚至是空值），就会有2K的空间被自动分配给该数据。除非删除该记录，否则你无法收回这部分存储空间。<br /><br />数值型<br /><br />SQL支持许多种不同的数值型数据。你可以存储整数 INT 、小数 NUMERIC、和钱数 MONEY。<br /><br />INT VS SMALLINT VS TINYINT<br />他们的区别只是字符长度：<br />INT型数据的表数范围是从-2，147，483，647到2，147，483，647的整数<br />SMALLINT 型数据可以存储从-32768到32768的整数<br />TINYINT 型的字段只能存储从０到255的整数,不能用来储存负数<br />通常，为了节省空间，应该尽可能的使用最小的整型数据。一个TINYINT型数据只占用一个字节；一个INT型数据占用四个字节。这看起来似乎差别不大，但是在比较大的表中，字节数的增长是很快的。另一方面，一旦你已经创建了一个字段，要修改它是很困难的。因此，为安全起见，你应该预测以下，一个字段所需要存储的数值最大有可能是多大，然后选择适当的数据类型。<br /><br />MUNERIC<br />为了能对字段所存放的数据有更多的控制，你可以使用NUMERIC型数据来同时表示一个数的整数部分和小数部分。NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多。一个NUMERIC型字段可以存储从-1038到1038范围内的数。NUMERIC型数据还使你能表示有小数部分的数。例如，你可以在NUMERIC型字段中存储小数3.14。<br /><br />当定义一个NUMERIC型字段时，你需要同时指定整数部分的大小和小数部分的大小。如：MUNERIC(23,0)<br /><br />一个 NUMERIC型数据的整数部分最大只能有28位，小数部分的位数必须小于或等于整数部分的位数，小数部分可以是零。<br /><br />MONEY VS SMALLMONEY<br />你可以使用 INT型或NUMERIC型数据来存储钱数。但是，专门有另外两种数据类型用于此目的。如果你希望你的网点能挣很多钱，你可以使用MONEY型数据。如果你的野心不大，你可以使用SMALLMONEY型数据。MONEY型数据可以存储从-922，337，203，685，477.5808到922，337，203，685，477.5807的钱数。如果你需要存储比这还大的金额，你可以使用NUMERIC型数据。<br /><br />SMALLMONEY型数据只能存储从-214，748.3648到214，748.3647 的钱数。同样，如果可以的话，你应该用SMALLMONEY型来代替MONEY型数据，以节省空间。<br /><br />逻辑型<br /><br />BIT<br />如果你使用复选框（ CHECKBOX）从网页中搜集信息，你可以把此信息存储在BIT型字段中。BIT型字段只能取两个值：0或1。<br /><br />当心，在你创建好一个表之后，你不能向表中添加 BIT型字段。如果你打算在一个表中包含BIT型字段，你必须在创建表时完成。<br /><br />日期型<br /><br />DATETIME VS SMALLDATETIME<br />一个 DATETIME型的字段可以存储的日期范围是从１７５３年１月１日第一毫秒到9999年12月31日最后一毫秒。<br /><br />如果你不需要覆盖这么大范围的日期和时间，你可以使用SMALLDATETIME型数据。它与DATETIME型数据同样使用，只不过它能表示的日期和时间范围比DATETIME型数据小，而且不如DATETIME型数据精确。一个SMALLDATETIME型的字段能够存储从１９00年１月１日到２０７９年６月６日的日期，它只能精确到秒。<br /><br />DATETIME型字段在你输入日期和时间之前并不包含实际的数据，认识这一点是重要的。<br /></div></td></tr></tbody></table>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1010.html</link>
			<title>SSL证书请求文件(CSR)生成指南 - Winodws 2003 Server IIS 6.0</title>
			<author>网络收集</author>
			<category>服务器</category>
			<pubDate>2008-01-02 16:40:56</pubDate>
			<guid>http://www.cuku.net/show.php/1010.html</guid>
		<description><![CDATA[<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD colSpan=3 height=50>
<DIV align=center><STRONG>SSL证书请求文件(CSR)生成指南 - Winodws 2003 Server IIS 6.0</STRONG><BR></DIV></TD></TR>
<TR>
<TD vAlign=top width=17>&nbsp;</TD>
<TD vAlign=top width=567 bgColor=#ffffff>
<P><STRONG>重要注意事项</STRONG> An Important Note Before You Start</P>
<P>在生成CSR文件时同时生成您的私钥，如果您丢了私钥，则颁发证书给您后不能安装成功！您必须重新生成私钥和CSR文件，免费重新颁发新的证书。为了避免此情况的发生，请在生成CSR后一定不要再动服务器，让服务器挂起，等待证书颁发。 <BR>By far the most common problem users have when going through this process is related to private keys. If you lose or cannot access a private key, you cannot use the certificate we issue to you and will need to request a free reissue. To ensure this never happens, we advise that a backup of the private key file is made and that a note is made of the password that is used to protect the export of the private key.</P>
<P><STRONG>1.开始生成私钥和CSR文件 </STRONG>Start the Key/CSR Generation Process: </P>
<P>右击需要申请SSL证书的网站属性， 再点击“目录安全性”，最下面有一个“安全通信”栏。点击“服务器证书”就开始证书申请向导，如下图1所示： <BR>Click the Directory Security tab and then click on the "Server Certificate" button in the Secure communications section. This will start the Web Site Certificate Wizard. </P>
<P align=center><IMG height=453 src="/admin/edit/UploadFile/200812164045708.gif" width=471></P>
<P><STRONG>2. 创建新证书</STRONG> Select "Create a new certificate" </P>
<P>缺省为“新建证书”，点击“下一步”即可，如下图2所示。如果您的服务器中已经有了证书，则选择“分配现有证书”；如果您已经已经备份过证书，则选择“从.pfx文件导入证书”。 <BR>From the Web Site Certificate Wizard, select the "Create a new Certificate" option. </P>
<P align=center><IMG height=403 src="/admin/edit/UploadFile/200812164046975.gif" width=561></P>
<P>如果您是续费用户，如下图3所示，直接选择缺省的“更新当前证书”即可完成新的CSR文件，如果您的证书还没有到期，则不会影响正常使用。如果您想修改证书中的公司名称等信息，则您需要先“删除当前证书”再生成新的CSR，让服务器挂起，但您的原先证书就不能用了。建议您使用其他服务器生成CSR文件，收到证书并安装成功后导出证书为PFX格式文件，再导入到您的服务器上，选择“替换当前证书”即可。</P>
<P align=center><IMG height=404 src="/admin/edit/UploadFile/200812164046160.gif" width=562></P>
<P><STRONG>3. 准备证书请求</STRONG> Prepare the request </P>
<P>什么也不用动，直接点击“下一步”即可，如下图3所示。 <BR>Select the "Prepare the request now, but send it later" option from the list. You will need to prepare the request now but will only submit the request (CSR) via our online request forms. We do not accept CSR's via email. </P>
<P align=center><IMG height=404 src="/admin/edit/UploadFile/200812164047860.gif" width=561></P>
<P><STRONG>4. 输入证书名称和选择密钥长度</STRONG> Enter a certificate name and the certificate strength </P>
<P>输入新证书的名称，一个您认为好记的名称，可以是中文或英文。选择密钥长度，一般直接选缺省的1024位，当然也可以选更高位数，但会影响服务器性能，有些浏览器也有可能不支持。点击“下一步”即可，如下图4所示。不要选中“选择证书的加密服务提供程序CSP”，除非您的服务器安装了硬件SSL加速卡或其他加密设备。 <BR>At this point you will decide what encryption strength your private Key and CSR will be set at. It is advised to choose a 1024-bit key size. Please note that you can choose a larger key size although some browsers may have difficulty making a session with a bigger key size. Do not check the option ‘Select cryptographic service provider (CSP) for this certificate'. </P>
<P align=center><IMG height=404 src="/admin/edit/UploadFile/200812164047247.gif" width=561></P>
<P><STRONG>5. 输入申请单位的合法名称和部门名称</STRONG> Enter your Organization Information 
<P>您必须输入您单位的合法单位名称，也就是营业执照或组织机构代码证上的名称，WoTrust SSL证书全面支持中文，所以，您可以输入中文名称，也可以输入单位英文名称，但英文名称一定要有英文名称证明文件，或是中文名称的直接翻译。部门名称也可以输入，也可以不输入。如果单位名称填写的是中文名称，建议部门名称就填写单位英文名称，以便英文用户查看SSL证书信息时也能看到单位英文名称。<BR>You should enter the company name as it appears on your official company registration documents. The organization unit is optional but IIS 6.0 makes this field compulsory therefore please specify an organization unit. </P>
<P align=center><IMG height=404 src="/admin/edit/UploadFile/200812164048439.gif" width=561></P>
<P><STRONG>6. 输入公用名称</STRONG> Enter your common name </P>
<P>公用名称(Common Name)是SSL证书中最重要的字段(简称：CN)，是绑定申请单位的服务器名称的，如果您的服务器是位于互联网上，则一定要输入该服务器的域名，如：www.domain.com，或 oa.domain.com，而不能只输入domain.com；如果您的服务器是在内部网上使用，则可以填写主机名(NetBIOS名)。请注意：Thawte SSL证书支持中文域名，如果您是为中文域名申请证书，则此处就填写该中文域名的Punycode码域名，如：中文域名为： 我信任.com，则应该填写： xn--boqsvp05b.com 。您可以点击 <A href="https://www.thawte.com/core/process?process=public-idn-converter" target=_blank>这里</A> 转换您的中文域名。<BR>The term "common name" is X.509 speak for the name that distinguishes the certificate best, and ties it to your Organization. Enter your exact host and domain name that you wish to secure. Example: If you wish to secure www.mydomain.com, then you will need to enter the exact host (www) and domain name (mydomain.com) in this field. If you enter mydomain.com then the certificate issued to you will only work error free on https://mydomain.com. It will cause a certificate mismatch error when you or your users access the domain via https:// www.mydomain.com. </P>
<P align=center><IMG height=404 src="/admin/edit/UploadFile/200812164048842.gif" width=561></P>
<P><STRONG>7. 输入申请单位的地理位置信息</STRONG> Enter the geographical details of your Organization </P>
<P>选择国家，缺省为CN，不用动，输入申请单位所在省或自治区全名和所在市县全名，一定要是国家规定的标准名称，而且不能是缩写。您可以输入省市中文名称，也可以输入省市英文名称。<BR>Enter your country, state or province and locality or city. </P>
<P><IMG height=404 src="/admin/edit/UploadFile/200812164048348.gif" width=561></P>
<P><STRONG>8. 保存CSR文件</STRONG> Choose a filename to save the request to </P>
<P>选择路径，保存您的CSR文件，点击“下一步”，如下图8所示。。 Enter the file name for the certificate request (CSR) and the location of where you would like to save the file (we recommend you click the ‘browse' button and select a location to save the CSR file to). Then click "Next”. </P>
<P><IMG height=404 src="/admin/edit/UploadFile/200812164049571.gif" width=561></P>
<P><STRONG>9. 检查和确认CSR文件</STRONG> Confirm your request details </P>
<P>显示CSR中的详细信息，请检查是否正确，此信息将是SSL证书中主题中显示的信息。同时请注意：国家字段只能是国家名称缩写，中国就是CN，而不能是中文：中国。其他所有字段都可以是中文。如果您认为有什么不妥，请点击“上一步”重填。<BR>The next page will display the summary of the certificate request. </P>
<P align=center><IMG height=404 src="/admin/edit/UploadFile/200812164049840.gif" width=561></P>
<P><STRONG>10. 完成生成私钥和CSR文件</STRONG> Finish and exit the IIS Certificate Wizard </P>
<P>到此，您就完成了CSR文件的生成，同时也生成了证书私钥文件，私钥保存在 Windows 证书存储区。<BR>Click on 'Finish' to complete the "Web Server Certificate wizard". </P>
<P align=center><IMG height=404 src="/admin/edit/UploadFile/200812164050186.gif" width=561></P>
<P><STRONG>11. 测试CSR和把CSR发给WoTrust</STRONG>, Start the thawte certificate request process </P>
<P>成功生成CSR后，建议您自己测试一下生成的 CSR 文件是否正确，请点击 <A href="https://www.thawte.com/core/process?process=public-display-request-details&amp;public-display-request-details.product-type=fssl2" target=_blank>这里</A> 测试您的CSR文件。请把测试成功的CSR文件发给WoTrust即可。请一定不要再动您的服务器，等待证书的颁发。<BR>To submit the CSR to WoTrust for processing you should start the certificate enrollment process. </P></TD></TR></TBODY></TABLE>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1009.html</link>
			<title>SSL证书导出备份与导入安装指南</title>
			<author>网络收集</author>
			<category>服务器</category>
			<pubDate>2008-01-02 16:36:23</pubDate>
			<guid>http://www.cuku.net/show.php/1009.html</guid>
		<description><![CDATA[<TABLE cellSpacing=0 cellPadding=0 width="96%" align=center border=0>
<TBODY>
<TR>
<TD height=115>&nbsp; 服务器 SSL证书安装成功后， <STRONG><FONT color=#ff0000>一定</FONT></STRONG>要把服务器SSL证书从服务器备份出来，以便服务器硬件或软件系统坏了需要重装系统时可以重装服务器 SSL证书。虽然 WoTrust 承诺在服务期内可以免费重新颁发新的数字证书，但不仅会耽误用户您的时间，同时也给我们增加了工作量，不如您在安装成功后马上备份出来，放在一个安全的地方，最好是刻成光盘放在一个物理上安全的地方。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 不同的操作系统有不同的备份和导入方法，请参考操作系统的SSL证书备份指南，本备份与导入指南仅针对中文版 Windows 2003 Server 操作系统。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 1. 在“运行”中输入“ mmc ”就出现“控制台”窗口( 图 1) ： </TD></TR>
<TR>
<TD height=328>
<DIV align=center><IMG height=315 src="/admin/edit/UploadFile/20081216356325.jpg" width=450></DIV></TD></TR>
<TR>
<TD height=27>&nbsp;&nbsp;&nbsp;&nbsp; 2. 在控制台的主菜单选择“添加 / 删除管理单元”( 图 2)： </TD></TR>
<TR>
<TD>
<DIV align=center><IMG height=324 src="/admin/edit/UploadFile/200812163515178.jpg" width=400></DIV></TD></TR>
<TR>
<TD height=30>&nbsp;&nbsp;&nbsp;&nbsp; 3. 点击“添加”后出现以下界面，往下找选中“证书” ( 图 3) ： </TD></TR>
<TR>
<TD height=330>
<DIV align=center><IMG height=322 src="/admin/edit/UploadFile/200812163520312.jpg" width=400></DIV></TD></TR>
<TR>
<TD height=33>&nbsp;&nbsp;&nbsp;&nbsp; 4. 点击“添加”后出现以下界面，选择“计算机帐户”后点击“下一步” ( 图 4) ：</TD></TR>
<TR>
<TD height=332>
<DIV align=center><IMG height=322 src="/admin/edit/UploadFile/200812163525552.jpg" width=400></DIV></TD></TR>
<TR>
<TD height=34>&nbsp;&nbsp;&nbsp;&nbsp; 5. 出现如下界面后点击“完成”即可 ( 图 5)</TD></TR>
<TR>
<TD height=332>
<DIV align=center><IMG height=321 src="/admin/edit/UploadFile/200812163526166.jpg" width=400></DIV></TD></TR>
<TR>
<TD height=29>&nbsp;&nbsp;&nbsp;&nbsp; 6. 这样就成功添加了管理单位 — 证书，点击“确定” ( 图 6) ：</TD></TR>
<TR>
<TD>
<DIV align=center><IMG height=324 src="/admin/edit/UploadFile/200812163528980.jpg" width=400></DIV></TD></TR>
<TR>
<TD height=40>&nbsp;&nbsp;&nbsp;&nbsp; 7. 出现如下界面就表示已经可以管服务器上安装的证书了 ( 图 7) ：</TD></TR>
<TR>
<TD height=297>
<DIV align=center><IMG height=282 src="/admin/edit/UploadFile/200812163533659.jpg" width=400></DIV></TD></TR>
<TR>
<TD height=52>
<P>&nbsp;&nbsp;&nbsp;&nbsp; 8. 再点击“个人”的“证书”，就会出现您的服务器上安装的SSL证书，选中您的服务器证书后，右键就出现“所有任务”的“导出”菜单，点击“导出”就可以备份您的服务器SSL证书了 ( 图 8) ：</P></TD></TR>
<TR>
<TD>
<DIV align=center><IMG height=315 src="/admin/edit/UploadFile/200812163537487.gif" width=502></DIV></TD></TR>
<TR>
<TD height=40><SPAN class=a1></SPAN><SPAN class=a1></SPAN>&nbsp;&nbsp;&nbsp;&nbsp; 9. 请按照下图的红框指示，点击“下一步”按钮，导出您的数字证书备份 ( 图 9) ：</TD></TR>
<TR>
<TD height=40>
<DIV align=center><SPAN class=a1><IMG height=358 src="/admin/edit/UploadFile/200812163539267.gif" width=503></SPAN></DIV></TD></TR>
<TR>
<TD height=40>&nbsp;&nbsp;&nbsp;&nbsp; 10. 请选择“包含证书路径中所有证书”，点击“下一步”按钮 ( 图 10) ： </TD></TR>
<TR>
<TD height=366>
<DIV align=center><IMG height=358 src="/admin/edit/UploadFile/200812163541842.gif" width=503></DIV></TD></TR>
<TR>
<TD height=60>&nbsp;&nbsp;&nbsp;&nbsp; 11. 请按照下图指示，在密码框内输入您的服务器数字证书私钥密码，一定要有足够长度 ( 建议 6 位以上 ) ，以后导入安装时需要此密码，一定不能忘了此密码，否则如果服务器重装时需要导入您的SSL证书就没有办法了。点击“下一步”按钮 ( 图 11) ：</TD></TR>
<TR>
<TD>
<DIV align=center><IMG height=358 src="/admin/edit/UploadFile/200812163545773.gif" width=503></DIV></TD></TR>
<TR>
<TD height=40>&nbsp;&nbsp;&nbsp;&nbsp; 12. 请按照下图指示，选择您的数字证书保存目录和文件名，点击“下一步”按钮 ( 图 12) ：</TD></TR>
<TR>
<TD>
<DIV align=center><IMG height=298 src="/admin/edit/UploadFile/200812163547282.jpg" width=450></DIV></TD></TR>
<TR>
<TD height=60>&nbsp;&nbsp;&nbsp;&nbsp; 13. 如下图所示，您的服务器 SSL证书已经备份成功，显示保存的目录和文件名等信息。请把此证书文件保存好，最好是保存到光盘或其他电脑中 ( 图 13) 。</TD></TR>
<TR>
<TD>
<DIV align=center><IMG height=358 src="/admin/edit/UploadFile/200812163550731.gif" width=503></DIV></TD></TR>
<TR>
<TD height=61>&nbsp;&nbsp;&nbsp;&nbsp; 14. 证书备份出来后，一旦需要重新导入，则还是在控制台中操作，在“证书” - “个人”菜单右击鼠标就可以看到“所有任务” - “导入”按步骤就可以导入您的服务器 SSL证书即可 ( 图 14) ： </TD></TR>
<TR>
<TD height=80>
<DIV align=center><IMG height=363 src="http://www.kuaissl.com/support/sslbk/mmc-14.jpg" width=450></DIV></TD></TR>
<TR>
<TD height=58>&nbsp;&nbsp;&nbsp;&nbsp; 15. 导入证书后，您还要到“ Internet 服务管理器”中为您的网站分配一个系统中已经存在的证书，点击“目录安全性” - “服务器证书”即可，请注意：只能在原申请证书的域名 ( 网站 ) 上使用数字证书 ( 图 15) ： </TD></TR>
<TR>
<TD height=376>
<DIV align=center><IMG height=352 src="/admin/edit/UploadFile/20081216363572.jpg" width=450></DIV></TD></TR>
<TR>
<TD height=74>
<P>&nbsp;&nbsp;&nbsp;&nbsp; 16. 如果您在导出备份时没有选中“包含证书路径中所有证书”，则表明您没有备份整个证书链，在导入安装时会有问题。补救的办法就是手动导入中级根证书：对于<A href="http://www.kuaissl.com/KuaiSSL.htm"> 超快SSL</A>，则需要<A href="http://www.kuaissl.com/support/WoTrust_Server.cer"> 下载 </A>其中级根证书；并按照如下图示在“中级证书颁发机构”-“证书”右击后的“所有任务”中的“导入”即可安装成功 ( 图 16) ： </P></TD></TR>
<TR>
<TD height=473>
<DIV align=center><IMG height=447 src="/admin/edit/UploadFile/200812163611895.gif" width=463></DIV></TD></TR>
<TR>
<TD height=90>&nbsp;&nbsp;&nbsp;&nbsp; 17. 证书导入成功后，您还需要在“目录安全性”-“编辑”中设置“要求安全通道”，也就是访问此网站必须使用https://，如果不设置此选项，则用户既可以使用http://访问，也可以使用https://访问。您还可以设置“要求128位加密”，但这样设置后，如果用户使用IE5浏览器就不能正常访问了，因为IE5浏览器只支持56位加密。对于客户端证书选项，一般情况下，都是设置“忽略客户端证书”，如果您的网站要求用户使用客户端证书实现强身份认证，则选“要求客户端证书”，如果您的网站既可以不使用客户端证书，也可以使用客户端证书，则选“接受客户端证书”，如下图示 ( 图17) ：</TD></TR>
<TR>
<TD>
<DIV align=center><IMG height=454 src="/admin/edit/UploadFile/200812163612644.gif" width=563></DIV></TD></TR>
<TR>
<TD>
<P><BR>&nbsp;&nbsp;&nbsp;&nbsp; 这样就完成了数字证书的备份和导入 ，同时正确设置客户端认证 ( 如果需要的话 ) 。现在，您可以退出控制台了，操纵系统会提示您保存您的控制台设置，在服务器的“管理工具”中就可以看到您保存的控制台设置，下次直接点击此处就可以进入管理。 </P></TD></TR></TBODY></TABLE><!-- InstanceEndEditable --><BR>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1008.html</link>
			<title>SSL证书安装指南 - Winodws 2003 Server IIS 6.0</title>
			<author>本站原创</author>
			<category>服务器</category>
			<pubDate>2008-01-02 16:17:07</pubDate>
			<guid>http://www.cuku.net/show.php/1008.html</guid>
		<description><![CDATA[<P><STRONG>1. 开始安装证书 Start the certificate installation process:</STRONG> </P>
<P>右击需要申请SSL证书的网站属性， 再点击“目录安全性”，最下面有一个“安全通信”栏。点击“服务器证书”就开始证书申请向导，如下图1所示：<BR>Under Administrative Tools, open the Internet Services Manager. Then open up the properties window for the website you wish to request the certificate for. Right-clicking on the particular website will open up its properties. </P>
<DIV forimg="1">
<DIV forimg="1"><IMG class=blogimg src="/admin/edit/UploadFile/20081216234986.jpg" border=0 small="0"></DIV>
<DIV class=tmpDiv></DIV></DIV>
<P><STRONG>2. 处理挂起的请求</STRONG> </P>
<P>如下图2所示，选择“处理挂起的请求”，如果您要删除已经生成CSR和私钥的请求，则选择“删除挂起的请求”，如果证书已经颁发，则千万不能选“删除请求”，否则证书就不能安装成功！ <BR>From the Web Site Certificate Wizard, select the "Process the Pending Request and Install the Certificate " option. </P>
<DIV forimg="1">
<DIV forimg="1"><IMG class=blogimg src="/admin/edit/UploadFile/20081216234690.jpg" border=0 small="0"></DIV>
<DIV class=tmpDiv></DIV></DIV>
<P><STRONG>3. 选择证书文件</STRONG></P>
<P>把您收到的证书另存为 .cer 文件保存在服务器上(PKCS#7格式)，并点击“浏览”选择该证书文件。<BR>Type in the location of the certificate response file (you may also browse to the file), and then click Next. (save the certificate in a notepad file with a .cer extension) </P>
<DIV forimg="1">
<DIV forimg="1"><IMG class=blogimg src="/admin/edit/UploadFile/20081216235673.jpg" border=0 small="0"></DIV>
<DIV class=tmpDiv></DIV></DIV>
<P><STRONG>4. 为网站指定一个SSL端口</STRONG></P>
<P>SSL缺省端口为443端口，请不要修改。如果您使用其他端口如：448，则访问时必须输入：https://www.domain.com:448/。同时，请注意：如果您的服务器需要部署多个SSL，则需要确定一个常用网站使用443端口，而其他网站则使用其他端口，并在网页中设置链接到需要设置的端口中。</P>
<P>但是，如果您不想使用：448等端口，则您可以选购通配型证书或多域型证书，但需要做一些设置，请参考：通配型证书和多域型证书设置指南。</P>
<P>同时请注意：一定要设置防火墙开放443端口(TCP)(包括Windows 2003 Server 自带的防火墙)。 <BR>Specify SSL port 443 which is the default secure port. </P>
<DIV forimg="1">
<DIV forimg="1"><IMG class=blogimg src="/admin/edit/UploadFile/20081216235243.jpg" border=0 small="0"></DIV>
<DIV class=tmpDiv></DIV></DIV>
<P><STRONG>5. 确认证书信息</STRONG></P>
<P>系统会显示详细的证书信息，直接点击“下一步”即可： <BR>Read the summary screen to be sure that you are processing the correct certificate, and then click Next. </P>
<DIV forimg="1">
<DIV forimg="1"><IMG class=blogimg src="/admin/edit/UploadFile/20081216235856.jpg" border=0 small="0"></DIV>
<DIV class=tmpDiv></DIV></DIV>
<P><STRONG>6. 完成证书安装</STRONG></P>
<P>会显示服务器已经成功安装了证书。<BR>You will see a confirmation screen. When you have read this information, click “Finish”. </P>
<DIV forimg="1">
<DIV forimg="1"><IMG class=blogimg src="/admin/edit/UploadFile/20081216235923.jpg" border=0 small="0"></DIV>
<DIV class=tmpDiv></DIV></DIV>
<P><STRONG>7. 设置有关参数</STRONG></P>
<P>证书安装成功后，您还需要在“目录安全性”-“编辑”中设置“要求安全通道”，也就是访问此网站必须使用https://，如果不设置此选项，则用户既可以使用http://访问，也可以使用https://访问。您还可以设置“要求128位加密”，但这样设置后，如果用户使用IE5浏览器就不能正常访问了，因为IE5浏览器只支持56位加密。对于客户端证书选项，一般情况下，都是设置“忽略客户端证书”，如果您的网站要求用户使用客户端证书实现强身份认证，则选“要求客户端证书”，如果您的网站既可以不使用客户端证书，也可以使用客户端证书，则选“接受客户端证书”，如下图7所示：</P>
<DIV forimg="1">
<DIV forimg="1"><IMG class=blogimg src="/admin/edit/UploadFile/20081216236504.jpg" border=0 small="0"></DIV>
<DIV class=tmpDiv></DIV></DIV>
<P><STRONG>8. 安装中级根证书</STRONG> </P>
<P>通过以上7步已经安装成功！但如果您收到的SSL证书不是PKCS#7格式，则需要下载对应的中级根证书并安装中级根证书， 如果您的服务器的“中级证书颁发机构”中没有VeriSign中级根证书，则需要导入此根证书，请先 下载 此中级根证书，再运行 MMC 管理证书，如下图示，右击“中级证书颁发机构”-“证书”后的“所有任务”中的“导入”即可安装成功，如下图8所示 ： </P>
<DIV forimg="1">
<DIV forimg="1">
<DIV forimg="1"><IMG class=blogimg src="/admin/edit/UploadFile/20081216236459.jpg" border=0 small="0"></DIV>
<DIV class=tmpDiv></DIV></DIV>
<DIV class=tmpDiv></DIV></DIV>
<P><STRONG>9. 测试是否安装成功 Test the server</STRONG> </P>
<P>在浏览器地址栏输入：https://yourdomain.com (申请证书的域名)测试您的SSL证书是否安装成功，如果成功，则浏览器下方会显示一个安全锁标志。请注意：如果您的网页中有不安全的元素，则会提供“是否显示不安全的内容”，建议修改网页删除不安全的内容。 <BR>Test your certificate by using a browser to connect to your server. Use the https protocol directive (e.g. https://your server/) to indicate you wish to use secure HTTP. The padlock icon on your browser will be displayed in the locked position if your certificates are installed correctly and the server is properly configured for SSL. </P>Install the Intermediate Certificate Setup the Server Click "Finish" to complete the installation process Confirm the certificate details Specify the SSL port number Select the certificate file to install Select to “Process the pending request and Install the certificate.” ]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1007.html</link>
			<title>OpenSSL和CSR在线生成器 服务器证书安装</title>
			<author>网络收集</author>
			<category>服务器</category>
			<pubDate>2008-01-02 13:25:25</pubDate>
			<guid>http://www.cuku.net/show.php/1007.html</guid>
		<description><![CDATA[<P>您会收到一封来自GeoTrust的邮件，证书内容附在服务器中。如果证书是以附件的形式(Cert.cer)夹带在邮件中，您就可以直接应用它。如果您的证书中以文本的方式存在邮件中，您就需要将邮件中的证书部分的内容用Vi或Notepad存成一个纯文本文件。不要将其存成Microsoft Word 或其它字处理软件格式，并确定证书内容中不含有空行和空格。如下所示： </P><IMG src="/admin/edit/UploadFile/20081213253245.jpg"> 
<H4 class=whitebar>安装到IIS6.0上</H4><BR>
<OL>
<LI><A href="http://www.myssl.cn/download/OpenSSL_0.9.8.a_Win32.zip" target=_blank>下载OpenSSL软件包</A> 
<LI>解压缩到 c:\openssl 目录下，运行cmd.exe进入命令窗口，执行：<BR>cd c:\openssl<BR>set OPENSSL_CONF=openssl.cnf<BR>openssl pkcs12 -export -out server.pfx -inkey ssl.key -in cert.crt<BR>(ssl.key是生成CSR时的密钥文件，cert.crt是获得的证书文件) 
<LI>将server.pfx文件导入IIS 在“网站属性”－－“目录安全性”－－“服务器证书”－－“从.pfx文件导入证书” </LI></OL>
<H4 class=whitebar>安装到Apache上</H4><BR>
<OL>
<LI>先将获得的证书保存为cert.crt，和原来的私钥文件ssl.key一起复制到 /etc/ssl/crt/下。 
<LI>要将证书应用到您的服务器中，必须配置httpd.conf文件，您需要加入下列SSL 目录信息： 
<P>SSLCertificateFile /etc/ssl/crt/cert.crt //证书文件 </P>
<P>SSLCertificateKeyFile /etc/ssl/crt/ssl.key //私钥文件 </P>
<P>（您需要根据具体情况修改SSL 目录信息） </P>
<LI>将httpd.conf文件存盘并重新启动Apache，您可以用以下命令启动Apache： 
<P>apachectl stop </P>
<P>apachectl startssl </P>您现在已经将服务器证书应用到您的Apache服务器了。 </LI></OL>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1006.html</link>
			<title>网友评论:我看Adobe CS3间谍软件事件</title>
			<author>网络收集</author>
			<category>新闻网摘</category>
			<pubDate>2008-01-02 09:34:36</pubDate>
			<guid>http://www.cuku.net/show.php/1006.html</guid>
		<description><![CDATA[192.168.112.2o7.net这个域名，他人粗看一定认为是某个钓鱼网站或者挂有网页木马的网站。但是，有人发现，大名鼎鼎的Adobe CS3软件，竟然每次启动都试图访问这里！也许对于经历过反流氓软件大战的国人来说，这非常容易理解，但是却还是让人有了一点想法。<BR><BR>
<P>最近Adobe CS3欢迎界面里的在线部分的统计代码域名（所谓192.168.112.2o7.net）问题，导致了很多人的关注。一套平面设计类软件，不仅仅是在线激活（而且出来马上就会被ZWT之类0day组轻易crack掉），而且也搞起了越来越多的在线增值服务。也许大多数地方都有此类流量分析代码（比如最常见的http://www.google-analytics.com/urchin.js），但是问题最大的是这个域名。 <BR><BR>为什么让这个域名看着像个内网IP呢？其实用人眼仔细一看，很容易就看出来了这不是一个IP，就像在QQ里面经常收到的以腾讯名义出现的挂马或者钓鱼网址那样。关键是，某些机器可能看不出来。少数防火墙软件默认的规则是放行来去192.168.*.*的包，这也许是为了方便内网用户，却并不能判别这规则是针对域名还是解析出来的IP地址，导致这样一个明显解析到外网的域名被当作内网处理而绕过了防火墙。这种手段可以说是个“hack”；它也许不应该出现在一个正当的、昂贵的高端软件所应该有的行为中。这就是这事情闹起来的原因之一。如果发生在国内也许就不了了之了；但是洋人们很可能会因此而把Adobe告上法庭（看看Sony XCP事件）。<BR><BR>不知道是什么趋势，最近几年间谍软件的问题越闹越大，而且这问题开始跨平台，出现在一些久负盛名的老牌软件公司身上。用户的知情能力不断增加，感觉到越来越不安全了。至于Adobe，很久以前（大概是1999，Photoshop版本6）在盗版用户中就曾经流传着Adobe软件在线帮助系统Adobe Online会把软件序列号等信息发回公司的说法，后来对在线激活等做法的批评也很多，但是从没有到今天CS3这种地步。<BR><BR>看看今天的CS3，买一套正版和以前一样贵，安装程序变得像iTunes那样定制余地很小（不能定制到实例文件和插件级别），而且有一些很大的东西是不能定制的（比如Adobe Bridge，），而且出现了两次可疑的流氓事件（自动强制安装上一个找不到卸载工具的Apple Bonjour网络服务和这次的统计系统事件）。收购了Macromedia，就丢掉了Macromedia软件一贯小巧精悍的特点，一个Dreamweaver CS3装上居然要好几百兆空间，是MX 2004的几倍大，而其功能上的进步远远比不上体积膨胀的速度。看来，Adobe还没有真正形成垄断，就开始学某些垄断企业的传统了。<BR><BR>就算是垄断的微软，先不说Vista这个怪物（它的膨胀其实有很多原因），拿Office为例，Office 2003专业版安装包不过1CD（500多兆），2007专业版相对于2003来说，其变化可谓翻天覆地，但是安装包仍然只有1CD，不到700兆！也许Adobe这样的公司自己开发软件习惯用最高端的机器，而懒得跑到老机器调试，或者总是认为自己的软件是高端软件，就是要配高端机器。当然这个问题在国内并不很大，各种各样的精简版、绿色版铺天盖地，但是如果限制在软件许可协议范围内，那就得继续忍受下去了。<BR><BR>现在有一种说法：软件公司不断提高新软件的系统要求使硬件厂商获利，不断收集用户的使用习惯以使开发部门让软件变得更对用户友好——与此同时让那些广告和市场部门更能瞄准特定的用户，让法律部门锁定著作权侵犯者。也许这就是现在的游戏规则，我们只能忍受，而不能想什么办法改变它。<BR><BR>关于删除Bonjour服务（其实质是一个实现类似uPNP的零配置网络的服务），网上最常见的是Adobe官方给的办法：http://kb.adobe.com/selfservice/viewContent.do?externalId=kb400982&amp;sliceId=1<BR>1、运行"C:\Program Files\Bonjourm\DNSResponder.exe -remove"（请根据系统情况修改路径） <BR>2、将C:\Program Files\Bonjourm\dnsNSP.dll改名 <BR>3、重新启动后删除C:\Program Files\Bonjour目录 <BR><BR>这里的方法其实有些含糊，没有说到问题的实质。Bonjour服务包括两个，一个是普通的系统服务，一个是Winsock LSP。前者的删除相对简单，而后者比较麻烦（曾经有一些安装在此处的病毒或者流氓软件，清除后导致无法上网）。我建议使用工具System Repair Engineer（http://www.kztechs.com）和IceSword这两个简单的反病毒／流氓软件辅助工具进行操作。首先使用IceSword结束mDNSResponder.exe进程，然后用SREng进入“服务”下的“Win32 服务应用程序”，找到名为“##Id_String2.6844F930_1628_4223_B5CC_5BB94B879762##”或者“Bonjour Service”（如果是苹果自己的安装包可能会对此名字本地化），选择“删除”。然后进入“系统修复”下的WINSOCK供应者，应该能看到包含mdnsNSP.dll的项，选择“重置”或者“删除”（这个依据SREng版本而有所不同）。然后，再删除mDNSResponder.exe。重启动后，这个服务应该已经消失，此时可以删除其目录。</P>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1005.html</link>
			<title>64位xp注册码</title>
			<author>本站原创</author>
			<category>注册码</category>
			<pubDate>2008-01-01 19:35:14</pubDate>
			<guid>http://www.cuku.net/show.php/1005.html</guid>
		<description><![CDATA[B2RBK-7KPT9-4JP6X-QQFWM-PJD6G<BR>]]></description>
		</item>  
	  
	    		<item>
			<link>http://www.cuku.net/show.php/1004.html</link>
			<title>资深网管教你打造SSL加密的安全站点</title>
			<author>网络收集</author>
			<category>服务器</category>
			<pubDate>2007-12-31 16:02:05</pubDate>
			<guid>http://www.cuku.net/show.php/1004.html</guid>
		<description><![CDATA[<P><FONT size=2>从商业机构到政府部门再到个人家庭，越来越多的用户使用网络来处理事务，交流信息和进行交易活动，这些都不可避免地涉及到网络安全问题，尤其是认证和加密问题。特别是在网上进行购物交易活动中，必须保证交易双方能够互相确认身份，安全地传输敏感信息，事后不能否认交易行为，同时还要防止他人截获篡改宝贵信息或假冒交易方。 </FONT></P>
<P><FONT size=2></FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 如何提高站点信息的安全性呢？目前最简单的解决方案就是利用SSL安全技术来实现WEB的安全访问。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 小提示：使用SSL协议有什么好处呢？SSL安全协议工作在网络传输层，适用于HTTP，telnet,FTP和NNTP等服务，不过SSL最广泛的应用还是WEB安全访问，如网上交易，政府办公等。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 本文将由笔者为各位读者介绍使用SSL加密协议建立WWW站点的全过程，为了保证技术的先进性我们介绍在windows2003的IIS6上建立SSL加密的方法，当然在windows2000的IIS5上建立SSL加密步骤基本相同。</FONT></P>
<P><STRONG><FONT color=#ff0000 size=2>一、先决条件：</FONT></STRONG></P>
<P><FONT size=2><STRONG><FONT color=#ff0000>&nbsp;&nbsp;&nbsp; </FONT></STRONG>要想成功架设SSL安全站点关键要具备以下几个条件。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 1、需要从可信的证书办法机构CA获取服务器证书。<BR><BR>&nbsp;&nbsp;&nbsp; 2、必须在WEB服务器上安装服务器证书。<BR><BR>&nbsp;&nbsp;&nbsp; 3、必须在WEB服务器上启用SSL功能。<BR><BR>&nbsp;&nbsp;&nbsp; 4、客户端（浏览器端）必须同WEB服务器信任同一个证书认证机构，即需要安装CA证书</FONT></P>
<P><STRONG><FONT color=#ff0000 size=2>二、准备工作：</FONT></STRONG></P>
<P><FONT size=2><STRONG><FONT color=#ff0000>&nbsp;&nbsp;&nbsp; </FONT></STRONG>在实施SSL安全站点之前需要我们做一些准备工作。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第一步：默认情况下IIS6组件是安装在windows2003中的，如果没有该组件请自行安装。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第二步：我们建立的IIS站点默认是使用HTTP协议的，打开浏览器在地址处输入“http://本机IP”（不含引号）就可以访问。（如图1）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116122799.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图1</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第三步：安装证书服务，通过控制面板中的添加/删除程序，选择添加/删除windows组件。在windows组件向导中找到“证书服务”，前面打勾后点“下一步”。（如图2）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><A class=10 onclick='javascript:if(str3!="no"){this.href+="&amp;cchannel="+str3}else{this.href+="&amp;cchannel="+str4}' href="/admin/edit/UploadFile/2007123116124348.jpg" target=_blank><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116124153.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></A></TD></TR>
<TR>
<TD align=middle><FONT size=2>图2 点击看大图</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 小提示：证书服务有两个子选项“证书服务Web注册支持”和“证书服务颁发机构(CA)”。为了方便这两个功能都需要安装。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第四步：系统会弹出“安装证书服务后计算机名和区域成员身份会出现改变，是否继续”的提示，我们选“是”即可。（如图3）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116125409.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图3</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第五步：在windows组件向导CA类型设置窗口中选择独立根CA。（如图4）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116125405.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图4</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第六步：CA识别信息处的CA公用名称输入本地计算机的IP地址，如10.91.30.45，其他设置保留默认信息即可。（如图5）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116125924.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图5</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第七步：输入证书数据库等信息的保存路径，仍然选择默认位置系统目录的system32下的certlog即可。（如图6）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><A class=10 onclick='javascript:if(str3!="no"){this.href+="&amp;cchannel="+str3}else{this.href+="&amp;cchannel="+str4}' href="/admin/edit/UploadFile/2007123116126112.jpg" target=_blank><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116126227.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></A></TD></TR>
<TR>
<TD align=middle><FONT size=2>图6 点击看大图</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第八步：下一步后出现“要完成安装，证书服务必须暂时停止IIS服务”的提示。选择“是”后继续。（如图7）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116127561.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图7</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第九步：开始复制组件文件到本地硬盘。（如图8）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116127502.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图8</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第十步：安装过程中会出现缺少文件的提示，我们需要将windows2003系统光盘插入光驱中才能继续。（如图9）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116127951.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图9</FONT></TD></TR></TBODY></TABLE><FONT size=2>&nbsp;&nbsp;&nbsp; 第十一步：继续复制文件完成windows组件的安装工作。（如图10）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116128279.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图10</FONT></TD></TR></TBODY></TABLE></P>
<P><STRONG><FONT color=#ff0000 size=2>三、配置证书：</FONT></STRONG></P>
<P><FONT size=2><STRONG><FONT color=#ff0000>&nbsp;&nbsp;&nbsp; </FONT></STRONG>下面就要为各位读者介绍如何通过IIS证书向导配置我们需要的证书文件。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第一步：通过“管理工具”中的IIS管理器启动IIS编辑器。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第二步：在默认网站上点鼠标右键选择“属性”。（如图11）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><A class=10 onclick='javascript:if(str3!="no"){this.href+="&amp;cchannel="+str3}else{this.href+="&amp;cchannel="+str4}' href="/admin/edit/UploadFile/2007123116128640.jpg" target=_blank><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116128904.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></A></TD></TR>
<TR>
<TD align=middle><FONT size=2>图11 点击看大图</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第三步：在默认网站属性窗口中点“目录安全性”标签，然后在安全通信处点“服务器证书”按钮。（如图12）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116129857.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图12</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第四步：系统将自动打开WEB服务器证书向导。（如图13）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116129771.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图13</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第五步：服务器证书处选择“新建证书”，然后下一步继续。（如图14）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116129162.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图14</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第六步：延迟或立即请求处选择“现在准备证书请求，但稍后发送”。（如图15）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116130308.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图15</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第七步：设置证书的名称和特定位长，名称保持默认网站即可，在位长处我们通过下拉菜单选择512。（如图16）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116130855.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图16</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 小提示：位长主要用于安全加密，位长越来则越安全，不过传输效率会受到一定的影响，网站性能也受影响。一般来说选择512已经足够了。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第八步：输入单位信息，包括单位和部门。（如图17）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116130637.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图17</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第九步：在站点公用名称窗口输入localhost。（如图18）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116131596.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图18</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第十步：地理信息随便填写即可。（如图19）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116131893.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图19</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第十一步：设置证书请求的文件名，我们可以将其保存到桌面以便下面步骤调用方便，保存的文件名为certreq.txt。（如图20）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116132696.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图20</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第十二步：完成了IIS证书向导配置工作，并按照要求将相应的证书文件保存到桌面。（如图21）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116133203.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图21</FONT></TD></TR></TBODY></TABLE></P>
<P><STRONG><FONT color=#ff0000 size=2>四、申请证书：</FONT></STRONG></P>
<P><FONT size=2><STRONG><FONT color=#ff0000>&nbsp;&nbsp;&nbsp; </FONT></STRONG>配置好IIS所需的证书文件后就要根据该证书内容进行申请了。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第一步：打开IE浏览器在地址栏中输入</FONT><A class=10 href="http://10.91.30.45/certsrv/"><FONT color=#0000ff size=2>http://10.91.30.45/certsrv/</FONT></A><FONT size=2>打开证书服务界面。（服务器IP地址为10.91.30.45）（如图22）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><A class=10 onclick='javascript:if(str3!="no"){this.href+="&amp;cchannel="+str3}else{this.href+="&amp;cchannel="+str4}' href="/admin/edit/UploadFile/2007123116133179.jpg" target=_blank><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116133917.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></A></TD></TR>
<TR>
<TD align=middle><FONT size=2>图22 点击看大图</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第二步：点“申请一个证书”后继续。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第三步：在申请证书界面选择“高级证书申请”。（如图23）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><A class=10 onclick='javascript:if(str3!="no"){this.href+="&amp;cchannel="+str3}else{this.href+="&amp;cchannel="+str4}' href="/admin/edit/UploadFile/2007123116134419.jpg" target=_blank><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116134745.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></A></TD></TR>
<TR>
<TD align=middle><FONT size=2>图23 点击看大图</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第四步：在高级证书申请界面选择“使用base64编码的CMC或PKCS #10文件提交一个证书申请，或继订证书申请”。（如图24）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><A class=10 onclick='javascript:if(str3!="no"){this.href+="&amp;cchannel="+str3}else{this.href+="&amp;cchannel="+str4}' href="/admin/edit/UploadFile/2007123116135959.jpg" target=_blank><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116135997.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></A></TD></TR>
<TR>
<TD align=middle><FONT size=2>图24 点击看大图</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第五步：用记事本打开上面保存在桌面上的那个certreq.txt文件，将里面的内容全部复制。（如图25）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116136555.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图25</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第六步：将复制的全部内容粘贴到“提交一个证书申请或续订申请”界面，然后点“提交”按钮。（如图26）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><A class=10 onclick='javascript:if(str3!="no"){this.href+="&amp;cchannel="+str3}else{this.href+="&amp;cchannel="+str4}' href="/admin/edit/UploadFile/2007123116137196.jpg" target=_blank><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116137198.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></A></TD></TR>
<TR>
<TD align=middle><FONT size=2>图26 点击看大图</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第七步：成功申请后出现证书挂起提示，说明证书申请已经收到，等待管理员通过申请认证。（如图27）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116138576.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图27</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 至此我们就完成了证书的申请工作，下面要通过刚刚申请的证书认证</FONT></P>
<P><STRONG><FONT color=#ff0000 size=2>五、验证证书：</FONT></STRONG></P>
<P><FONT size=2><STRONG><FONT color=#ff0000>&nbsp;&nbsp;&nbsp; </FONT></STRONG>证书申请后还需要服务器的管理员手动颁发该证书才能使之生效。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第一步：我们选择任务栏的“开始-&gt;程序-&gt;管理工具-&gt;证书颁发机构”。（如图28）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><A class=10 onclick='javascript:if(str3!="no"){this.href+="&amp;cchannel="+str3}else{this.href+="&amp;cchannel="+str4}' href="/admin/edit/UploadFile/2007123116139793.jpg" target=_blank><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116139708.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></A></TD></TR>
<TR>
<TD align=middle><FONT size=2>图28 点击看大图</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第二步：在左边选项中找到“挂起的申请”。（如图29）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116139530.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图29</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第三步：查看右边的列表，刚才提交的证书申请赫然在目，在待申请的证书上单击鼠标右键，弹出菜单中有“所有任务”一项，接着选择子项“颁发”。这时这个“待定申请”就会转移到“颁发的证书”下面。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第四步：在“颁发的证书”下找到刚才那个证书，双击打开。并在“证书属性窗口”的详细信息标签中选择“复制到文件”。（如图30）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116140602.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图30</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第五步：在“证书导出向导”中，任意选择一种CER格式导出，比如“DER 编码二进制”并保存成文件。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 通过以上五步操作我们的IIS证书就通过了系统管理员的审核，下面就可以通过审核过的证书建立SSL加密站点了。</FONT></P>
<P><STRONG><FONT color=#ff0000 size=2>六、配置IIS的SSL安全加密功能</FONT></STRONG></P>
<P><FONT size=2><STRONG><FONT color=#ff0000>&nbsp;&nbsp;&nbsp; </FONT></STRONG>我们再次来到IIS设置窗口中启用SSL安全加密功能。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第一步：在默认网站属性窗口中点“目录安全性”标签，然后在安全通信处点“服务器证书”按钮。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第二步：挂起的证书请求窗口中选择“处理挂起的请求并安装证书”选项。（如图31）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116141915.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图31</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第三步：通过浏览按钮找到在验证证书第五步中通过证书导出向导刚刚保存的DER编码格式的文件。（如图32）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116141246.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图32</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第四步：这时我们就可以设置SSL参数了，在安全通信属性中将”要求安全通道SSL”前打上对勾，从而启用了IIS站点的SSL加密功能。（如图33）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116142130.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图33</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 第五步：再次来到默认网站属性中的网站标签，可以看到SSL端口已经配置了端口信息——443。（如图34）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116142848.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图34</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 至此我们就完成了SSL加密站点的配置工作，客户端访问服务器的IIS网站时所浏览的信息是通过加密的，是非常安全的</FONT></P>
<P><STRONG><FONT color=#ff0000 size=2>七、浏览SSL加密站点：</FONT></STRONG></P>
<P><FONT size=2><STRONG><FONT color=#ff0000>&nbsp;&nbsp;&nbsp; </FONT></STRONG>服务器上设置完SSL加密站点功能后我们在客户机上通过浏览器访问该站点时就会弹出一个“安全警报”窗口。（如图35）只有信任该证书后才能够正常浏览网站信息。（如图36）<BR></FONT>
<TABLE align=center>
<TBODY>
<TR>
<TD><FONT size=2><IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="/admin/edit/UploadFile/2007123116144319.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=1></FONT></TD></TR>
<TR>
<TD align=middle><FONT size=2>图36</FONT></TD></TR></TBODY></TABLE><BR><FONT size=2>&nbsp;&nbsp;&nbsp; 小提示：在访问通过SSL加密的站点时所输入的地址应该以https://开头，例如本文中应该使用<FONT color=#0000ff>https://10.91.30.45</FONT>。如果仍然那使用<FONT color=#0000ff>http://10.91.30.45</FONT>则会出现“该网页必须通过安全频道查看，您要查看的网页要求在地址中使用"https"。禁止访问：要求SSL”的提示。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; <STRONG>总结：</STRONG>本文介绍的步骤是建立在windows2003+iis6的基础上的，对于windows2000 Server或者Windows 2000 Advance Server也是可以在IIS5基础上建立SSL加密功能的，设置步骤基本类似。如果你使用的是Windows 2000 Professional版本就不用阅读本文了，因为这个版本不支持IIS的SSL访问。</FONT></P>
<P><FONT size=2></FONT>&nbsp;</P>
<P><FONT size=2></FONT>&nbsp;</P>
<H1 class=title>錯誤訊息的憑證授權單位服務尚未啟動：</H1>
<P>
<SCRIPT>function loadTOCNode(){}</SCRIPT>
</P>
<DIV class="disclaimer mt">
<DIV class=label>重要：本文是以 Microsoft 機器翻譯軟體翻譯而成，而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章，讓使用者可以依其使用語言使用知識庫中的所有文章。但是，機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤，就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。如果您發現錯誤，並想要協助我們進行改善，請填寫本篇文章下方的問卷。</DIV></DIV>
<DIV class=articleProperty>
<TABLE>
<TBODY>
<TR>
<TD>文章編號</TD>
<TD>:</TD>
<TD>300867</TD></TR>
<TR>
<TD>上次校閱</TD>
<TD>:</TD>
<TD>2007年1月31日</TD></TR>
<TR>
<TD>版次</TD>
<TD>:</TD>
<TD>4.2</TD></TR></TBODY></TABLE></DIV>
<DIV class=section>
<H2 class=subTitle id=tocHeadRef>徵狀</H2>
<SCRIPT type=text/javascript>loadTOCNode(1, 'symptoms');</SCRIPT>

<DIV class=sbody>當您從透過 Web Proxy， 網頁要求憑證可能會收到下列錯誤訊息： 
<TABLE class="list ul">
<TBODY>
<TR>
<TD class=bullet>&#8226;</TD>
<TD class=text>
<DIV class=errormsg>您的要求失敗。 伺服器已處理您的要求時發生錯誤。 <BR><BR>如需進一步的協助請洽詢管理員。 </DIV>
<DIV class=errormsg>存取被拒。 0 x 80070005 5: WIN 32 () <BR>COM 錯誤資訊:: <BR>CCertRequest::Submit 存取遭到拒絕。 0 x 80070005 5: WIN 32 () <BR>LastStatus： <BR>操作已順利完成。 0 x 0 (0) <BR>建議發生的原因： <BR>憑證授權單位服務並未啟動。. <BR></DIV></TD></TR></TBODY></TABLE>
<P class=topOfPage><A href="http://support.microsoft.com/kb/300867/zh-tw#top"></A>&nbsp;</P></DIV>
<H2 class=subTitle id=tocHeadRef>發生的原因</H2>
<SCRIPT type=text/javascript>loadTOCNode(1, 'cause');</SCRIPT>

<DIV class=sbody>這個問題發生原因為 Web Proxy 服務是裝載在伺服器電腦帳戶已經無法得到授權以進行委派。 
<P class=topOfPage><A href="http://support.microsoft.com/kb/300867/zh-tw#top"></A>&nbsp;</P></DIV>
<H2 class=subTitle id=tocHeadRef>解決方案</H2>
<SCRIPT type=text/javascript>loadTOCNode(1, 'resolution');</SCRIPT>

<DIV class=sbody>如果要解決這個問題在網域控制站 (DC) 或工作站使用 Active Directory 系統管理工具安裝， 啟用 Web Proxy 的電腦帳戶以便進行委派： 
<TABLE class="list ol">
<TBODY>
<TR>
<TD class=number>1.</TD>
<TD class=text>以網域管理員或相等帳戶登入。</TD></TR>
<TR>
<TD class=number>2.</TD>
<TD class=text>按一下 [ 開始 ] 指向 [ 程式集 ] 、 指向， 系統管理工具 ] ， 然後按一下 [ Active Directory 使用者及電腦 ] 。</TD></TR>
<TR>
<TD class=number>3.</TD>
<TD class=text>在左窗格， 尋找容器或組織單位 (OU) 在您要啟用委派。</TD></TR>
<TR>
<TD class=number>4.</TD>
<TD class=text>以滑鼠右鍵按一下， 電腦帳戶名稱， 然後按一下 [ 內容 ] 。</TD></TR>
<TR>
<TD class=number>5.</TD>
<TD class=text>在 [ 一般 ] 索引標籤， 按一下 [ 信任電腦以便進行委派 。</TD></TR>
<TR>
<TD class=number>6.</TD>
<TD class=text>按一下 [ 確定 ] 。</TD></TR>
<TR>
<TD class=number>7.</TD>
<TD class=text>結束 「 Active Directory 使用者和電腦。</TD></TR></TBODY></TABLE>
<P class=topOfPage><A href="http://support.microsoft.com/kb/300867/zh-tw#top"></A>&nbsp;</P></DIV>
<H2 class=subTitle id=tocHeadRef>狀況說明</H2>
<SCRIPT type=text/javascript>loadTOCNode(1, 'status');</SCRIPT>

<DIV class=sbody>Microsoft 已確認本篇文章開頭所列之 Microsoft 產品確實有上述問題。. 
<P class=topOfPage><FONT class=header2>Windows 2003, IIS 6 伺服器憑證的安裝 </FONT><BR>&nbsp;<BR>當您收到WIS 匯智的郵件後，您就可以安裝並使用您的伺服器憑證了。將郵件中的憑證內容拷貝到一個純文字檔案中（包含-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----），存成一個cert.cer文件，如下圖所示：<BR>&nbsp;<BR><IMG height=278 src="/admin/edit/UploadFile/20071231173935896.jpg" width=372><BR>&nbsp;<BR><FONT class=header2>安裝憑證</FONT><BR>&nbsp;<BR>1. 打開Internet Service Manager 或者 Microsoft Management Console(MMC)找到IIS.<BR>&nbsp;<BR>2. 展開IIS，找到你計畫安裝憑證的網站.<BR>&nbsp;<BR>3. 右擊這個站點，選擇屬性.<BR>&nbsp;<BR>4. 按目錄安全性選項卡.<BR>&nbsp;<BR>5. 在安全通信下，按伺服器憑證 .<BR>&nbsp;<BR>6. 出現網站憑證導引，按 下一步.<BR>&nbsp;<BR>7. 選擇"處理擱置要求及安裝憑證",按 下一步.<BR>&nbsp;<BR>8. 選擇憑證檔所在的目錄，然後按 下一步.<BR>&nbsp