<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[]]></title>
  <subtitle type="html"><![CDATA[]]></subtitle>
  <id>http://www.2hand.cn/</id> 
  <link rel="alternate" type="text/html" href="http://www.2hand.cn/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.2hand.cn/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.4.1022">PJBlog2</generator> 
  <updated>2010-03-10T13:42:31+08:00</updated> 

  <entry>
	  <title type="html"><![CDATA[Gregarius的调试]]></title>
	  <author>
		 <name>Amic</name>
		 <uri>http://www.2hand.cn/</uri>
		 <email>amicacin@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.2hand.cn/default.asp?cateID=7" label="网络&amp;技术" /> 
	  <updated>2010-03-10T13:42:31+08:00</updated>
	  <published>2010-03-10T13:42:31+08:00</published>
		  <summary type="html"><![CDATA[<div>&nbsp;</div>
<div><font color="#000000">Gregarius</font>已经是一款相当成熟的RSS feed聚合器程序了，具备不错的用户体验，易于操作和管理。其&nbsp;特性如下：</div>
<div>&nbsp;</div>
<div>1. 支持 RDF, RSS, ATOM feeds 支持智能识别；</div>
<div>2. 基于浏览器Web端的前台浏览和后台管理；</div>
<div>3. 支持目录分类，支持标签系统，并运用了ajax技术；</div>
<div>4. 支持搜索；</div>
<div>5. 支持OPML；</div>
<div>6. 可显示favicon；</div>
<div>7. 支持已读未读分类和条目数量显示；</div>
<div>8. 具有多种主题样式，支持插件；</div>
<div>&nbsp;</div>
<div>gowers在Gregarius官网下载到了0.6.0版本，可惜这个版本还是对中文的支持程度很差，到处都有BUG&nbsp;，且gowers安装后，聚合的RSS中文全部为乱码。于是在网上找到了5.5的一个版本，安装后RSS聚合中文的乱码的BUG没有了，剩下的有几个小BUG，我自己解决了。具体解决的如下：</div>
<div>&nbsp;</div>
<div>1.日期乱码解决；</div>
<div>2.后台编辑中文FEED乱码解决；</div>
<div>3.解决5.5首页不出现页码的BUG；</div>
<div>4.解决页面载入速度慢的问题；</div>
<div>5.后台settings（设置）部分功能中文化，那样方便设置的时候了解其用途；</div>
<div>6.解决前台暴露管理登录地址和登录框的问题。</div>
<div>&nbsp;</div>
<div><b><span style="FONT-SIZE: medium">具体修改：</span></b></div>
<div>&nbsp;</div>
<div>1、日期乱码。Gregarius的中文日期若不经修改就乱码，包括更新时间乱码、当日FEED乱码。解决这个&nbsp;问题可以修改根目录下util.php文件的rss_locale_date方法就可以解决这个问题。将其下代码修改为&nbsp;</div>
<div>&nbsp;</div>
<blockquote>
<div>function rss_locale_date ($fmt, $ts, $addTZOffset = true) {</div>
<div>&nbsp;&nbsp; &nbsp;if (isset($_SERVER[&quot;WINDIR&quot;])) {</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//%e doesnt&rsquo; exists under windows!</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;$fmt=str_replace(&quot;%e&quot;,&quot;%#d&quot;,$fmt);</div>
<div>&nbsp;&nbsp; &nbsp;}</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp; &nbsp;if ($addTZOffset) {</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return iconv(&quot;UTF-8&quot;, &quot;utf-8&quot;, strftime($fmt, $ts +3600 * getConfig&nbsp;</div>
<div>(&lsquo;rss.config.tzoffset&rsquo;)));</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//return utf8_encode(strftime($fmt, $ts +3600 * getConfig&nbsp;</div>
<div>(&lsquo;rss.config.tzoffset&rsquo;)));</div>
<div>&nbsp;&nbsp; &nbsp;}</div>
<div>&nbsp;&nbsp; &nbsp;return iconv(&quot;UTF-8&quot;, &quot;utf-8&quot;, strftime($fmt, $ts));</div>
<div>&nbsp;&nbsp; &nbsp;//return utf8_encode(strftime($fmt, $ts));</div>
<div>}</div>
</blockquote>
<div>&nbsp;</div>
<div>2、后台编辑中文FEED乱码。Gregarius编辑feeds的时候，中文总是乱码，其实解决方法很简单的：找到admin/channels.php这个文件，找到第900行，修改为：</div>
<div>&nbsp;</div>
<blockquote>
<div>//$title = htmlentities($title,ENT_QUOTES);</div>
<div>$title = htmlspecialchars($title, ENT_QUOTES);</div>
</blockquote>
<div>&nbsp;</div>
<div>这个是feed标题乱码的修正，再向下翻到Description部分，大概在988行左右，修改为：</div>
<div>&nbsp;</div>
<blockquote>
<div>// Description</div>
<div>//$descr = trim(htmlentities(strip_tags($descr), ENT_QUOTES));</div>
<div>$descr = trim(htmlspecialchars(strip_tags($descr), ENT_QUOTES));</div>
</blockquote>
<div>&nbsp;</div>
<div>这样就ok了。原因很简单，就是htmlentities和htmlspecialchars函数的区别。htmlentities这个函数&nbsp;在转义到html标记的时候，会吧中文字符中一些字节也进行了转义，形成了乱码，而htmlspecialchars&nbsp;这个函数只转义特定的5个字符，不会存在这种情况。修改后，单引号和双引号都能输入了，但是反斜&nbsp;杠\仍然是不能输入的。</div>
<div>&nbsp;</div>
<div>3、解决5.5首页不出现页码的BUG。这个BUG是在根目录index.php中，我直接拿6.0的index.php覆盖解&nbsp;决。</div>
<div>&nbsp;</div>
<div>4、解决页面载入速度慢的问题。Gregarius在载入首页的时候，会同时载入你FEED中的内容，如果FEED&nbsp;全是文字倒好（这些东西都在你的数据库）；但如果载入的包含图片，那页面载入速度就很慢。gowers&nbsp;用一个简单的办法解决了，那就是修改主文件，让其在载入的时候仅载入标题，不载入内容。当你要看具体内容的时候，点击标题即可进入具体内容页面。以我现在用的lilina主题为例，具体修改如下：</div>
<div>&nbsp;</div>
<div>找到根目录\themes\lilina\web下面的item.php，删除标注//list mode : we only show titles那段代码下面的</div>
<div>&nbsp;</div>
<blockquote>
<div>&lt;div class=&quot;content&quot; id=&quot;c&lt;?php echo rss_item_id(); ?&gt;&quot;&gt;</div>
<div>&lt;?php echo rss_item_content(); ?&gt;</div>
<div>&lt;/div&gt;</div>
</blockquote>
<div>&nbsp;</div>
<div>千万不要注释，注释还是会运行的，只不过前端不显示。这个解决载入内容。下面要修改标题链接。原&nbsp;来的链接是一个JS调用，打开隐藏层。现在我们要将其修改成实体链接，并指向信息页。则找到根目录&nbsp;\themes\lilina\web下面的item.php，找到//list mode : we only show titles下面的&lt;h4&gt;&lt;a &nbsp;class=&quot;tlink&quot; 开头的代码，将其修改成</div>
<div>&nbsp;</div>
<blockquote>
<div>&lt;h4&gt;</div>
<div>&lt;a class=&quot;tlink&quot; title=&quot;&lt;?php echo rss_item_pl_title(); ?&gt;&quot; href=&quot;&lt;?php echo &nbsp;rss_item_pl_url(); ?&gt;&quot;&gt;</div>
<div>&lt;?php echo rss_item_title(); ?&gt;</div>
<div>&lt;/a&gt;</div>
<div>&lt;/h4&gt;&nbsp;</div>
</blockquote>
<div>&nbsp;</div>
<div>此外，将</div>
<div>&nbsp;</div>
<blockquote>
<div>&lt;a class=&quot;plink&quot; title=&quot;&lt;?php echo rss_item_pl_title(); ?&gt;&quot; href=&quot;&lt;?php echo &nbsp;rss_item_pl_url(); ?&gt;&quot;&gt;</div>
<div>&lt;img src=&quot;&lt;?php echo rss_theme_path(); ?&gt;/media/mark_on.gif&quot; alt=&quot;&lt;?php echo &nbsp;rss_item_pl_title(); ?&gt;&quot; /&gt;</div>
<div>&lt;/a&gt;</div>
</blockquote>
<div>&nbsp;</div>
<div>修改成</div>
<div>&nbsp;</div>
<blockquote>
<div>&lt;img src=&quot;&lt;?php echo rss_theme_path(); ?&gt;/media/mark_off.gif&quot; alt=&quot;&lt;?php echo &nbsp;rss_item_pl_title(); ?&gt;&quot; /&gt;</div>
</blockquote>
<div>&nbsp;</div>
<div>5、后台设置中文化的。这个直接修改的语言包，具体废话就不说了；</div>
<div>&nbsp;</div>
<div>6、解决前台暴露管理地址和登录框的BUG。</div>
<div>&nbsp;</div>
<blockquote>
<div>&nbsp;&nbsp; 1、去掉管理登录的链接的修改在导航中，即修改根目录下CLS目录的nav.php，找到其中的function &nbsp;Navigation()，删除类似这段 $this-&gt;appendNavItem(getPath().&rsquo;admin/&rsquo;,admin,LOCATION_ADMIN);</div>
<div>&nbsp;&nbsp; 2、去掉登录框。修改根目录\themes\lilina\web下面的index.php，注释或者删除掉&lt;?php echo &nbsp;rss_header_logininfo() ?&gt;即可。</div>
</blockquote>
<div>&nbsp;</div>
<div><b><span style="FONT-SIZE: medium">安装说明：</span></b></div>
<div>&nbsp;</div>
<div>1、将程序上传至你的服务器空间，运行http://your_gregarius_hosturl/install.php，将出现安装界面。然后按照要求填入你的数据库地址、数据库名、表名称、密码、表头、默认编码（UFT-8，不要修改），然后提交表单，安装即将完成</div>
<div>&nbsp;</div>
<div>2、登录管理界面，指定管理员名称、用户名和密码；</div>
<div>&nbsp;</div>
<div>3、安装已经完成了。</div>
<div>&nbsp;</div>
<div>4、安装后会在根目录下生成dbinit.php，注意不要删除。dbinit.php.sample是一个样本，你可以通过这个了解下dbinit.php的结构。</div>
<div>&nbsp;</div>
<div><b><span style="FONT-SIZE: medium">个性化修改：</span></b></div>
<div>&nbsp;</div>
<div>1、修改导航栏的链接：修改根目录下CLS目录的nav.php，找到其中的function Navigation()，修在下&nbsp;面添加或者修改 $this-&gt;appendNavItem(&lsquo;$url&rsquo;,$label,LOCATION_NAME);。依据我的修改为例，在导航中添加gowers的网记的链接，则在下面加入 $this-&gt;appendNavItem&nbsp;(&lsquo;http://www.gowers.cn&rsquo;,gowers,LOCATION_GOWERS);即可</div>
<div>&nbsp;</div>
<div>2、修改脚标：脚标的修改在主题文件中，如果你正在使用的主题文件没有&ldquo;footer.php&rdquo;文件，那若你需要修改脚标，请修改根目录下面的themes\default\web文件夹中的footer.php文件。</div>
<div>&nbsp;</div>
<div>3、修改header。header title的修改也在主题文件中，如果你正在使用的主题文件没有&ldquo;header.php&nbsp;&rdquo;文件，那若你需要修改header，请修改根目录下面的themes\default\web文件夹中的header.php文件&nbsp;。将其中的&lt;title&gt;&lt;?php echo rss_header_title() ?&gt; &lt;/title&gt;修改成你想要的。不过建议只在后面&nbsp;加个&ldquo;- 你的网站名称&rdquo;。此外在header中也可以加入favicon的LOGO。</div>
<div>&nbsp;</div>
<div><b><span style="FONT-SIZE: medium">已知未解决BUG</span></b></div>
<div>&nbsp;</div>
<div>1、分类中文乱码（6.0版本也存在这样的问题）。正在解决中&hellip;&hellip;</div>
<div>2、TAG中文前台输入乱码，后台输入不乱码（6.0版本也存在这样的问题）。正在解决中&hellip;&hellip;</div>
<div>3、其他的暂时还没发现</div>
<div>&nbsp;</div>
<div><b><span style="FONT-SIZE: medium">说明：</span></b></div>
<div>&nbsp;</div>
<div>1、update即更新功能，请让服务器自动执行。如果你的服务器支持LINUX命令或者PHP命令，可以让服务器每隔45分钟自动刷新下update.php；</div>
<div>2、如果不能自动更新，请手工更新，即点击导航栏上面的update。不过不要经常刷新，会增加服务器压力。</div>
<div>&nbsp;</div>
<div><b><span style="FONT-SIZE: medium">下载：</span></b></div>
<div>&nbsp;</div>
<blockquote>
<div>*<a href="http://sourceforge.net/project/showfiles.php?group_id=98845" target="_blank"><font color="#000000">官方下载</font></a> | <a href="http://www.fileqube.com/hl/usIfRCQp103104/Gregarius_by_gowers.rar" target="_blank"><font color="#000000">gowers修改版下载</font></a>（内核0.5.5，部分文件为0.6.0）</div>
<div>*MD5值：9B47C81322BED97C6A21CC164D01940C</div>
<div>*gowers提供的下载寄存在fileqube网络网盘上</div>
<div>&nbsp;</div>
<div>具体请参考 <a href="http://www.gowers.cn/blog/08563009161083.html">http://www.gowers.cn/blog/08563009161083.html</a></div>
</blockquote>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.2hand.cn/default.asp?id=615" /> 
	  <id>http://www.2hand.cn/default.asp?id=615</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[解决gregarius安装错误和写入数据库乱码问题的方法]]></title>
	  <author>
		 <name>Amic</name>
		 <uri>http://www.2hand.cn/</uri>
		 <email>amicacin@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.2hand.cn/default.asp?cateID=7" label="网络&amp;技术" /> 
	  <updated>2010-03-09T23:00:37+08:00</updated>
	  <published>2010-03-09T23:00:37+08:00</published>
		  <summary type="html"><![CDATA[<p>以下以问答形式来分享我解决Gregarius（版本：0.6.1）所遇到的方法吧。</p>
<p>备注：由于Gregarius 0.5.4及以下版本有SQL注入漏洞（<a href="http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73f7d838d44&lt;wbr&gt;38958448e4380c075a22a4e5&lt;wbr&gt;7b744019d0c57f6c00bb0c01&lt;wbr&gt;aaa63927775475e4db93cf0b&lt;wbr&gt;cabbe33f5e8830477b0bf645&lt;wbr&gt;05a31f&amp;p=8e3bc64ad29e06ff57ea9621&lt;wbr&gt;4a4c&amp;user=baidu">http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763<wbr></wbr>105392230e54f73f7d838d44<wbr></wbr>38958448e4380c075a22a4e5<wbr></wbr>7b744019d0c57f6c00bb0c01<wbr></wbr>aaa63927775475e4db93cf0b<wbr></wbr>cabbe33f5e8830477b0bf645<wbr></wbr>05a31f&amp;p=8e3bc64ad29e06ff57ea9621<wbr></wbr>4a4c&amp;user=baidu</a>），因此建议Gregarius用户下载0.5.5进行升级，或者直接升级到新版本0.6.1（2008年11月）。</p>
<p>&nbsp;<wbr></wbr></p>
<p><br /><strong>问题一：安装完Gregarius后，为什么在进行SQL查询时候总是出现&ldquo;不存在某表&rdquo;的错误？比如点击&ldquo;管理&rdquo;时出现如下提示：<br />&ldquo;Failed to execute the SQL query:<br />select uname,password from&nbsp;<wbr></wbr> rss_users&nbsp;<wbr></wbr> where ulevel=99<br />Error 1146: Table 'rss061ori.rss_users' doesn't exist&rdquo;</strong></p>
<p>&nbsp;<wbr></wbr></p>
<p><strong>错误原因：</strong>在MYSQL中，设定为文本（TEXT）的数据类型字段不允许有默认值（MySQL会提示错误：#1101 - BLOB/TEXT column 'tbl_name' can't have a default value）。而Gregarius的建表语句中出现了默认指定空值的TEXT字段（比如：userips TEXT default ''），从而导致无法建表或者建表不完全，最终出现查无此表的SQL错误。<br /><strong>解决方法：</strong>打开schema.php（请注意备份）。<br />把281行：<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>itemsincache text default NULL,<br />改为：<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>itemsincache text,<br />把309和310行：<br />&nbsp;<wbr></wbr> &nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>title text NOT NULL default '',<br />&nbsp;<wbr></wbr> &nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>url text NOT NULL default '',<br />改为：<br />&nbsp;<wbr></wbr> &nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>title text NOT NULL,<br />&nbsp;<wbr></wbr> &nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>url text NOT NULL,<br />把312行：<br />&nbsp;<wbr></wbr> &nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>obj text not NULL default '',<br />改为：<br />&nbsp;<wbr></wbr> &nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>obj text not NULL,<br />把499行：<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> guid text default NULL,<br />改为：<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> guid text,<br />把649行：<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> userips TEXT default '',&nbsp;<wbr></wbr><br />改为：<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> userips TEXT,&nbsp;<wbr></wbr></p>
<p>最后删除dbinit.php，重新进行安装即可。</p>
<p>&nbsp;<wbr></wbr></p>
<p><strong>问题二：为什么安装完成后，所有写入数据库的内容都是乱码（如图）？但是页面的显示又是正常？</strong></p>
<p><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=56b798f80100bpyy&amp;url=http://static1.photo.sina.com.cn/orignal/56b798f845e13850a9bc0" target="_blank"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/201039230722502.jpg" border="0" /> </a></p>
<p><strong><em>重要提醒：使用了该方法后，某些rss的条目入库将出现错误。如新浪blog的rss，将提示：</em></strong></p>
<p><strong><em>Error 1366: Incorrect string value: '\xEF\xBC<br />此问题和编码问题有关（</em></strong><a href="http://initiative.yo2.cn/archives/634636"><strong><em>http://initiative.yo2.cn/archives/634636</em></strong></a><strong><em>；锟斤拷锟斤拷 - 经典Unicode乱码）。目前暂无解决方法，因此，若能正常显示的话，就不要进行修改。</em></strong></p>
<p>&nbsp;<wbr></wbr></p>
<p><strong>问题原因：</strong>这个问题确实困扰很多国内的Gregarius使用用户。如果以后不进行数据库迁移，那还好；但一旦需要导出Gregarius的数据库数据作为备份，看着导出来的SQL文件N处地方都是乱码，并且后来又死活无法导入进去的时候，真是欲哭无泪啊。</p>
<p><br />这个问题涉及MYSQL数据库的字符集问题。根据文章《【保証成功】的 mysql 中文亂碼解決方案》（<a href="http://ria.richtechmedia.com/2005/12/19/%e3%80%90%e4%bf%9d%e8%a8%bc%e6%88%90%e5%8a%9f%e3%80%91%e7%9a%84-mysql-%e4%b8%ad%e6%96%87%e4%ba%82%e7%a2%bc%e8%a7%a3%e6%b1%ba%e6%96%b9%e6%a1%88/">http://ria.richtechmedia.com/2005/12/19/%e3%80%90%e4%bf%9d%e8%a8%bc%e6%88%90%e5%8a%9f%e3%80%91%e7%9a%84-mysql-%e4%b8%ad%e6%96%87%e4%ba%82%e7%a2%bc%e8%a7%a3%e6%b1%ba%e6%96%b9%e6%a1%88/</a>）中提到的观点，大多数的编程人员是自己写PHP库文件来连接MYSQL，而不管my.ini中client中关于连接时候使用哪个字符集的设置&mdash;&mdash;而这就恰好导致了PHP程序不使用UTF8而使用默认的latin1字符集连接MYSQL，导致写入数据库的文字乱码（但为什么显示又正常，我也在研究中）。</p>
<p><br />Gregarius 0.5.5的版本中出现了一个&ldquo;沙滩凉鞋&rdquo;高手（他的blog：<a href="http://www.quchao.com/">http://www.quchao.com/</a>）修改的版本（下载地址：<a href="http://www.downkr.com/soft/1523.html">http://www.downkr.com/soft/1523.html</a>），解决了部分空间乱码的问题。其实这个版本修改得较多的也正是限定PHP连接MYSQL和SQL建表的时候所使用的字符集编码（在安装时候可让用户自由指定，默认UTF8）。不过我觉得这个修改还是有点繁琐了，既然程序都用UTF8编写了，那么就无必要交由用户自由选择（除非用户另有需求，否则用户指定了非utf8编码，可能出现更多的问题也说不定），还不如我提供的解决方法，直接在连接的时候指定Mysql必须使用UTF8进行连接。</p>
<p>&nbsp;<wbr></wbr></p>
<p><strong>解决方法：</strong>打开\cls\db\db.mysql.php（注意备份）。找到<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>if(!$this -&gt; resource) {<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> die( &quot;&lt;h1&gt;Error connecting to the database!&lt;/h1&gt;\n&quot;<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> .&quot;&lt;p&gt;Have you edited dbinit.php and correctly defined &quot;<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> .&quot;the database username and password?&lt;/p&gt;\n&quot; );&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>}<br />在下面添加：<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>mysql_query(&quot;set names 'utf8'&quot;);<br />（部分可能需要把utf8写成utf-8才行）。保存并且上传覆盖。</p>
<p><br /><strong>注意：</strong><br />1、该方法会导致已有的所有源/条目/组都是乱码。你可能需要重新安装。<br />2、使用了该方法后，某些rss的条目入库将出现错误。如新浪blog的rss，将提示：<br />Error 1366: Incorrect string value: '\xEF\xBC<br />此问题和编码问题有关（<a href="http://initiative.yo2.cn/archives/634636">http://initiative.yo2.cn/archives/634636</a>；锟斤拷锟斤拷 - 经典Unicode乱码）。目前暂无解决方法，因此，若能正常显示的话，就不要进行修改。</p>
<p>&nbsp;<wbr></wbr></p>
<p>&nbsp;<wbr></wbr></p>
<p><strong>其他问题（如日期乱码，后台编辑中文FEED时乱码）的修改请参看如下博客文章，这里就不重复了：<br /></strong><a href="http://www.gowers.cn/blog/08563009161083.html">http://www.gowers.cn/blog/08563009161083.html</a><br /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.2hand.cn/default.asp?id=614" /> 
	  <id>http://www.2hand.cn/default.asp?id=614</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[最佳RSS新闻阅读器]]></title>
	  <author>
		 <name>Amic</name>
		 <uri>http://www.2hand.cn/</uri>
		 <email>amicacin@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.2hand.cn/default.asp?cateID=7" label="网络&amp;技术" /> 
	  <updated>2010-03-09T00:17:20+08:00</updated>
	  <published>2010-03-09T00:17:20+08:00</published>
		  <summary type="html"><![CDATA[在博客和在线新闻充斥的互联网上，大量信息已经使得用户阅读量过载，幸运的是，通过RSS Feed提供的聚合功能，人们可以使用阅读器轻松跟踪订阅的更新，这里是用户选出的五个最常用的RSS阅读器软件。
<p>　　<strong>Google Reader (基于Web)</strong></p>
<p>　　自从Google月2006年底推出了<a href="http://www.google.com/reader/view/" target="_blank"><font color="#4e0a13">Google Reader</font></a>之后，其令人印象深刻的速度和可用性就吸引了大批用户，使用Google Reader最明显的好处就是，无论用户在那台电脑上使用，看到的Feed都是相同的界面，对于项目的已读、未读、标签都是一致的，除此以外，Google Reader还具有强大的键盘快捷键、搜索和标签功能。总的来说，Google Reader提供了你所需要的一切功能。</p>
<p>　　<strong>NetVibes (基于Web)</strong></p>
<p style="TEXT-ALIGN: center"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/201039017055678.jpg" border="0" /> </p>
<p>　　<a href="http://www.netvibes.com/" target="_blank"><font color="#4e0a13">NetVibes</font></a>是一个可定制的聚合RSS Feed的网站，不过，不少NetVibes认为这个Web应用的一大缺点是不能容纳大量的Feed，幸运的是，该网站的可定制性以及大量可用的工具帮助用户克服了其在RSS阅读上的可扩展性。</p>
<p>　　<strong>NetNewsWire (Mac OS X)</strong></p>
<p style="TEXT-ALIGN: center"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/201039017039783.jpg" border="0" /> </p>
<p>　　<a href="http://www.newsgator.com/Individuals/NetNewsWire/default.aspx" target="_blank"><font color="#4e0a13">NetNewsWire</font></a>是基于Mac的免费桌面软件，可以将网络上的RSS内容下载到本地，这意味着比Web应用有更快的性能和离线Feed处理，NetNewsWire最好和最独特的功能是它的智能列表功能，它像iTunes的智能播放列表一样，针对特殊的作者和内容使用特别的阅读，使用户不会错过重要内容，缺点是用户无法在线使用，需要安装软件，不能直接使用浏览器访问。</p>
<p>　　<strong>FeedDemon (Windows)</strong></p>
<p style="TEXT-ALIGN: center"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/201039017011522.jpg" border="0" /> </p>
<p>　　<a href="http://www.newsgator.com/Individuals/FeedDemon/Default.aspx" target="_blank"><font color="#4e0a13">FeedDemon</font></a>是基于Windows的免费软件，属于Newsgator，和NetNewsWire类似，不过该软件提供和Newsgator同步的功能，除此以外，FeedDemon和Newsgator是两个完全不同的RSS阅读器。</p>
<p>　　<strong>Sage (Firefox)</strong></p>
<p style="TEXT-ALIGN: center"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/201039017089621.jpg" border="0" /> </p>
<p>　　<a href="http://sage.mozdev.org/" target="_blank"><font color="#670e1a">Sage</font></a>是火狐的一个轻量级RSS阅读扩展，具有RSS阅读器最基本的功能。很多人都喜欢它和Firefox的无缝集成，并且性能不错。</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.2hand.cn/default.asp?id=613" /> 
	  <id>http://www.2hand.cn/default.asp?id=613</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[如何写robots.txt？ ]]></title>
	  <author>
		 <name>Amic</name>
		 <uri>http://www.2hand.cn/</uri>
		 <email>amicacin@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.2hand.cn/default.asp?cateID=7" label="网络&amp;技术" /> 
	  <updated>2010-03-08T01:55:26+08:00</updated>
	  <published>2010-03-08T01:55:26+08:00</published>
		  <summary type="html"><![CDATA[<p>在国内，网站管理者似乎对robots.txt并没有引起多大重视，应一些朋友之请求，今天想通过这篇文章来简单谈一下robots.txt的写作。</p>
<p><span id="more-45"></span></p>
<p><strong>robots.txt基本介绍</strong></p>
<p>robots.txt是一个纯文本文件，在这个文件中网站管理者可以声明该网站中不想被robots访问的部分，或者指定搜索引擎只收录指定的内容。</p>
<p>当一个搜索机器人（有的叫搜索蜘蛛）访问一个站点时，它会首先检查该站点根目录下是否存在robots.txt，如果存在，搜索机器人就会按照该文件中的内容来确定访问的范围；如果该文件不存在，那么搜索机器人就沿着链接抓取。</p>
<p>另外，robots.txt必须放置在一个站点的根目录下，而且文件名必须全部小写。</p>
<p><strong>robots.txt写作语法</strong></p>
<p>首先，我们来看一个robots.txt范例：http://www.seovip.cn/robots.txt</p>
<p>访问以上具体地址，我们可以看到robots.txt的具体内容如下：</p>
<p><em># Robots.txt file from </em><em>http://www.seovip.cn</em><br /><em># All robots will spider the domain</em></p>
<p><em>User-agent: *<br />Disallow:</em></p>
<p>以上文本表达的意思是允许所有的搜索机器人访问<a href="http://www.seovip.cn/">www.seovip.cn</a>站点下的所有文件。</p>
<p>具体语法分析：其中#后面文字为说明信息；<em>User-agent:</em>后面为搜索机器人的名称，后面如果是<em>*，</em>则泛指所有的搜索机器人；<em>Disallow:</em>后面为不允许访问的文件目录。</p>
<p>下面，我将列举一些robots.txt的具体用法：</p>
<p><strong>允许所有的robot访问</strong></p>
<p><em>User-agent: *<br />Disallow:</em></p>
<p>或者也可以建一个空文件 &quot;/robots.txt&quot; file</p>
<p><strong>禁止所有搜索引擎访问网站的任何部分</strong></p>
<p><em>User-agent: *<br />Disallow: /</em></p>
<p><strong>禁止所有搜索引擎访问网站的几个部分（下例中的01、02、03目录）</strong></p>
<p>User-agent: *<br />Disallow: /01/<br />Disallow: /02/<br />Disallow: /03/</p>
<p><strong>禁止某个搜索引擎的访问（下例中的BadBot）</strong></p>
<p><em>User-agent: BadBot<br />Disallow: /</em></p>
<p><strong>只允许某个搜索引擎的访问（下例中的Crawler）</strong></p>
<p><em>User-agent: Crawler<br />Disallow:</em></p>
<p><em>User-agent: *<br />Disallow: /</em></p>
<p><strong>另外，我觉得有必要进行拓展说明，对robots meta进行一些介绍：</strong></p>
<p>Robots META标签则主要是针对一个个具体的页面。和其他的META标签（如使用的语言、页面的描述、关键词等）一样，Robots META标签也是放在页面的＜head＞＜/head＞中，专门用来告诉搜索引擎ROBOTS如何抓取该页的内容。</p>
<p><strong>Robots META标签的写法：</strong></p>
<p>Robots META标签中没有大小写之分，name=&rdquo;Robots&rdquo;表示所有的搜索引擎，可以针对某个具体搜索引擎写为name=&rdquo;BaiduSpider&rdquo;。 content部分有四个指令选项：index、noindex、follow、nofollow，指令间以&ldquo;,&rdquo;分隔。</p>
<p>INDEX 指令告诉搜索机器人抓取该页面；</p>
<p>FOLLOW 指令表示搜索机器人可以沿着该页面上的链接继续抓取下去；</p>
<p>Robots Meta标签的缺省值是INDEX和FOLLOW，只有inktomi除外，对于它，缺省值是INDEX,NOFOLLOW。</p>
<p>这样，一共有四种组合：</p>
<p>＜META NAME=&quot;ROBOTS&quot; CONTENT=&quot;INDEX,FOLLOW&quot;＞<br />＜META NAME=&quot;ROBOTS&quot; CONTENT=&quot;NOINDEX,FOLLOW&quot;＞<br />＜META NAME=&quot;ROBOTS&quot; CONTENT=&quot;INDEX,NOFOLLOW&quot;＞<br />＜META NAME=&quot;ROBOTS&quot; CONTENT=&quot;NOINDEX,NOFOLLOW&quot;＞</p>
<p>其中</p>
<p>＜META NAME=&quot;ROBOTS&quot; CONTENT=&quot;INDEX,FOLLOW&quot;＞可以写成＜META NAME=&quot;ROBOTS&quot; CONTENT=&quot;ALL&quot;＞；</p>
<p>＜META NAME=&quot;ROBOTS&quot; CONTENT=&quot;NOINDEX,NOFOLLOW&quot;＞可以写成＜META NAME=&quot;ROBOTS&quot; CONTENT=&quot;NONE&quot;＞</p>
<p>目前看来，绝大多数的搜索引擎机器人都遵守robots.txt的规则，而对于Robots META标签，目前支持的并不多，但是正在逐渐增加，如著名搜索引擎GOOGLE就完全支持，而且GOOGLE还增加了一个指令&ldquo;archive&rdquo;，可以限制GOOGLE是否保留网页快照。例如：</p>
<p>＜META NAME=&quot;googlebot&quot; CONTENT=&quot;index,follow,noarchive&quot;＞</p>
<p>表示抓取该站点中页面并沿着页面中链接抓取，但是不在GOOLGE上保留该页面的网页快照。</p>
<p><em>特别说明，本文章的写作参考了一些网络信息，robin只是按照自己的思路对信息进行整理。</em></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.2hand.cn/default.asp?id=612" /> 
	  <id>http://www.2hand.cn/default.asp?id=612</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[PHP采集程序大全]]></title>
	  <author>
		 <name>Amic</name>
		 <uri>http://www.2hand.cn/</uri>
		 <email>amicacin@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.2hand.cn/default.asp?cateID=7" label="网络&amp;技术" /> 
	  <updated>2010-03-07T18:18:52+08:00</updated>
	  <published>2010-03-07T18:18:52+08:00</published>
		  <summary type="html"><![CDATA[思路：<br /><br />　　采集<u><strong>程序</strong></u>的思路很简单大体可以分为以下几个步骤：<br />&nbsp; &nbsp;　1.获取远程文件源代码（file_get_contents或用fopen）.<br />&nbsp; &nbsp;&nbsp; &nbsp; 2.分析代码得到自己想要的内容（这里用正规匹配，一般是得到分页）。<br />　　3.跟根得到的内容进行下载入库等操作。<br /><br />在这里第二步有可能要重复的操作好几次，比如说要先分析一下分页地址，在分析一下内页的内容才能取得我们想要的东西。<br /><br />代码：<br /><br />记的以前发部过部分的代码今天我在这里在简单的发部一下
<div class="blockcode"><span class="headactions">复制<span class="t_tag" href="http://bbs.phpchina.com/tag.php?name=PHP"><u><strong>PHP</strong></u></span>内容到剪贴板</span>PHP代码:<font face="NSimsun"><span style="COLOR: rgb(0,119,0)">@</span><span style="COLOR: rgb(0,0,187)">$nl</span><span style="COLOR: rgb(0,119,0)">=</span><span style="COLOR: rgb(0,0,187)">file_get_contents</span><span style="COLOR: rgb(0,119,0)">(</span><span style="COLOR: rgb(0,0,187)">$rs</span><span style="COLOR: rgb(0,119,0)">[</span><span style="COLOR: rgb(221,0,0)">'url'</span><span style="COLOR: rgb(0,119,0)">]);</span></font><font face="NSimsun"><span style="COLOR: rgb(255,128,0)">//抓取远程内容<br /></span><span style="COLOR: rgb(0,0,187)">preg_match_all</span><span style="COLOR: rgb(0,119,0)">(</span><span style="COLOR: rgb(221,0,0)">&quot;/var&nbsp;url&nbsp;=&nbsp;\&quot;gameswf\/(.*?)\.swf\&quot;;/is&quot;</span><span style="COLOR: rgb(0,119,0)">,</span><span style="COLOR: rgb(0,0,187)">$nl</span><span style="COLOR: rgb(0,119,0)">,</span><span style="COLOR: rgb(0,0,187)">$connect</span><span style="COLOR: rgb(0,119,0)">);</span></font><font face="NSimsun"><span style="COLOR: rgb(255,128,0)">//进行正规匹配取得自己要的内容<br /></span><span style="COLOR: rgb(0,0,187)"><span class="t_tag" href="http://bbs.phpchina.com/tag.php?name=mysql"><u><strong>mysql</strong></u></span>_query</span><span style="COLOR: rgb(0,119,0)">(</span><span style="COLOR: rgb(221,0,0)">&quot;insert&nbsp;......插入<span class="t_tag" href="http://bbs.phpchina.com/tag.php?name=%CA%FD%BE%DD%BF%E2"><u><strong>数据库</strong></u></span>部分&quot;</span><span style="COLOR: rgb(0,119,0)">);</span><span style="COLOR: rgb(0,0,187)"></span><br /><br /></font></div>
上面的代码就是所有采集要用到的代码了，当然大家也可以用fope来作，我个人喜欢用file_get_contents。<br /><br />下面在共享一下我的下载图片flash到本地的办法，太简单了两行代码
<div class="blockcode"><span class="headactions">复制PHP内容到剪贴板</span>PHP代码:<font face="NSimsun"><span style="COLOR: rgb(0,119,0)">if(@</span><span style="COLOR: rgb(0,0,187)">copy</span><span style="COLOR: rgb(0,119,0)">(</span><span style="COLOR: rgb(0,0,187)">$url</span><span style="COLOR: rgb(0,119,0)">,</span><span style="COLOR: rgb(0,0,187)">$newurl</span></font><font face="NSimsun"><span style="COLOR: rgb(0,119,0)">)){<br />echo&nbsp;</span><span style="COLOR: rgb(221,0,0)">'ok'</span></font><font face="NSimsun"><span style="COLOR: rgb(0,119,0)">;<br />}</span><span style="COLOR: rgb(0,0,187)"></span><br /><br /></font></div>
在论坛上以前还发过一个<u><strong>图片</strong></u>下载<span class="t_tag" href="http://bbs.phpchina.com/tag.php?name=%BA%AF%CA%FD"><u><strong>函数</strong></u></span>这会也放上来给大家
<div class="blockcode"><span class="headactions">复制PHP内容到剪贴板</span>PHP代码:<font face="NSimsun"><span style="COLOR: rgb(255,128,0)">/*本存图片函数*/<br /></span><span style="COLOR: rgb(0,119,0)">function&nbsp;</span><span style="COLOR: rgb(0,0,187)">getimg</span><span style="COLOR: rgb(0,119,0)">(</span><span style="COLOR: rgb(0,0,187)">$url</span><span style="COLOR: rgb(0,119,0)">,</span><span style="COLOR: rgb(0,0,187)">$filename</span></font><span style="COLOR: rgb(0,119,0)"><font face="NSimsun">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><font face="NSimsun"><span style="COLOR: rgb(255,128,0)">/*判断图片的url是否为空，如果为空停止函数*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: rgb(0,119,0)">if(</span><span style="COLOR: rgb(0,0,187)">$url</span><span style="COLOR: rgb(0,119,0)">==</span><span style="COLOR: rgb(221,0,0)">&quot;&quot;</span></font><font face="NSimsun"><span style="COLOR: rgb(0,119,0)">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="COLOR: rgb(0,0,187)">false</span></font><span style="COLOR: rgb(0,119,0)"><font face="NSimsun">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><font face="NSimsun"><span style="COLOR: rgb(255,128,0)">/*取得图片的扩展名，存入变量$ext中*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: rgb(0,0,187)">$ext</span><span style="COLOR: rgb(0,119,0)">=</span><span style="COLOR: rgb(0,0,187)">strrchr</span><span style="COLOR: rgb(0,119,0)">(</span><span style="COLOR: rgb(0,0,187)">$url</span><span style="COLOR: rgb(0,119,0)">,</span><span style="COLOR: rgb(221,0,0)">&quot;.&quot;</span></font><span style="COLOR: rgb(0,119,0)"><font face="NSimsun">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><font face="NSimsun"><span style="COLOR: rgb(255,128,0)">/*判断是否是合法的图片文件*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: rgb(0,119,0)">if(</span><span style="COLOR: rgb(0,0,187)">$ext</span><span style="COLOR: rgb(0,119,0)">!=</span><span style="COLOR: rgb(221,0,0)">&quot;.gif&quot;&nbsp;</span><span style="COLOR: rgb(0,119,0)">&amp;&amp;&nbsp;</span><span style="COLOR: rgb(0,0,187)">$ext</span><span style="COLOR: rgb(0,119,0)">!=</span><span style="COLOR: rgb(221,0,0)">&quot;.jpg&quot;</span></font><font face="NSimsun"><span style="COLOR: rgb(0,119,0)">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="COLOR: rgb(0,0,187)">false</span></font><span style="COLOR: rgb(0,119,0)"><font face="NSimsun">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><font face="NSimsun"><span style="COLOR: rgb(255,128,0)">/*读取图片*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: rgb(0,0,187)">$img</span><span style="COLOR: rgb(0,119,0)">=</span><span style="COLOR: rgb(0,0,187)">file_get_contents</span><span style="COLOR: rgb(0,119,0)">(</span><span style="COLOR: rgb(0,0,187)">$url</span></font><span style="COLOR: rgb(0,119,0)"><font face="NSimsun">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><font face="NSimsun"><span style="COLOR: rgb(255,128,0)">/*打开指定的文件*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: rgb(0,0,187)">$fp</span><span style="COLOR: rgb(0,119,0)">=@</span><span style="COLOR: rgb(0,0,187)">fopen</span><span style="COLOR: rgb(0,119,0)">(</span><span style="COLOR: rgb(0,0,187)">$filename</span><span style="COLOR: rgb(0,119,0)">.</span><span style="COLOR: rgb(0,0,187)">$ext</span><span style="COLOR: rgb(0,119,0)">,</span><span style="COLOR: rgb(221,0,0)">&quot;a&quot;</span></font><span style="COLOR: rgb(0,119,0)"><font face="NSimsun">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><font face="NSimsun"><span style="COLOR: rgb(255,128,0)">/*写入图片到指点的文件*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: rgb(0,0,187)">fwrite</span><span style="COLOR: rgb(0,119,0)">(</span><span style="COLOR: rgb(0,0,187)">$fp</span><span style="COLOR: rgb(0,119,0)">,</span><span style="COLOR: rgb(0,0,187)">$img</span></font><span style="COLOR: rgb(0,119,0)"><font face="NSimsun">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><font face="NSimsun"><span style="COLOR: rgb(255,128,0)">/*关闭文件*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: rgb(0,0,187)">fclose</span><span style="COLOR: rgb(0,119,0)">(</span><span style="COLOR: rgb(0,0,187)">$fp</span></font><span style="COLOR: rgb(0,119,0)"><font face="NSimsun">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><font face="NSimsun"><span style="COLOR: rgb(255,128,0)">/*返回图片的新文件名*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: rgb(0,119,0)">return&nbsp;</span><span style="COLOR: rgb(0,0,187)">$filename</span><span style="COLOR: rgb(0,119,0)">.</span><span style="COLOR: rgb(0,0,187)">$ext</span></font><font face="NSimsun"><span style="COLOR: rgb(0,119,0)">;<br />}</span><span style="COLOR: rgb(0,0,187)"></span><br /><br /></font></div>
共享一下个人的采集心德：<br /><br />1.不采那些作防盗链了的站，其实可以作假来路但是这样的站采集成本太高<br /><br />2.采集尽量快的站，最好在本地进行采集<br /><br />3.采集时有很多时候可以先把一部分数据存入数据库，等以后进行下一步的处理。<br /><br />4.采集的时候一定要作好出错处理，我一般都是如果采集三次没有成功就跳过。以前经常就因为一条内容不能采就卡在那里一直的采。<br /><br />5.入库前一定要作好判断，检查内容的合法，过滤不必要的字符串。<br />
<div class="box postattachlist">
<p>思路图一</p>
<p>&nbsp;</p>
<div style="CURSOR: pointer; POSITION: relative"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103718184721507.gif" border="0" /> <img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103718184870552.gif" border="0" /> </div>
<p>&nbsp;</p>
</div>
<p>思路二</p>
<p>&nbsp;</p>
<div style="CURSOR: pointer; POSITION: relative"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103718184721507.gif" border="0" /> <img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103718184839692.gif" border="0" /> </div>
<p>&nbsp;</p>
<p>思路三</p>
<p>&nbsp;</p>
<div style="CURSOR: pointer; POSITION: relative"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103718184840539.gif" border="0" /> <img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103718184843343.gif" border="0" /> </div>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.2hand.cn/default.asp?id=611" /> 
	  <id>http://www.2hand.cn/default.asp?id=611</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[我遇到的&#34;服务器应用程序不可用&#34;不可用问题以及解决办法 ]]></title>
	  <author>
		 <name>Amic</name>
		 <uri>http://www.2hand.cn/</uri>
		 <email>amicacin@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.2hand.cn/default.asp?cateID=7" label="网络&amp;技术" /> 
	  <updated>2010-03-07T00:57:43+08:00</updated>
	  <published>2010-03-07T00:57:43+08:00</published>
		  <summary type="html"><![CDATA[今天将程序从测试环境的ASP.NET Development Server中移植到了IIS上，发现报出了&ldquo;服务器应用程序不可用&rdquo;的问题，在这里先声明一下我的环境是WINDOWSXP+IIS5.1+ASP.NET1.1+ASP.NET2.0 。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于是动手google了一把，发现了类似的情况很多，但是总结下来都是一样的，基本就是对于WINDOWS2003的解决办法，对于XP的很少提及，就算是有人问了，好像也没有什么人回答。没办法，遇到问题总是要解决的，重装不总是万能药。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先试了试IIS里面设计运行库的设置，换成2.0的库后，出现了编辑配置选项，包括身份验证和程序配置的一些选项，改来改去都没有什么效果。有些灰心了，是不是我的IIS真的坏了？但是由于机器装了RS，用的同样是IIS＋2.0，却没有出现这个问题，使我相信肯定是我的配置出了问题。再去其他人机器上试试，都没有问题。想来想去，好像不一样的地方只有目录不同，难道换个目录就可以了？于是立即将PRECOMPLIEDWEB目录下的内容拷出来，首先放到wwwroot下面，创建虚拟目录，果然不出所料没有再报错。再放到C盘下试试，也没有问题，又放回原先的目录再试，又不行了。那我现在知道了，应该是访问权限的问题，于是将目录的权限放给everyone，完全控制。再创建虚拟目录，竟然可以了，哈哈，总算找到原因了。但是这样还是不行，还不知道到底需要的是什么用户，于是先把everyone删除掉，先后添加了IWAM_XXX和IUSR_XXX好像都不行，再试试users组，结果成功了。至此就解决了在XP＋2.0下面&ldquo;服务器应用程序不可用&rdquo;不可用的问题，但是比较奇怪的是为什么报出的错误竟然是这个，有待以后研究了。
<div id="digg_block">
<div id="author_profile">&nbsp;</div>
<div id="div_digg">
<div class="diggit" onclick="DiggIt(458596,11834,1)">&nbsp;</div>
</div>
</div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.2hand.cn/default.asp?id=610" /> 
	  <id>http://www.2hand.cn/default.asp?id=610</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[UCenter Home设置GMAIL邮箱验证的方法]]></title>
	  <author>
		 <name>Amic</name>
		 <uri>http://www.2hand.cn/</uri>
		 <email>amicacin@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.2hand.cn/default.asp?cateID=7" label="网络&amp;技术" /> 
	  <updated>2010-03-06T20:57:53+08:00</updated>
	  <published>2010-03-06T20:57:53+08:00</published>
		  <summary type="html"><![CDATA[<div class="Content-body" id="logPanel">首先要了解几个概念<br />SMTP：发送邮件的服务器<br />GOOGLE的<span style="COLOR: blue">SMTP</span>是（包括GOOGLE的应用套件）：<br />
<div class="UBBPanel">
<div class="UBBTitle"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620573996247.gif" border="0" /> 程序代码</div>
<div class="UBBContent" id="code63583">smtp.gmail.com</div>
</div>
<br /><br />GOOGLE的SMTP端口：<br />
<div class="UBBPanel">
<div class="UBBTitle"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620573996247.gif" border="0" /> 程序代码</div>
<div class="UBBContent" id="code34743"><span style="COLOR: red">465</span></div>
</div>
<br /><br /><strong>UCenter Home</strong> 自身不支持SSL加密连接，需要修改网站目录中 <span style="COLOR: red">source</span> 文件夹里的 <span style="COLOR: red">function_sendmail.php</span> 文件<br />找到<br />
<div class="UBBPanel">
<div class="UBBTitle"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620573996247.gif" border="0" /> 程序代码</div>
<div class="UBBContent" id="code21262">if(!$fp = fsockopen($mail['server'], $mail['port'], $errno, $errstr, 30)) {</div>
</div>
<br />修改成<br />
<div class="UBBPanel">
<div class="UBBTitle"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620573996247.gif" border="0" /> 程序代码</div>
<div class="UBBContent" id="code35147">if(!$fp = fsockopen(<span style="COLOR: red">&quot;ssl://&quot;.</span>$mail['server'], $mail['port'], $errno, $errstr, 30)) {</div>
</div>
<br /><br /><span style="COLOR: blue"><strong>另外PHP必须开启OPENSSL模块才可以</strong></span><br />开启方法见：<a href="http://www.od6d.com/article.asp?id=122" target="_blank" rel="external">开启IIS服务器的OPENSSL模块功能</a><br /><br />上述修改完成后就可以在 <strong>UCenter Home</strong> 后台配置&ldquo;邮件设置&rdquo;了<br />如图：<br /><a class="highslide" title="点击放大图片" onclick="return hs.expand(this)" href="http://www.2hand.cn/fckeditor/editor/attachments/month_1003/20103620573967560.jpg" getparams="null"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620573967560.jpg" border="0" /> </a><br /></div>
<br />]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.2hand.cn/default.asp?id=609" /> 
	  <id>http://www.2hand.cn/default.asp?id=609</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[[资料]WIN2003开匿名共享的方法]]></title>
	  <author>
		 <name>Amic</name>
		 <uri>http://www.2hand.cn/</uri>
		 <email>amicacin@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.2hand.cn/default.asp?cateID=7" label="网络&amp;技术" /> 
	  <updated>2010-03-06T20:51:03+08:00</updated>
	  <published>2010-03-06T20:51:03+08:00</published>
		  <summary type="html"><![CDATA[<div class="Content-body" id="logPanel">好多技术员不知道如何在2003上开匿名共享，就是不需要输入账户名和密码的网络共享。<br /><br />要开匿名共享请按照如下步骤操作：<br /><br /><strong>1.开启GUEST账户，并留空GUEST账户密码</strong><br /><a class="highslide" title="点击放大图片" onclick="return hs.expand(this)" href="http://www.2hand.cn/attachments/month_1003\20103620504710749.jpg" getparams="null"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620504710749.jpg" border="0" /> </a><br /><strong>2.创建共享，并设置<span style="COLOR: blue">共享文件夹权限</span></strong><br /><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620504783543.jpg" border="0" /> <br /><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620504854761.jpg" border="0" /> <br />根据需要设置只读和可写权限<br /><strong>3.修改共享文件夹得&ldquo;安全&rdquo;标签中的权限</strong><br /><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620504883253.jpg" border="0" /> <br />点&ldquo;添加&rdquo;输入&ldquo;everyone&rdquo;，然后点[确定]<br /><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620504856798.jpg" border="0" /> <br /><strong>4.打开&ldquo;控制面板&rdquo;中的&ldquo;管理工具&rdquo;选&ldquo;本地安全策略&rdquo;中的&ldquo;本地策略&rdquo;-&ldquo;安全选项&rdquo;</strong><br /><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620504860317.jpg" border="0" /> <br />修改&ldquo;网络访问-本地账户的共享和安全模式&rdquo;为&ldquo;今来宾-本地用户以来宾身份验证&rdquo;<br /><a class="highslide" title="点击放大图片" onclick="return hs.expand(this)" href="http://www.2hand.cn/attachments/month_1003\20103620504814112.jpg" getparams="null"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620504814112.jpg" border="0" /> </a><br /><strong>5.继续修改&ldquo;网络访问-让&lsquo;每个人&rsquo;(Everyone)权限应用于匿名用户&rdquo;为&ldquo;已启用&rdquo;</strong><br /><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/20103620504819328.jpg" border="0" /> <br /><br />完成上述5步就可匿名共享就算开启成功了。 </div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.2hand.cn/default.asp?id=608" /> 
	  <id>http://www.2hand.cn/default.asp?id=608</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[开启IIS服务器的OPENSSL模块功能]]></title>
	  <author>
		 <name>Amic</name>
		 <uri>http://www.2hand.cn/</uri>
		 <email>amicacin@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.2hand.cn/default.asp?cateID=7" label="网络&amp;技术" /> 
	  <updated>2010-03-06T20:46:23+08:00</updated>
	  <published>2010-03-06T20:46:23+08:00</published>
		  <summary type="html"><![CDATA[<div class="Content-body" id="logPanel">IIS服务器搭建好以后，要开启OPENSSL功能（比如用GMAIL邮箱作为UCenter Home中的邮件验证），首先要检查PHP的安装目录中的 <span style="COLOR: red">ext\php_openssl.dll</span> 文件是否存在。<br />下来，除了要修改 <span style="COLOR: red">%windir%\PHP.INI</span> 中<br />
<div class="UBBPanel">
<div class="UBBTitle"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/2010362046969567.gif" border="0" /> 程序代码</div>
<div class="UBBContent" id="code58727">;extension=php_openssl.dll</div>
</div>
<br />将OPENSSL模块前的注释去掉，改成<br />
<div class="UBBPanel">
<div class="UBBTitle"><img alt="www.2hand.cn" src="http://www.2hand.cn//attachments/month_1003/2010362046969567.gif" border="0" /> 程序代码</div>
<div class="UBBContent" id="code50441">extension=php_openssl.dll</div>
</div>
<br /><br />另外还要将PHP安装目录中的 <span style="COLOR: red">libeay32.dll</span> 和 <span style="COLOR: red">ssleay32.dll</span> 两个文件复制到 <span style="COLOR: red">%windir%\system32</span> 中，然后在IIS管理器中选&ldquo;所有任务&rdquo;--&gt;&ldquo;重新启动IIS&rdquo;就好了。 </div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.2hand.cn/default.asp?id=607" /> 
	  <id>http://www.2hand.cn/default.asp?id=607</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[申请免费的GOOGLE企业标准应用套件]]></title>
	  <author>
		 <name>Amic</name>
		 <uri>http://www.2hand.cn/</uri>
		 <email>amicacin@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.2hand.cn/default.asp?cateID=7" label="网络&amp;技术" /> 
	  <updated>2010-03-06T20:06:39+08:00</updated>
	  <published>2010-03-06T20:06:39+08:00</published>
		  <summary type="html"><![CDATA[<h2 class="ContentAuthor">GOOGLE企业<strong>标准</strong>应用套件中一个服务是最诱惑的，就是免费企业邮箱。</h2>
<div class="Content-body" id="logPanel">
<div onmouseup="document.selection.empty()" oncontextmenu="return false" onselectstart="return false" ondragstart="return false" onbeforecopy="return false" oncopy="document.selection.empty()" onselect="document.selection.empty()">
<p>说简单点，一般的免费邮箱@后面的都是别人的域名地址，如果你有域名，你可以将@后面的地址变成你的，比如本站的网址 2hand.cn或 2hand.cn，我拥有该域名的所有权、DNS设置权。我的EMAIL地址就是<a href="http://www.2hand.cn/mailto:admin@2hand.cn">admin@2hand.cn</a></p>
<p>&nbsp;</p>
<p>下面来说说如何申请</p>
<p><span style="COLOR: #ff0000"><strong>申请地址：<a href="http://www.google.com/a/cpanel/domain/new?hl=zh_CN">http://www.google.com/a/cpanel/domain/new?hl=zh_CN</a></strong></span></p>
<p><span style="COLOR: #ff0000"><font color="#000000">如果你是域名管理人，选择&ldquo;<strong>管理员：我拥有或控制此域名</strong>&rdquo;</font></span></p>
<p><span style="COLOR: #ff0000"><font color="#000000">然后输入你的域名，比如 </font><strong><font color="#000000">2hand.cn</font></strong></span> ，然后单击&ldquo;<strong>开始使用</strong>&rdquo;</p>
<p>按照要求输入必填项目，注意下，<strong>国家／地区</strong> 选择 <strong>中国香港 </strong>，因为选 <strong>中国 </strong><span class="errormsg" id="errormsg_0_country">会提示 Google 企业应用套件目前不支持该国家/地区的域名。</span></p>
<p><span class="errormsg">接下来完成第3步就OK了，GOOGLE需要验证你是否拥有该域名的所有权。</span></p>
<p><span class="errormsg">---------</span></p>
<p>&nbsp;</p>
<p><span class="errormsg">现在说说注册好了以后如何设置的问题</span></p>
<p><span class="errormsg">设置DNS的MX记录</span></p>
<p><span class="errormsg">登陆DNS控制台，选择 <strong>增加邮件记录</strong>，服务商不同，可能显示的设置也不同，有可能为 </span><strong><span class="errormsg">MX 记录</span></strong></p>
<p><span class="errormsg">是注意后面还有个 </span><strong><span class="errormsg">. （点）</span></strong></p>
<p><span class="errormsg">按照顺序输入优先级和解析地址</span></p>
<p><span class="errormsg">
<table cellspacing="3" cellpadding="1" border="1">
    <tbody>
        <tr>
            <td width="26">10</td>
            <td width="160">ASPMX.L.GOOGLE.COM.</td>
        </tr>
        <tr>
            <td width="26">20</td>
            <td width="160">ALT1.ASPMX.L.GOOGLE.COM.</td>
        </tr>
        <tr>
            <td width="26">
            <p>30</p>
            </td>
            <td width="160">
            <p>ALT2.ASPMX.L.GOOGLE.COM.</p>
            </td>
        </tr>
        <tr>
            <td width="26">
            <p>40&nbsp;</p>
            </td>
            <td width="160">
            <p>ASPMX2.GOOGLEMAIL.COM.</p>
            </td>
        </tr>
        <tr>
            <td width="26">
            <p>50</p>
            </td>
            <td width="160">
            <p>ASPMX3.GOOGLEMAIL.COM.</p>
            </td>
        </tr>
        <tr>
            <td width="26">
            <p>60&nbsp;</p>
            </td>
            <td width="160">
            <p>ASPMX4.GOOGLEMAIL.COM.</p>
            </td>
        </tr>
        <tr>
            <td width="26">
            <p>70</p>
            </td>
            <td width="160">
            <p>ASPMX5.GOOGLEMAIL.COM.</p>
            </td>
        </tr>
    </tbody>
</table>
</span></p>
<p><span class="errormsg">这样就设置成功了。</span></p>
<p>&nbsp;</p>
<p><span class="errormsg">下来要做的是找到邮箱入口地址</span></p>
<p><span class="errormsg"><a href="http://www.google.com/a/">http://www.google.com/a/</a>你的域名</span>&nbsp;&nbsp; （这是控制台登陆地址）</p>
<p>比如 <a href="http://www.google.com/a/2hand.cn">http://www.google.com/a/2hand.cn</a></p>
<p><a href="http://mail.google.com/a/">http://mail.google.com/a/</a>你的域名&nbsp;&nbsp;&nbsp; （这是邮箱登陆地址）</p>
<p>比如 <a href="http://mail.google.com/a/od6d.com">http://mail.google.com/a/2hand.cn</a></p>
<p>&nbsp;</p>
<p>GOOGLE提供了CNAME别名来登陆</p>
<p>但是设置好之后一直都打不开。</p>
<p>我们就另想办法，在DNS控制台中增加 <strong>URL 转发</strong></p>
<p>把你的域名转发到GOOGLE提供的网址上</p>
<p>如：<strong>mail.2hand.cn</strong></p>
<p>GOOGLE提供的其他登陆地址也可以依次设置。</p>
<p>完成后等一段时间，试着给你的新EMAIL发送邮件吧，然后在从新EMAIL往外发送，看看成功了没。</p>
<p>-------------</p>
<p>现在就完成了，这里写的不是很详细，但是关键点都写到了，并且用加粗的字体突显出来了。</p>
<p>当然，GOOGLE企业标准应用套件不只提供了企业邮箱，还有很多功能。这里不一一列举了。</p>
<p>有域名并且想要企业邮箱的朋友们，行动吧！</p>
</div>
<br /><br /></div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.2hand.cn/default.asp?id=606" /> 
	  <id>http://www.2hand.cn/default.asp?id=606</id> 
  </entry>	
		
</feed>