<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.heybronco.net/styles/feedsky1.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.heybronco.net" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/heybronco" type="application/rss+xml"></fs:self_link><lastBuildDate>Fri, 06 May 2011 14:16:26 GMT</lastBuildDate><title>信马由缰</title><description>Tech,Life,and something</description><link>http://heybronco.net</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Mon, 27 Jun 2011 15:16:36 GMT</pubDate><item><title>折腾NAS—购买篇</title><link>http://heybronco.net/life/toys/play-with-nas-part-1-purchases/</link><content:encoded>&lt;p&gt;之前一直想买个外置硬盘盒，选来选去都没见啥中意的。后来转投NAS，也没什么目标，随便看了看似乎都没什么动力，这事也就一直搁着了。直到前段时间研究CDN的时候无意间转到了刘晖的blog，看了一系列&lt;a href=&quot;http://www.xieyidian.com/tag/nas&quot;&gt;关于NAS的文章&lt;/a&gt;，兴趣又被吊起来了~&lt;/p&gt;
&lt;h1&gt;设备选择&lt;/h1&gt;
&lt;p&gt;老刘买的是Synology的DS410，tb上价格已经要3k7+了，自己想了想，也用不着这么强大的。去厂商官网上转了N圈，最先看上的是DS211+，查了下价格，tb上要3k2左右，我勒个去，继续找！经过N轮的&lt;a href=&quot;http://www.synology.com/chs/products/compare_spec.php&quot;&gt;参数比较&lt;/a&gt;，最终选定了DS211，性能跟DS211+相差不多，仅少了一个前置SD读卡器和eSATA接口，tb报价是2k8左右，还算能接受。相关介绍可以参见&lt;a href=&quot;http://www.synology.com/chs/products/DS211/index.php&quot;&gt;这里&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;接下来看硬盘，既然要放进NAS里，最好能支持7&amp;#215;24的。目前各大硬盘厂商均推出了针对监控系统的硬盘，支持7&amp;#215;24，低噪音，拿来放NAS里正好（为啥不用企业级？米钱哪……）。Seagate之前的固件门搞得人心惶惶，不考虑；WD目前主流的2T监控级硬盘是WD20EURS，作为WD20EVDS的升级版本，单碟容量由500G升级到667G，盘片也由4碟减少为3碟，缓存则由32M升级至64M，感觉还是挺不错的。因为挂在NAS下，硬盘分区是EXT4,4k扇区的问题也就无所谓了。Hitachi方面则有CinemaStar 5K2000系列，基本参数跟WD20EURS差不多，可惜目前市面上似乎找不到，最终决定，就WD20EURS啦。&lt;/p&gt;
&lt;p&gt;NAS，肯定少不了网络设备，正好我也需要买一个新的无线路由器了，基本要求就Gigabit+802.11N，能双频(2.4G+5G)双待最好，找来找去最后找了款WRT610N，DIY外壳版，将2.4G天线移到机壳的外面使用RP-SMA接口，这样据称信号能增强15%左右。&lt;/p&gt;
&lt;p&gt;接下来开始重头戏，DS211的海外代购。&lt;/p&gt;
&lt;h1&gt;设备购买&lt;/h1&gt;
&lt;p&gt;上面提到，DS211的tb价为2K8左右，感觉价格还是有点小贵，一时也下不了决心买。后来忽然想起可以去Amazon上看看，米国的电子产品还是很便宜的，一看果然，299刀！加上最近美刀汇率一路攀升，真是划得来啊~~~&lt;/p&gt;
&lt;h4&gt;tb代购 vs 代购网站&lt;/h4&gt;
&lt;p&gt;既然要从米国买，就得考虑东西怎么运进来的问题，在米国有亲朋好友的自然是方便了，没人的话只能老老实实找代购了。&lt;/p&gt;
&lt;p&gt;目前海外代购主要有两种形式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tb代购 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;tb上的米国代购一般都有自己的运输网络（或者是留学生），运费能便宜不少，关税在很多情况下也能逃掉。当然也正是由于运输网络是自己的，服务质量良莠不齐，发货速度也不稳定。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代购网站 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目前提供米国地址的网站有很多，例如Comgateway(OneNow)、BorderLinx、库到家、AAE等等。Comgateway和BorderLinx都使用DHL来进行货物运输，作为全球四大快递之一，服务质量还是很有保证的，只是……DHL会主动报关，所以关税基本是逃不掉的。&lt;/p&gt;
&lt;p&gt;之前买Kindle的时候就是找的tb代购，感觉还行，就是速度实在是慢了一点。后来一直想尝试一下代购网站，BorderLinx上提供一个&lt;a href=&quot;https://www.borderlinx.com/m/total-cost-calculator&quot;&gt;总费用计算器&lt;/a&gt;，填入货物的类型、重量和尺寸，就会给出包含关税的全部费用。按照Amazon给出的信息算了一下，大约74刀，也还凑合，至少比tb便宜，DHL Express运输，2~3天到货，加上BorderLinx目前针对American Express卡用户有运费九折的优惠，就它啦！&lt;/p&gt;
&lt;h4&gt;购物开始&lt;/h4&gt;
&lt;p&gt;Borderlinx注册，获取地址，Amazon注册，选择商品，购买，填入地址，填入信用卡相关信息，确认。一路的操作基本没有任何难度。在Amazon上填写地址时，可能会提示BorderLinx提供的地址看起来似乎有点问题，不用管它，再点一次确认即可。另外，在Amazon上可以申请Prime Membership Trail，享受一个月免费的两天送货服务，这项试用服务一个账户或一张信用卡仅可申请一次。&lt;/p&gt;
&lt;p&gt;两天之后，货物顺利到达了BorderLinx，收到通知邮件的我兴奋滴登陆BorderLinx后台，咦？&lt;/p&gt;
&lt;h4&gt;杯具的体积重量&lt;/h4&gt;
&lt;p&gt;登陆后台一看，总费用居然是94刀，囧啊囧……仔细核对条目，发现两点与之前费用计算不相同：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;货品类型之前我选择的是&lt;strong&gt;&lt;u&gt;Compuerts – External hardware&lt;/u&gt;&lt;/strong&gt;，borderlinx给出的是&lt;strong&gt;&lt;u&gt;Electronics &amp;#8211; Other&lt;/u&gt;&lt;/strong&gt;，这两者在关税计算上还是有不少差别的； &lt;/li&gt;
&lt;li&gt;货物重量，Amazon提供的是5pound，约合2.268kg，borderlinx给出的居然是4.3kg。 &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;查看FAQ，第一个问题很好办，跟kf联系一下就好了，第二个估计是按照体积重量来进行计算的。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;体积重量是运输行业内的一项统一收费规定。体积重量是将货物体积，利用折算公式所获得的货物重量值，其计算方法如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;体积重量计算公式＝长cm*宽cm*高cm ÷ 5000 &lt;/li&gt;
&lt;li&gt;将“体积重量”和实际重量相比较, 运费将根据这两者中较重的一种收费 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当货物体积折算的重量大于货物实际重量，将按体积重量来计算      &lt;br /&gt;当货物体积折算的重量小于货物实际重量，则按实际重量来计算&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;估计Amazon给我的东西外面包了个大箱子，live chat了一下，果然，体积达到原来的1.5倍了。这时可以要求BorderLinx尝试重新包装以减少体积，但仔细一想，一来即使重新包装估计也减不了多少，二来要重新包装的话原来包装里的气袋等缓冲设施估计会被去掉，为了货物安全考虑，还是算了吧。遂决定，直接发货。&lt;/p&gt;
&lt;h4&gt;坑爹的客服&lt;/h4&gt;
&lt;p&gt;点击发货按钮，填入AE卡相关信息，确认，咦？支付被拒绝？再试一次，还是拒绝？联系kf问问~&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不靠谱kf一：您是新注册的吧？货物到达BorderLinx之后到您确认发货之间小于24h吧？是这样的，因为您是新客户，我们这边需要跟银行确认相关的信息，确认之后会在您的账户页面进行提示的。嗯？您说您的账户页面没有相关信息？抱歉，我不能够查看您的账户信息，但是确认之后肯定是会有提示的。请您在从现在开始12h至24h之后再次尝试。 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;于是，等啊等，期间若干次支付拒绝……&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不靠谱kf二：您好，我刚才查了一下，BorderLinx的支付系统目前遇到了一些问题，我们正在处理，请您在从现在开始12h至24h之后再次尝试。 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;于是，等啊等，期间若干次支付拒绝……&lt;/p&gt;
&lt;p&gt;诶？怎么还是不行？脑子里浮现一个模糊的印象，AE卡的Secrity Code是印在卡正面的，赶紧把卡掏出来一看，果然！之前我都是输入卡片签名栏后三位的啊啊啊……再次尝试，支付通过了，内牛满面啊~~ &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_cry.gif' alt=':cry:' class='wp-smiley' /&gt;  &lt;/p&gt;
&lt;p&gt;接下来就是漫长的等待了，经过5天的等待，终于拿到了一个大箱子~海外代购结束！&lt;/p&gt;
&lt;p&gt;硬盘直接走某东，6xx拿下，路由器TB找了个熟悉的卖家，480搞定。&lt;/p&gt;
&lt;h1&gt;稍作总结&lt;/h1&gt;
&lt;p&gt;从上面的过程来看，BorderLinx的客服实在是不够靠谱，估计是外包给印度之类的。不过，其他方面来说还是挺不错的。当然关税逃不掉这是选择DHL的必然，也没啥好说的。这次代购主要是在体积重量上吃了点亏，不过相比刘tx遇到的那个&lt;a href=&quot;http://www.xieyidian.com/2800&quot;&gt;超级“厚道”的卖家&lt;/a&gt;，Amazon的包装还真算不上什么了。&lt;/p&gt;
&lt;p&gt;这一路下来到手价为299+89=388刀，换算成RMB大约2k5左右，比tb上还是少了300，也算没亏啥。&lt;/p&gt;
&lt;p&gt;前几天特意咨询了一下Synology关于全球联保的问题，遗憾的是Synology目前还不支持，DS211你可要争气啊~~~&lt;/p&gt;
&lt;p&gt;总体上来说这次海外代购的经历还算是不错的，DHL较为高效的通关能力让我的东西只在海关呆了两天（当然说不定是因为五一放假），除了那些不靠谱的客服以外，其他的注册、下单、支付都还算顺利，阿弥陀佛~&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;h4&gt;唧唧歪歪&lt;/h4&gt;
&lt;p&gt;话说很长时间都没有更新blog了啊……其实吧，有了twitter之后确实没啥动力来写博了，几句话就能说明白的事情用Blog的形式太费劲，也太浪费。这次折腾NAS倒是有些东西可以拿来分享分享，希望不要是个坑才好，嗯~~&lt;/p&gt;
&lt;hr/&gt;&lt;p&gt;The address of this article is &lt;a href=&quot;http://heybronco.net/life/toys/play-with-nas-part-1-purchases/&quot;&gt;http://heybronco.net/life/toys/play-with-nas-part-1-purchases/&lt;/a&gt;.&lt;br /&gt;When you got this here have &lt;strong&gt; 4 &lt;/strong&gt; comments, Welcome to join us! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;声明&lt;/strong&gt;&lt;br/&gt;本站遵循 &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;署名-非商业性使用-相同方式共享3.0共享协议&lt;/a&gt;. 转载请注明转自&lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt;&lt;p&gt;&amp;copy; 2009-2011 &lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt; | &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative Commons&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/528222003/heybronco/feedsky/s.gif?r=http://heybronco.net/life/toys/play-with-nas-part-1-purchases/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://heybronco.net/life/toys/play-with-nas-part-1-purchases/feed/</wfw:commentRss><slash:comments>4</slash:comments><description>之前一直想买个外置硬盘盒，选来选去都没见啥中意的。后来转投NAS，也没什么目标，随便看了看似乎都没什么动力，这事也就一直搁着了。直到前段时间研究CDN的时候无意间转到了刘晖的blog，看了一系列关于NAS的文章，兴趣又被吊起来了~ 设备选择 老刘买的是Synology的DS410，tb上价格已经要3k7+了，自己想了想，也用不着这么强大的。去厂商官网上转了N圈，最先看上的是DS211+，查了下价格，tb上要3k2左右，我勒个去，继续找！经过N轮的参数比较，最终选定了DS211，性能跟DS211+相差不多，仅少了一个前置SD读卡器和eSATA接口，tb报价是2k8左右，还算能接受。相关介绍可以参见这里。 接下来看硬盘，既然要放进NAS里，最好能支持7&amp;#215;24的。目前各大硬盘厂商均推出了针对监控系统的硬盘，支持7&amp;#215;24，低噪音，拿来放NAS里正好（为啥不用企业级？米钱哪……）。Seagate之前的固件门搞得人心惶惶，不考虑；WD目前主流的2T监控级硬盘是WD20EURS，作为WD20EVDS的升级版本，单碟容量由500G升级到667G，盘片也由4碟减少为3碟，缓存则由32M升级至64M，感觉还是挺不错的。因为挂在NAS下，硬盘分区是EXT4,4k扇区的问题也就无所谓了。Hitachi方面则有CinemaStar 5K2000系列，基本参数跟WD20EURS差不多，可惜目前市面上似乎找不到，最终决定，就WD20EURS啦。 NAS，肯定少不了网络设备，正好我也需要买一个新的无线路由器了，基本要求就Gigabit+802.11N，能双频(2.4G+5G)双待最好，找来找去最后找了款WRT610N，DIY外壳版，将2.4G天线移到机壳的外面使用RP-SMA接口，这样据称信号能增强15%左右。 接下来开始重头戏，DS211的海外代购。 设备购买 上面提到，DS211的tb价为2K8左右，感觉价格还是有点小贵，一时也下不了决心买。后来忽然想起可以去Amazon上看看，米国的电子产品还是很便宜的，一看果然，299刀！加上最近美刀汇率一路攀升，真是划得来啊~~~ tb代购 vs 代购网站 既然要从米国买，就得考虑东西怎么运进来的问题，在米国有亲朋好友的自然是方便了，没人的话只能老老实实找代购了。 目前海外代购主要有两种形式： tb代购 tb上的米国代购一般都有自己的运输网络（或者是留学生），运费能便宜不少，关税在很多情况下也能逃掉。当然也正是由于运输网络是自己的，服务质量良莠不齐，发货速度也不稳定。 代购网站 目前提供米国地址的网站有很多，例如Comgateway(OneNow)、BorderLinx、库到家、AAE等等。Comgateway和BorderLinx都使用DHL来进行货物运输，作为全球四大快递之一，服务质量还是很有保证的，只是……DHL会主动报关，所以关税基本是逃不掉的。 之前买Kindle的时候就是找的tb代购，感觉还行，就是速度实在是慢了一点。后来一直想尝试一下代购网站，BorderLinx上提供一个总费用计算器，填入货物的类型、重量和尺寸，就会给出包含关税的全部费用。按照Amazon给出的信息算了一下，大约74刀，也还凑合，至少比tb便宜，DHL Express运输，2~3天到货，加上BorderLinx目前针对American Express卡用户有运费九折的优惠，就它啦！ 购物开始 Borderlinx注册，获取地址，Amazon注册，选择商品，购买，填入地址，填入信用卡相关信息，确认。一路的操作基本没有任何难度。在Amazon上填写地址时，可能会提示BorderLinx提供的地址看起来似乎有点问题，不用管它，再点一次确认即可。另外，在Amazon上可以申请Prime Membership Trail，享受一个月免费的两天送货服务，这项试用服务一个账户或一张信用卡仅可申请一次。 两天之后，货物顺利到达了BorderLinx，收到通知邮件的我兴奋滴登陆BorderLinx后台，咦？ 杯具的体积重量 登陆后台一看，总费用居然是94刀，囧啊囧……仔细核对条目，发现两点与之前费用计算不相同： 货品类型之前我选择的是Compuerts – External hardware，borderlinx给出的是Electronics &amp;#8211; Other，这两者在关税计算上还是有不少差别的； 货物重量，Amazon提供的是5pound，约合2.268kg，borderlinx给出的居然是4.3kg。 查看FAQ，第一个问题很好办，跟kf联系一下就好了，第二个估计是按照体积重量来进行计算的。 体积重量是运输行业内的一项统一收费规定。体积重量是将货物体积，利用折算公式所获得的货物重量值，其计算方法如下： 体积重量计算公式＝长cm*宽cm*高cm ÷ 5000 将“体积重量”和实际重量相比较, 运费将根据这两者中较重的一种收费 当货物体积折算的重量大于货物实际重量，将按体积重量来计算 当货物体积折算的重量小于货物实际重量，则按实际重量来计算 估计Amazon给我的东西外面包了个大箱子，live chat了一下，果然，体积达到原来的1.5倍了。这时可以要求BorderLinx尝试重新包装以减少体积，但仔细一想，一来即使重新包装估计也减不了多少，二来要重新包装的话原来包装里的气袋等缓冲设施估计会被去掉，为了货物安全考虑，还是算了吧。遂决定，直接发货。 坑爹的客服 点击发货按钮，填入AE卡相关信息，确认，咦？支付被拒绝？再试一次，还是拒绝？联系kf问问~ 不靠谱kf一：您是新注册的吧？货物到达BorderLinx之后到您确认发货之间小于24h吧？是这样的，因为您是新客户，我们这边需要跟银行确认相关的信息，确认之后会在您的账户页面进行提示的。嗯？您说您的账户页面没有相关信息？抱歉，我不能够查看您的账户信息，但是确认之后肯定是会有提示的。请您在从现在开始12h至24h之后再次尝试。 于是，等啊等，期间若干次支付拒绝…… 不靠谱kf二：您好，我刚才查了一下，BorderLinx的支付系统目前遇到了一些问题，我们正在处理，请您在从现在开始12h至24h之后再次尝试。 于是，等啊等，期间若干次支付拒绝…… 诶？怎么还是不行？脑子里浮现一个模糊的印象，AE卡的Secrity Code是印在卡正面的，赶紧把卡掏出来一看，果然！之前我都是输入卡片签名栏后三位的啊啊啊……再次尝试，支付通过了，内牛满面啊~~ 接下来就是漫长的等待了，经过5天的等待，终于拿到了一个大箱子~海外代购结束！ [...]&lt;img src=&quot;http://www1.feedsky.com/t1/528222003/heybronco/feedsky/s.gif?r=http://heybronco.net/life/toys/play-with-nas-part-1-purchases/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>DS211</category><category>Borderlinx</category><category>Toys</category><category>NAS</category><category>Amazon</category><pubDate>Fri, 06 May 2011 22:16:26 +0800</pubDate><author>Bronco</author><comments>http://heybronco.net/life/toys/play-with-nas-part-1-purchases/#comments</comments><guid isPermaLink="false">http://heybronco.net/?p=38</guid><dc:creator>Bronco</dc:creator><fs:srclink>http://heybronco.net/life/toys/play-with-nas-part-1-purchases/</fs:srclink><fs:srcfeed>http://direct.heybronco.net/feed/</fs:srcfeed><fs:itemid>feedsky/heybronco/~8688628/528222003/5661778</fs:itemid></item><item><title>支持OAuth的Twip</title><link>http://heybronco.net/tech/twitter/the-twip-support-oauth/</link><content:encoded>&lt;p&gt;Twitter官方宣布将在6月30日终止对Basic Authorization验证方式的支持，广大使用API的天朝网民纷纷表示鸭梨很大~目前最新版的3.0版Twip还不支持OAuth(2.2版支持)，前几天问了下yegle童鞋，最近似乎都没有更新计划。正好最近不算太忙，一时手痒，经过一星期的“艰苦奋战”，终于让Twip 3.0支持了OAuth，命名为Twip 3.1~~原本前几天就打算发出来的，这几天不断有改进的想法冒出来，本着“精益求精”的想法，拖到了今天…… &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;h4&gt;系统要求&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;PHP版本大于5.2.4并已启用curl&lt;/li&gt;
&lt;li&gt;若采用Apache需支持mod_rewrite&lt;/li&gt;
&lt;li&gt;mcrypt库(用于加密access token,没有也能工作)&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;配置方法&lt;/h4&gt;
&lt;p&gt;猛击&lt;a href=&quot;http://heybronco.net/download/twip_3.1.zip&quot;&gt;这里&lt;/a&gt;下载源代码。另外，也可以使用svn checkout这个地址:&lt;a href=&quot;http://twip.googlecode.com/svn/branches/heybronco/&quot;&gt;http://twip.googlecode.com/svn/branches/heybronco/&lt;/a&gt;。基本的配置方法可参见yegle写的&lt;a href=&quot;http://code.google.com/p/twip/wiki/Installation&quot;&gt;wiki&lt;/a&gt;。这里主要说一下OAuth的部分。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用OAuth验证发推时将不显示连接到twip的客户端，而是显示与twip中OAuth CONSUMER_KEY和CONSUMER_SECRET对应的注册程序。&lt;span style=&quot;text-decoration: line-through;&quot;&gt;源代码里已经包含可用的CONSUMER_KEY和CONSUMER_SECRET，对应的程序名称为”Development”，这个是编写”TwitterOAuth Library”的Abraham Williams放在示例代码中的&lt;/span&gt;(已经失效)。若希望使用自定义的程序名，请前往&lt;a href=&quot;http://twitter.com/apps/&quot;&gt;Twitter程序中心&lt;/a&gt;注册一个新程序，注册的时候&lt;strong&gt;&lt;span class=&quot;underline&quot;&gt;Application Type&lt;/span&gt;&lt;/strong&gt;选”Browser”,&lt;strong&gt;&lt;span class=&quot;underline&quot;&gt;Callback URL&lt;/span&gt;&lt;/strong&gt;填入填写能访问到”callback.php”文件的完整网址，&lt;strong&gt;&lt;span class=&quot;underline&quot;&gt;Default Access type&lt;/span&gt;&lt;/strong&gt;选”Read &amp;amp; Write”。注册完成后将”CONSUMER_KEY”和”CONSUMER_SECRET”填入”oauth_config.php”中。&lt;/li&gt;
&lt;li&gt;&amp;#8220;oauth_config.php&amp;#8221;为OAuth相关配置的文件，其中&lt;strong&gt;&lt;span class=&quot;underline&quot;&gt;OAUTH_DIR&lt;/span&gt;&lt;/strong&gt;指定保存OAuth token文件的位置，请放在一个web用户无法访问的目录中，比如public_html(www)目录的上一级，注意权限问题，同时确保&lt;strong&gt;以”/”结尾&lt;/strong&gt;；&lt;strong&gt;&lt;span class=&quot;underline&quot;&gt;CONSUMER_KEY&lt;/span&gt;&lt;/strong&gt;和&lt;strong&gt;&lt;span class=&quot;underline&quot;&gt;CONSUMER_SECRET&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;text-decoration: line-through;&quot;&gt;使用默认或者&lt;/span&gt;替换成自己的；&lt;strong&gt;&lt;span class=&quot;underline&quot;&gt;OAUTH_CALLBACK&lt;/span&gt;&lt;/strong&gt;中填写能访问到”callback.php”文件的完整网址；&lt;strong&gt;&lt;span class=&quot;underline&quot;&gt;SECURE_KEY&lt;/span&gt;&lt;/strong&gt;中保存的是加密数据所用的随机字符，可以随便填入字符，或者保持默认。&lt;/li&gt;
&lt;li&gt;检查index.php中”enable_oauth”项已经为true以启用OAuth，配置完成。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;使用方法&lt;/h4&gt;
&lt;p&gt;访问twip的首页，页面将显示当前Twip所使用的身份验证方法等运行状态及操作说明。注意，若twip的架设者启用了”PRIVATE_API”选项，首页上将给出提示，此时需要确保自己处于被允许的用户范围，否则即使获得了access token也无法使用此API。另外，access token是否被加密存储也会显示在首页上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;获得access token需要翻墙&lt;/strong&gt;。点击”Sign in with Twitter”按钮，进入Twitter登陆界面，输入自己的用户名和密码后，转到授权界面，询问是否授予相应权限给应用程序，点击”Access”按钮，进入保存token界面，此时要求输入密码。&lt;strong&gt;这个密码是用于访问保存在twip服务器上的access token文件的密码，所有通过此twip进行的发推等操作均需要使用此密码，这里称为API密码。API密码可以与自己的Twitter密码相同或不同，但若要使用&lt;/strong&gt;&lt;a href=&quot;http://www.mixero.com/&quot;&gt;&lt;strong&gt;Mixero&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;，请填写Twitter密码。&lt;/strong&gt;因为Mixero不通过API来校验密码，若API密码与Twitter不同，要么无法登陆，要么无法获得Twitter信息。完成后点击”保存”按钮，页面跳转到首页。若能看到你的timeline，说明access token获得成功。之后就可以在客户端使用用户名和&lt;strong&gt;API密码&lt;/strong&gt;登陆了。&lt;/p&gt;
&lt;p&gt;如果忘记了自己的API密码，可以点击”Sign in with Twitter”按钮来重新获得access token，原来的记录将被覆盖。若不想再继续使用此API，可进入自己的Twitter设置界面，在”connections”页面中找到此API，然后点击”Revoke Access”来移除访问许可。当然，也可以直接把twip中保存的access token删除，方法是在首页上点击”login”，输入用户名和API密码后，点击”remove the token”即可。&lt;/p&gt;
&lt;p&gt;使用Gravity等支持OAuth的客户端需要注意一下，在添加账户的时候验证类型要选&lt;strong&gt;Plaintext&lt;/strong&gt;而不是Oauth/Secure，同时账户密码填入的是&lt;strong&gt;API密码&lt;/strong&gt;。Update:用户名不能填email，否则会验证失败。(才知道原来能用email登陆Gravity，thanks to &lt;a title=&quot;mxwu&quot; rel=&quot;external&quot; href=&quot;http://mxwu.does-exist.info/blog/&quot;&gt;mxwu&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;对于&lt;span style=&quot;text-decoration: line-through;&quot;&gt;想使用byethost主机的筒子们&lt;/span&gt;屏蔽了twitter的主机，很遗憾，使用ip替换是没办法使用OAuth的。因为在请求token的时候若使用ip地址来访问，Twitter会返回一个301，重定向到twitter.com。&lt;strong&gt;若点击&amp;#8221;Sign in with Twitter&amp;#8221;之后出现&amp;#8221;Could not connect to Twitter. Refresh the  page or try again later.&amp;#8221;,最大的可能是主机屏蔽了Twitter，目前除了换主机以外没有解决办法。&lt;/strong&gt;当然，敝人水平有限，也许有解决办法也说不定，这个就等待高人来解决了。 &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_cool.gif' alt=':cool:' class='wp-smiley' /&gt;  另一种可能是key和secret失效，这个可以通过查看Debug info的http_code来确定。若为401，则表示key和secret已经失效。&lt;/p&gt;
&lt;h4&gt;安全问题&lt;/h4&gt;
&lt;p&gt;之前在推上看到有人质疑兽兽&lt;a href=&quot;http://twitter.com/showfom&quot;&gt;@showfom&lt;/a&gt;的饭否会有安全性问题，这边也会着重考虑这个问题。&lt;/p&gt;
&lt;p&gt;若空间支持mcrypt库，access token会被加密。是否加密会在首页显示，你可以据此决定是否使用此API。access token以API密码和SECURE_KEY作为密钥进行blowfish加密。API密码将进行MD5计算，结果拼接SECURE_KEY后进行第二次MD5计算，计算结果和access token的密文以文件的形式进行保存。这样，即使是twip的拥有者也无法使用access token。若空间不支持mcrypt库(这个基本很少吧),access token将不会加密。&lt;/p&gt;
&lt;p&gt;当然，因为twip是完全开源的，谁都可以来修改代码，上面说的安全性不一定能得到保证。至于用不用，看你自己吧。&lt;/p&gt;
&lt;h4&gt;版权&lt;/h4&gt;
&lt;p&gt;Twip原版使用&lt;a href=&quot;http://www.mozilla.org/MPL/MPL-1.1.html&quot;&gt;Mozilla Public License 1.1&lt;/a&gt;授权，TwitterOAuth库虽没写明授权协议，但也有相关授权说明。若需要进行再次开发以及发布，请一定遵从相关协议的说明。&lt;/p&gt;
&lt;h4&gt;其他&lt;/h4&gt;
&lt;p&gt;感谢党，感谢国家，感谢&lt;a href=&quot;http://twitter.com/yegle&quot;&gt;@yegle&lt;/a&gt;和&lt;a href=&quot;http://twitter.com/xmxsuperstar&quot;&gt;@xmxsuperstar&lt;/a&gt;，感谢&lt;a href=&quot;http://abrah.am&quot;&gt;Abraham Williams&lt;/a&gt;，感谢Dreamhost。&lt;/p&gt;
&lt;p&gt;Twip原版的相关信息可参考其&lt;a href=&quot;http://code.google.com/p/twip&quot;&gt;Project Website&lt;/a&gt;。TwitterOAuth库相关信息参考&lt;a href=&quot;http://github.com/abraham/twitteroauth&quot;&gt;这里&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;ps一句，本来打算找个免费空间来演示的，可惜找了几个都没搞定，哎~~~大家就自己慢慢试吧~ &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_smile.gif' alt=':smile:' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;以上！&lt;/p&gt;
&lt;hr/&gt;&lt;p&gt;The address of this article is &lt;a href=&quot;http://heybronco.net/tech/twitter/the-twip-support-oauth/&quot;&gt;http://heybronco.net/tech/twitter/the-twip-support-oauth/&lt;/a&gt;.&lt;br /&gt;When you got this here have &lt;strong&gt; more than 30 &lt;/strong&gt; comments. Why not come to check it out?! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;声明&lt;/strong&gt;&lt;br/&gt;本站遵循 &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;署名-非商业性使用-相同方式共享3.0共享协议&lt;/a&gt;. 转载请注明转自&lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt;&lt;p&gt;&amp;copy; 2009-2011 &lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt; | &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative Commons&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/528222004/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/twitter/the-twip-support-oauth/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://heybronco.net/tech/twitter/the-twip-support-oauth/feed/</wfw:commentRss><slash:comments>160</slash:comments><description>Twitter官方宣布将在6月30日终止对Basic Authorization验证方式的支持，广大使用API的天朝网民纷纷表示鸭梨很大~目前最新版的3.0版Twip还不支持OAuth(2.2版支持)，前几天问了下yegle童鞋，最近似乎都没有更新计划。正好最近不算太忙，一时手痒，经过一星期的“艰苦奋战”，终于让Twip 3.0支持了OAuth，命名为Twip 3.1~~原本前几天就打算发出来的，这几天不断有改进的想法冒出来，本着“精益求精”的想法，拖到了今天…… 系统要求 PHP版本大于5.2.4并已启用curl 若采用Apache需支持mod_rewrite mcrypt库(用于加密access token,没有也能工作) 配置方法 猛击这里下载源代码。另外，也可以使用svn checkout这个地址:http://twip.googlecode.com/svn/branches/heybronco/。基本的配置方法可参见yegle写的wiki。这里主要说一下OAuth的部分。 使用OAuth验证发推时将不显示连接到twip的客户端，而是显示与twip中OAuth CONSUMER_KEY和CONSUMER_SECRET对应的注册程序。源代码里已经包含可用的CONSUMER_KEY和CONSUMER_SECRET，对应的程序名称为”Development”，这个是编写”TwitterOAuth Library”的Abraham Williams放在示例代码中的(已经失效)。若希望使用自定义的程序名，请前往Twitter程序中心注册一个新程序，注册的时候Application Type选”Browser”,Callback URL填入填写能访问到”callback.php”文件的完整网址，Default Access type选”Read &amp;#38; Write”。注册完成后将”CONSUMER_KEY”和”CONSUMER_SECRET”填入”oauth_config.php”中。 &amp;#8220;oauth_config.php&amp;#8221;为OAuth相关配置的文件，其中OAUTH_DIR指定保存OAuth token文件的位置，请放在一个web用户无法访问的目录中，比如public_html(www)目录的上一级，注意权限问题，同时确保以”/”结尾；CONSUMER_KEY和CONSUMER_SECRET使用默认或者替换成自己的；OAUTH_CALLBACK中填写能访问到”callback.php”文件的完整网址；SECURE_KEY中保存的是加密数据所用的随机字符，可以随便填入字符，或者保持默认。 检查index.php中”enable_oauth”项已经为true以启用OAuth，配置完成。 使用方法 访问twip的首页，页面将显示当前Twip所使用的身份验证方法等运行状态及操作说明。注意，若twip的架设者启用了”PRIVATE_API”选项，首页上将给出提示，此时需要确保自己处于被允许的用户范围，否则即使获得了access token也无法使用此API。另外，access token是否被加密存储也会显示在首页上。 获得access token需要翻墙。点击”Sign in with Twitter”按钮，进入Twitter登陆界面，输入自己的用户名和密码后，转到授权界面，询问是否授予相应权限给应用程序，点击”Access”按钮，进入保存token界面，此时要求输入密码。这个密码是用于访问保存在twip服务器上的access token文件的密码，所有通过此twip进行的发推等操作均需要使用此密码，这里称为API密码。API密码可以与自己的Twitter密码相同或不同，但若要使用Mixero，请填写Twitter密码。因为Mixero不通过API来校验密码，若API密码与Twitter不同，要么无法登陆，要么无法获得Twitter信息。完成后点击”保存”按钮，页面跳转到首页。若能看到你的timeline，说明access token获得成功。之后就可以在客户端使用用户名和API密码登陆了。 如果忘记了自己的API密码，可以点击”Sign in with Twitter”按钮来重新获得access token，原来的记录将被覆盖。若不想再继续使用此API，可进入自己的Twitter设置界面，在”connections”页面中找到此API，然后点击”Revoke Access”来移除访问许可。当然，也可以直接把twip中保存的access token删除，方法是在首页上点击”login”，输入用户名和API密码后，点击”remove the token”即可。 使用Gravity等支持OAuth的客户端需要注意一下，在添加账户的时候验证类型要选Plaintext而不是Oauth/Secure，同时账户密码填入的是API密码。Update:用户名不能填email，否则会验证失败。(才知道原来能用email登陆Gravity，thanks to mxwu) 对于想使用byethost主机的筒子们屏蔽了twitter的主机，很遗憾，使用ip替换是没办法使用OAuth的。因为在请求token的时候若使用ip地址来访问，Twitter会返回一个301，重定向到twitter.com。若点击&amp;#8221;Sign in with Twitter&amp;#8221;之后出现&amp;#8221;Could not connect to [...]&lt;img src=&quot;http://www1.feedsky.com/t1/528222004/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/twitter/the-twip-support-oauth/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>mixero</category><category>Twitter</category><category>oauth</category><category>twip</category><category>gravity</category><pubDate>Sun, 25 Apr 2010 21:57:43 +0800</pubDate><author>Bronco</author><comments>http://heybronco.net/tech/twitter/the-twip-support-oauth/#comments</comments><guid isPermaLink="false">http://heybronco.net/tech/twitter/%e6%94%af%e6%8c%81oauth%e7%9a%84twip/</guid><dc:creator>Bronco</dc:creator><fs:srclink>http://heybronco.net/tech/twitter/the-twip-support-oauth/</fs:srclink><fs:srcfeed>http://direct.heybronco.net/feed/</fs:srcfeed><fs:itemid>feedsky/heybronco/~8688628/528222004/5661778</fs:itemid></item><item><title>Twitter-Feed的一些改进</title><link>http://heybronco.net/tech/twitter/some-improvement-of-twitter-feed/</link><content:encoded>&lt;p&gt;月光写的基于gae的Twitter同步程序&lt;a href=&quot;http://code.google.com/p/twitter-feed/&quot; rel=&quot;nofollow&quot;&gt;Twitter-feed&lt;/a&gt;是个很不错的程序，能将twitter上的信息同步发布到各大围脖上，通过follow5和hellotxt，甚至可以支持所有的围脖。在使用过程中，我遇到了一些小问题，最近也不算太忙，遂动手修改了一些Twitter-feed的代码。自封Twitter-feed++，嘿嘿~~&lt;/p&gt;
&lt;h4&gt;让转义字符可以同步&lt;/h4&gt;
&lt;p&gt;如果Twitter上的信息包含html元素，比如&amp;#8221;&amp;lt;&amp;#8221;等，在同步到其他围脖后，将变成转义字符，例如之前的&amp;#8221;&amp;lt;&amp;#8221;将变成&amp;#8221;&amp;amp;amp; lt;&amp;#8221;等等。仔细看了一下twitter.py，发现有个unescape函数，用来将转义字符转换为对应的符号。既然发送到其他围脖的信息还包含转义字符，很简单，再unescape一下不就好了？以R26版为例，打开twitter.py文件，在parseTwitter函数中找到&lt;code&gt;text=x[1]&lt;/code&gt;这一行(第263行)，将其改为&lt;code&gt;text=unescape(x[1])&lt;/code&gt;,保存并update，搞定~&lt;/p&gt;
&lt;p&gt;ps一句，我查看了一下unescape这个函数原作者的&lt;a href=&quot;http://effbot.org/zone/re-sub.htm#unescape-html&quot; rel=&quot;nofollow&quot;&gt;网页&lt;/a&gt;，发现其版本跟月光的不一样，估计月光进行了一定的修改。只是在下实在愚钝，楞没看出来为什么要那样修改。呃&amp;#8230;&amp;#8230; &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_eek.gif' alt=':shock:' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;h4&gt;异步进行数据发送&lt;/h4&gt;
&lt;p&gt;在parseTwitter函数中，各围脖是顺序进行同步的，同时各同步程序中没有异常处理。这样的话如果某个围脖出了问题，处于此围脖同步语句下面的其他围脖将无法进行同步。为此，可以为同步函数加上异常处理，使用&amp;#8221;try:&amp;#8230;except:&amp;#8221;的语句块。另外，为了提高同步效率，可以将同步改为异步方式，参考&lt;a href=&quot;http://code.google.com/appengine/docs/python/urlfetch/asynchronousrequests.html#Making_Asynchronous_Requests&quot;&gt;Google的文档&lt;/a&gt;，将&amp;#8221;urlfetch.fetch&amp;#8221;更改为&amp;#8221;urlfetch.make_fetch_call&amp;#8221;。此时有一点需要注意，不是所有的&amp;#8221;urlfetch.fetch&amp;#8221;都需要修改的，有些过程是需要顺序执行的，比如同步sina的函数&amp;#8221;send_sina_msgs&amp;#8221;中的第一个fetch，这个fetch是进行登录并获取Cookie的，改成异步的话此函数需要进行较大的修改，且完全没有必要。具体的修改可参见最后我给出的修改版本。&lt;/p&gt;
&lt;h4&gt;重复发送的问题&lt;/h4&gt;
&lt;p&gt;最近月光对twitter-feed进行了修改，以修正TwitterID升为11位后老信息重复获取的问题。但是我更新之后发现新版的twitter-feed仍然会重复发送老数据。月光曾在Twitter里说需要清空一下Datastore。会不会是这个问题呢？事到如今，也只能试一试了。&lt;/p&gt;
&lt;p&gt;进入gae的控制台，点击左边的&amp;#8221;Datastore Viewer&amp;#8221;,在窗体右边将列出存储于数据库中的数据，勾一下列表标题&amp;#8221;ID/Name&amp;#8221;前面的选择框选中全部记录，点击&amp;#8221;Delete”删除。如此这般将所有数据删除后，同步正常了~~~内牛满面哪&amp;#8230;&amp;#8230; &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_cry.gif' alt=':cry:' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;后来仔细查看了一下log，似乎是digu的API出了问题，直接通过地址访问会弹出验证对话框，输入用户名和密码之后发现对话框总是不停地弹出来&amp;#8230;&amp;#8230;在加上异步处理和异常处理后，各同步之间保持相对独立，可能这也是我的sina同步恢复正常的原因之一吧~~&lt;/p&gt;
&lt;p&gt;附上我的修改版~&lt;a href=&quot;http://heybronco.net/download/twitter-feed.zip&quot;&gt;猛击这里下载.&lt;/a&gt; 我只测试了sina和嘀咕，其他的未进行测试，如有问题，欢迎与我联系。 &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_cool.gif' alt=':cool:' class='wp-smiley' /&gt;  &lt;/p&gt;
&lt;hr/&gt;&lt;p&gt;The address of this article is &lt;a href=&quot;http://heybronco.net/tech/twitter/some-improvement-of-twitter-feed/&quot;&gt;http://heybronco.net/tech/twitter/some-improvement-of-twitter-feed/&lt;/a&gt;.&lt;br /&gt;When you got this here have &lt;strong&gt; 20 &lt;/strong&gt; comments, Welcome to join us! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;声明&lt;/strong&gt;&lt;br/&gt;本站遵循 &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;署名-非商业性使用-相同方式共享3.0共享协议&lt;/a&gt;. 转载请注明转自&lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt;&lt;p&gt;&amp;copy; 2009-2011 &lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt; | &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative Commons&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/528222005/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/twitter/some-improvement-of-twitter-feed/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://heybronco.net/tech/twitter/some-improvement-of-twitter-feed/feed/</wfw:commentRss><slash:comments>20</slash:comments><description>月光写的基于gae的Twitter同步程序Twitter-feed是个很不错的程序，能将twitter上的信息同步发布到各大围脖上，通过follow5和hellotxt，甚至可以支持所有的围脖。在使用过程中，我遇到了一些小问题，最近也不算太忙，遂动手修改了一些Twitter-feed的代码。自封Twitter-feed++，嘿嘿~~ 让转义字符可以同步 如果Twitter上的信息包含html元素，比如&amp;#8221;&amp;#60;&amp;#8221;等，在同步到其他围脖后，将变成转义字符，例如之前的&amp;#8221;&amp;#60;&amp;#8221;将变成&amp;#8221;&amp;#38;amp; lt;&amp;#8221;等等。仔细看了一下twitter.py，发现有个unescape函数，用来将转义字符转换为对应的符号。既然发送到其他围脖的信息还包含转义字符，很简单，再unescape一下不就好了？以R26版为例，打开twitter.py文件，在parseTwitter函数中找到text=x[1]这一行(第263行)，将其改为text=unescape(x[1]),保存并update，搞定~ ps一句，我查看了一下unescape这个函数原作者的网页，发现其版本跟月光的不一样，估计月光进行了一定的修改。只是在下实在愚钝，楞没看出来为什么要那样修改。呃&amp;#8230;&amp;#8230; 异步进行数据发送 在parseTwitter函数中，各围脖是顺序进行同步的，同时各同步程序中没有异常处理。这样的话如果某个围脖出了问题，处于此围脖同步语句下面的其他围脖将无法进行同步。为此，可以为同步函数加上异常处理，使用&amp;#8221;try:&amp;#8230;except:&amp;#8221;的语句块。另外，为了提高同步效率，可以将同步改为异步方式，参考Google的文档，将&amp;#8221;urlfetch.fetch&amp;#8221;更改为&amp;#8221;urlfetch.make_fetch_call&amp;#8221;。此时有一点需要注意，不是所有的&amp;#8221;urlfetch.fetch&amp;#8221;都需要修改的，有些过程是需要顺序执行的，比如同步sina的函数&amp;#8221;send_sina_msgs&amp;#8221;中的第一个fetch，这个fetch是进行登录并获取Cookie的，改成异步的话此函数需要进行较大的修改，且完全没有必要。具体的修改可参见最后我给出的修改版本。 重复发送的问题 最近月光对twitter-feed进行了修改，以修正TwitterID升为11位后老信息重复获取的问题。但是我更新之后发现新版的twitter-feed仍然会重复发送老数据。月光曾在Twitter里说需要清空一下Datastore。会不会是这个问题呢？事到如今，也只能试一试了。 进入gae的控制台，点击左边的&amp;#8221;Datastore Viewer&amp;#8221;,在窗体右边将列出存储于数据库中的数据，勾一下列表标题&amp;#8221;ID/Name&amp;#8221;前面的选择框选中全部记录，点击&amp;#8221;Delete”删除。如此这般将所有数据删除后，同步正常了~~~内牛满面哪&amp;#8230;&amp;#8230; 后来仔细查看了一下log，似乎是digu的API出了问题，直接通过地址访问会弹出验证对话框，输入用户名和密码之后发现对话框总是不停地弹出来&amp;#8230;&amp;#8230;在加上异步处理和异常处理后，各同步之间保持相对独立，可能这也是我的sina同步恢复正常的原因之一吧~~ 附上我的修改版~猛击这里下载. 我只测试了sina和嘀咕，其他的未进行测试，如有问题，欢迎与我联系。 The address of this article is http://heybronco.net/tech/twitter/some-improvement-of-twitter-feed/.When you got this here have 20 comments, Welcome to join us! 声明本站遵循 署名-非商业性使用-相同方式共享3.0共享协议. 转载请注明转自信马由缰&amp;#169; 2009-2011 信马由缰 &amp;#124; Creative Commons&lt;img src=&quot;http://www1.feedsky.com/t1/528222005/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/twitter/some-improvement-of-twitter-feed/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>转义字符</category><category>Twitter</category><category>twitter-feed</category><category>重复发送</category><category>异常处理</category><category>异步</category><pubDate>Sun, 07 Mar 2010 22:16:01 +0800</pubDate><author>Bronco</author><comments>http://heybronco.net/tech/twitter/some-improvement-of-twitter-feed/#comments</comments><guid isPermaLink="false">http://heybronco.net/?p=27</guid><dc:creator>Bronco</dc:creator><fs:srclink>http://heybronco.net/tech/twitter/some-improvement-of-twitter-feed/</fs:srclink><fs:srcfeed>http://direct.heybronco.net/feed/</fs:srcfeed><fs:itemid>feedsky/heybronco/~8688628/528222005/5661778</fs:itemid></item><item><title>阻止直接POST的垃圾评论</title><link>http://heybronco.net/tech/wordpress/prevent-spam-from-directly-post/</link><content:encoded>&lt;p&gt;&lt;a rel=&quot;inlink&quot; href=&quot;/tech/wordpress/use-hidden-input-to-stop-spam/&quot;&gt;上一篇&lt;/a&gt;我讲了如何利用隐藏输入框来组织垃圾评论，今天登陆后台，居然还是发现了一篇垃圾评论~ &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /&gt;  这是怎么回事？莫非是我的隐藏输入框不起作用了？不应该啊~本地测试都是没问题的。人肉Spam？更加不可能了，哪个foreigner会找到这个没什么人气小站来投放ad啊&amp;#8230;&lt;/p&gt;
&lt;p&gt;一时半会想不出原因，遂搁置一边，去cPanel转转。在看Last Visitor的时候，忽然发现了如下数据：(因为这件事出现在大约3天之前，Last Visitors的数据已经刷新，下面的截图是Raw Access Log中的数据）&lt;a class=&quot;highslide-image&quot; onclick=&quot;return hs.expand(this, {captionId:'caption_1248445849290'});&quot; href=&quot;http://heybronco.net/blog/wp-content/uploads/2009/07/Spam.png&quot;&gt;&lt;img style=&quot;display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Click to enlarge&quot; src=&quot;http://heybronco.net/blog/wp-content/uploads/2009/07/Spam_thumb.png&quot; alt=&quot;image&quot; /&gt;&lt;/a&gt;&lt;span id=&quot;caption_1248445849290&quot; class=&quot;highslide-caption&quot;&gt;SpamRobot Access Log&lt;/span&gt;对比一下IP，跟spam的一模一样！可以看到，这个Robot先访问到了主页面，之后随机挑选了一篇日志，获得相关数据后直接POST，第三行POST返回代码是302，这是wp-comments-post.php返回的Location，最后它验证了一下，开闪。原来SpamRobot是直接使用POST方法向wp-comments-post.php提交数据的。这帮家伙！&lt;/p&gt;
&lt;p&gt;知道了原因，接下来就要想想如何来防止了。如果你是按照上篇的说明修改了自己的主题的话，恭喜你！解决的办法很简单。只要在主题的function.php中加入如下代码就OK啦！&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;php&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; spam_check&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$comment&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span style=&quot;color: #990000;&quot;&gt;session_start&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//开启session&lt;/span&gt;
	&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_1_ID'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;die&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;Spam Comment!&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//不存在session值,垃圾评论，结束后续操作&lt;/span&gt;
	&lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$comment&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//否则返回评论数据，继续后续步骤&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
add_filter&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'preprocess_comment'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;'spam_check'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;如果你使用了Akismet插件，建议修改一下插件代码。以2.2.6版本为例，修改第500行:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;php&quot; style=&quot;font-family:monospace;&quot;&gt;add_action&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'preprocess_comment'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;'akismet_auto_check_comment'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;把其中的&amp;#8221;1&amp;#8243;改大一点，比如&amp;#8221;5&amp;#8243;。这样可以防止产生&amp;#8221;潜在&amp;#8221;的冲突(我尝试过不修改，似乎也工作正常，但我不能保证)。&lt;/p&gt;
&lt;p&gt;主要的思想就是利用session。还记得我在&lt;a rel=&quot;inlink&quot; href=&quot;/tech/wordpress/use-hidden-input-to-stop-spam/&quot;&gt;上一篇&lt;/a&gt;中的三个随机生成的Session值吗？在处理评论的时候，相关函数会对session进行验证。这里我们可以直接检查是否存在之前生成的随机session值(我这里用的是&amp;#8221;SS_1_ID&amp;#8221;)。一般的SpamRobot都是直接发送数据，不会保存Cookie。这样在对应于SpamRobot的session中就不存在&amp;#8221;SS_1_ID&amp;#8221;。&lt;/p&gt;
&lt;p&gt;如果你没有使用我的方法改造自己的主题，这里也有个大概的解决办法。前提还是使用session。将commenter的name后拼上某个session值，再到函数中去验证。这个办法我没有尝试，从理论上将应该是没什么问题的。尝试自己解决问题，你会发现很多的乐趣！&lt;/p&gt;
&lt;p&gt;当然，如果某个高级的SpamRobot能保存Cookie，这个方法就失效了。怎么办呢？别忘了，咱还有Akismet啊~ &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;hr/&gt;&lt;p&gt;The address of this article is &lt;a href=&quot;http://heybronco.net/tech/wordpress/prevent-spam-from-directly-post/&quot;&gt;http://heybronco.net/tech/wordpress/prevent-spam-from-directly-post/&lt;/a&gt;.&lt;br /&gt;When you got this here have &lt;strong&gt; 30 &lt;/strong&gt; comments, Welcome to join us! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;声明&lt;/strong&gt;&lt;br/&gt;本站遵循 &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;署名-非商业性使用-相同方式共享3.0共享协议&lt;/a&gt;. 转载请注明转自&lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt;&lt;p&gt;&amp;copy; 2009-2011 &lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt; | &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative Commons&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/528222006/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/wordpress/prevent-spam-from-directly-post/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://heybronco.net/tech/wordpress/prevent-spam-from-directly-post/feed/</wfw:commentRss><slash:comments>30</slash:comments><description>上一篇我讲了如何利用隐藏输入框来组织垃圾评论，今天登陆后台，居然还是发现了一篇垃圾评论~ 这是怎么回事？莫非是我的隐藏输入框不起作用了？不应该啊~本地测试都是没问题的。人肉Spam？更加不可能了，哪个foreigner会找到这个没什么人气小站来投放ad啊&amp;#8230; 一时半会想不出原因，遂搁置一边，去cPanel转转。在看Last Visitor的时候，忽然发现了如下数据：(因为这件事出现在大约3天之前，Last Visitors的数据已经刷新，下面的截图是Raw Access Log中的数据）SpamRobot Access Log对比一下IP，跟spam的一模一样！可以看到，这个Robot先访问到了主页面，之后随机挑选了一篇日志，获得相关数据后直接POST，第三行POST返回代码是302，这是wp-comments-post.php返回的Location，最后它验证了一下，开闪。原来SpamRobot是直接使用POST方法向wp-comments-post.php提交数据的。这帮家伙！ 知道了原因，接下来就要想想如何来防止了。如果你是按照上篇的说明修改了自己的主题的话，恭喜你！解决的办法很简单。只要在主题的function.php中加入如下代码就OK啦！ 1 2 3 4 5 6 7 function spam_check&amp;#40;$comment&amp;#41; &amp;#123; session_start&amp;#40;&amp;#41;;//开启session if&amp;#40;empty&amp;#40;$_SESSION&amp;#91;'SS_1_ID'&amp;#93;&amp;#41;&amp;#41;&amp;#123;die&amp;#40;&amp;#34;Spam Comment!&amp;#34;&amp;#41;;&amp;#125;//不存在session值,垃圾评论，结束后续操作 return $comment;//否则返回评论数据，继续后续步骤 &amp;#125; add_filter&amp;#40;'preprocess_comment', 'spam_check', 1&amp;#41;; 如果你使用了Akismet插件，建议修改一下插件代码。以2.2.6版本为例，修改第500行: add_action&amp;#40;'preprocess_comment', 'akismet_auto_check_comment', 1&amp;#41;; 把其中的&amp;#8221;1&amp;#8243;改大一点，比如&amp;#8221;5&amp;#8243;。这样可以防止产生&amp;#8221;潜在&amp;#8221;的冲突(我尝试过不修改，似乎也工作正常，但我不能保证)。 主要的思想就是利用session。还记得我在上一篇中的三个随机生成的Session值吗？在处理评论的时候，相关函数会对session进行验证。这里我们可以直接检查是否存在之前生成的随机session值(我这里用的是&amp;#8221;SS_1_ID&amp;#8221;)。一般的SpamRobot都是直接发送数据，不会保存Cookie。这样在对应于SpamRobot的session中就不存在&amp;#8221;SS_1_ID&amp;#8221;。 如果你没有使用我的方法改造自己的主题，这里也有个大概的解决办法。前提还是使用session。将commenter的name后拼上某个session值，再到函数中去验证。这个办法我没有尝试，从理论上将应该是没什么问题的。尝试自己解决问题，你会发现很多的乐趣！ 当然，如果某个高级的SpamRobot能保存Cookie，这个方法就失效了。怎么办呢？别忘了，咱还有Akismet啊~ The address of this article is http://heybronco.net/tech/wordpress/prevent-spam-from-directly-post/.When you got this here have 30 comments, Welcome to join us! [...]&lt;img src=&quot;http://www1.feedsky.com/t1/528222006/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/wordpress/prevent-spam-from-directly-post/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>session</category><category>Spam</category><category>Wordpress</category><category>Post</category><pubDate>Fri, 24 Jul 2009 22:57:07 +0800</pubDate><author>Bronco</author><comments>http://heybronco.net/tech/wordpress/prevent-spam-from-directly-post/#comments</comments><guid isPermaLink="false">http://heybronco.net/?p=23</guid><dc:creator>Bronco</dc:creator><fs:srclink>http://heybronco.net/tech/wordpress/prevent-spam-from-directly-post/</fs:srclink><fs:srcfeed>http://direct.heybronco.net/feed/</fs:srcfeed><fs:itemid>feedsky/heybronco/~8688628/528222006/5661778</fs:itemid></item><item><title>使用隐藏输入框阻止垃圾评论</title><link>http://heybronco.net/tech/wordpress/use-hidden-input-to-stop-spam/</link><content:encoded>&lt;p&gt;看到这个标题，估计你会联想到NoSpamNX。没错，这个idea就是借鉴NoSpamNX的。前几天在网上溜达的时候看到了一篇关于NoSpamNX的介绍，觉得挺不错，决定尝试一下。可惜的是安装之后不能正常使用，估计原因在于我的主题使用了Ajax的评论提交方式，NoSpamNX好像没办法获得评论数据。粗略看了一下代码，觉得也不算太麻烦，遂集成到主题中。&lt;/p&gt;
&lt;p&gt;NoSpamNX生成两个Name为随机值的隐藏文本框，其中一个文本框的内容也是随机值，放置在评论表单中，一般的Spam Robot会将此表单所有的项目填充，而正常的访客几乎不可能这么做(当然，无聊地用FireBug看到了这两个文本框然后打算折腾一下的人不算 &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /&gt;  )。因此，只要判断这两个输入框的内容就知道评论是不是Spam了。&lt;/p&gt;
&lt;p&gt;另外，鉴于某些Spam Robot会根据文本框的Name属性来填写内容，我把设计思想改了一下，把真正的留言者名称文本框的Name改成随机值，同时仍然生成两个隐藏文本框，一个Name依然随机，另一个叫&amp;#8221;author&amp;#8221;，呵呵~~是不是跟YAWASP有点像？好吧，我就是借鉴他的&amp;#8230;这样一来，Spam Robot基本上都能被kick out了。&lt;/p&gt;
&lt;p&gt;随机值参考NoSpamNX，采用随机数+MD5来产生。生成的数据保存在session里，这样一个访客只用生成一次，直到session过期(默认是24分钟，应该足够了)&lt;/p&gt;
&lt;p&gt;啰啰嗦嗦讲了那么多原理，下来开始动手。&lt;/p&gt;
&lt;h4&gt;增加随机值产生函数&lt;/h4&gt;
&lt;p&gt;编辑主题的function.php文件，加入如下代码，产生三个随机值。&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;php&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; Generate_ID&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_1_ID'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//如果不存在此值，一般是新访问者或者session过期&lt;/span&gt;
	&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_1_ID'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;md5&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;uniqid&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;mt_rand&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #009900; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
		&lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_2_ID'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;md5&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;uniqid&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;mt_rand&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #009900; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
		&lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_2_VALUE'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;md5&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;uniqid&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;mt_rand&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #009900; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//否则不产生新的随机值，使用session中已经保存的&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;修改header.php &lt;/h4&gt;
&lt;p&gt;修改主题的header.php文件，在适当的位置加入如下代码：&lt;code&gt;session_start();&lt;/code&gt;这个适当的位置一般是文件的第3行，即“DOCTYPE”(第一行)和php开始标记(第二行)的下面。&lt;/p&gt;
&lt;h4&gt;修改评论框(comment.php) &lt;/h4&gt;
&lt;p&gt;OK，这个算是一个关键部分，请仔细修改并保存备份。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;修改原始的“留言者名称”文本框。找到类似&lt;code&gt;&amp;lt;input type=&quot;text&quot; name=&quot;author&quot; id=&quot;author&quot;&lt;/code&gt;的一行，将name换成三个随机值中的一个。我这里改成&lt;code&gt;name=&quot;at-&amp;lt;?php echo $SESSION_[SS_ID_1];&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;增加隐藏输入框。找到&lt;strong&gt;type=hidden,name=&amp;#8221;comment_post_ID&amp;#8221;&lt;/strong&gt;的输入框(&amp;lt;input)，在下面一行加入如下代码：

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;php&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;?php&lt;/span&gt; 
&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;mt_rand&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//两个input位置随机&lt;/span&gt;
	&lt;span style=&quot;color: #b1b100;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;'&amp;lt;span id=&amp;quot;spamstop&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;author&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_2_ID'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'&amp;quot; value=&amp;quot;'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_2_VALUE'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'&amp;quot; /&amp;gt;&amp;lt;/span&amp;gt;'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span style=&quot;color: #b1b100;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;'&amp;lt;span id=&amp;quot;spamstop&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_2_ID'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'&amp;quot; value=&amp;quot;'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_2_VALUE'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'&amp;quot; /&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;author&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&amp;lt;/span&amp;gt;'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;comment.php修改完成~&lt;/p&gt;
&lt;h4&gt;修改ajax处理文件 &lt;/h4&gt;
&lt;p&gt;打开ajax处理文件(一般是comments-ajax.php)，我使用的是&lt;a href=&quot;http://hellobmw.com/archives/ajax-comments-with-jquery-for-wordpress.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;这个&lt;/a&gt;版本，注意参考。找到&lt;code&gt;$comment_post_ID = (int) $_POST['comment_post_ID'];&lt;/code&gt;，在它上面一行开始加入如下代码：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;php&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;session_start&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_1_ID'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_POST&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'author'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;||&lt;/span&gt;  &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//假名称栏有内容&lt;/span&gt;
	&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array_key_exists&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_2_ID'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_POST&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;||&lt;/span&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//隐藏输入框不存在，可能是直接提交&lt;/span&gt;
	&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_POST&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_2_ID'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$_SESSION&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'SS_2_VALUE'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//隐藏输入框内容被修改&lt;/span&gt;
		fail&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'Sorry, but your comment seems to be a spam.&amp;lt;br /&amp;gt;对不起，您的评论被判定为垃圾评论.'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;之后找到&lt;code&gt;&quot;$comment_author = trim(strip_tags($_POST['author']));&quot;&lt;/code&gt;,将其中的&amp;#8221;author&amp;#8221;改成在修改评论框中使用的名称，按照我的例子，这里应该改成&lt;code&gt;&quot;$comment_author = trim(strip_tags($_POST['at-'.$_SESSION['SS_1_ID']]));&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;到这里，所有修改就完成了。赶快测试一下吧~&lt;/p&gt;
&lt;h4&gt;Tips&lt;/h4&gt;
&lt;p&gt;如果主题有设置页面的话，可以给这个功能加一个开关。这样在不想用的时候可以将这个功能关闭。具体的实现就留给大家了，其实是很简单的，参考主题的其他部分应该很容易就能搞定。只是有一点要说一下，如果使用了&amp;#8221;开关&amp;#8221;来控制这个功能，ajax处理部分也需要获得&amp;#8221;开关&amp;#8221;的状态，这时不需要在ajax处理文件中再去读取数据库，可以参考comment.php中对&amp;#8221;comment-post-id&amp;#8221;的传递方式在合适位置加一个hidden类型的input，把&amp;#8221;开关&amp;#8221;状态放进去，只要保证这个hidden的input在留言表单内，也就是在commentform内，提交的时候就能顺利把参数传过去。&lt;/p&gt;
&lt;p&gt;啊~第一次写功能比较复杂的主题修改教程，自我感觉比较烂，还望大家多多包涵，嘿嘿~~&lt;/p&gt;
&lt;p&gt;最后要感谢&lt;a href=&quot;http://www.svenkubiak.de/nospamnx-en/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;NoSpamNX&lt;/a&gt;和&lt;a href=&quot;http://www.svenkubiak.de/yawasp/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;YAWASP&lt;/a&gt;的作者，感谢他想出这么好的点子~~&lt;/p&gt;
&lt;hr/&gt;&lt;p&gt;The address of this article is &lt;a href=&quot;http://heybronco.net/tech/wordpress/use-hidden-input-to-stop-spam/&quot;&gt;http://heybronco.net/tech/wordpress/use-hidden-input-to-stop-spam/&lt;/a&gt;.&lt;br /&gt;When you got this here have &lt;strong&gt; more than 30 &lt;/strong&gt; comments. Why not come to check it out?! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;声明&lt;/strong&gt;&lt;br/&gt;本站遵循 &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;署名-非商业性使用-相同方式共享3.0共享协议&lt;/a&gt;. 转载请注明转自&lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt;&lt;p&gt;&amp;copy; 2009-2011 &lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt; | &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative Commons&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/528222007/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/wordpress/use-hidden-input-to-stop-spam/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://heybronco.net/tech/wordpress/use-hidden-input-to-stop-spam/feed/</wfw:commentRss><slash:comments>38</slash:comments><description>看到这个标题，估计你会联想到NoSpamNX。没错，这个idea就是借鉴NoSpamNX的。前几天在网上溜达的时候看到了一篇关于NoSpamNX的介绍，觉得挺不错，决定尝试一下。可惜的是安装之后不能正常使用，估计原因在于我的主题使用了Ajax的评论提交方式，NoSpamNX好像没办法获得评论数据。粗略看了一下代码，觉得也不算太麻烦，遂集成到主题中。 NoSpamNX生成两个Name为随机值的隐藏文本框，其中一个文本框的内容也是随机值，放置在评论表单中，一般的Spam Robot会将此表单所有的项目填充，而正常的访客几乎不可能这么做(当然，无聊地用FireBug看到了这两个文本框然后打算折腾一下的人不算 )。因此，只要判断这两个输入框的内容就知道评论是不是Spam了。 另外，鉴于某些Spam Robot会根据文本框的Name属性来填写内容，我把设计思想改了一下，把真正的留言者名称文本框的Name改成随机值，同时仍然生成两个隐藏文本框，一个Name依然随机，另一个叫&amp;#8221;author&amp;#8221;，呵呵~~是不是跟YAWASP有点像？好吧，我就是借鉴他的&amp;#8230;这样一来，Spam Robot基本上都能被kick out了。 随机值参考NoSpamNX，采用随机数+MD5来产生。生成的数据保存在session里，这样一个访客只用生成一次，直到session过期(默认是24分钟，应该足够了) 啰啰嗦嗦讲了那么多原理，下来开始动手。 增加随机值产生函数 编辑主题的function.php文件，加入如下代码，产生三个随机值。 1 2 3 4 5 6 7 8 9 function Generate_ID&amp;#40;&amp;#41; &amp;#123; if &amp;#40;empty&amp;#40;$_SESSION&amp;#91;'SS_1_ID'&amp;#93;&amp;#41;&amp;#41;//如果不存在此值，一般是新访问者或者session过期 &amp;#123; $_SESSION&amp;#91;'SS_1_ID'&amp;#93; = md5&amp;#40;uniqid&amp;#40;mt_rand&amp;#40;&amp;#41;, true&amp;#41;&amp;#41;; $_SESSION&amp;#91;'SS_2_ID'&amp;#93; = md5&amp;#40;uniqid&amp;#40;mt_rand&amp;#40;&amp;#41;, true&amp;#41;&amp;#41;; $_SESSION&amp;#91;'SS_2_VALUE'&amp;#93; = md5&amp;#40;uniqid&amp;#40;mt_rand&amp;#40;&amp;#41;, true&amp;#41;&amp;#41;; &amp;#125;//否则不产生新的随机值，使用session中已经保存的 &amp;#125; 修改header.php 修改主题的header.php文件，在适当的位置加入如下代码：session_start();这个适当的位置一般是文件的第3行，即“DOCTYPE”(第一行)和php开始标记(第二行)的下面。 修改评论框(comment.php) OK，这个算是一个关键部分，请仔细修改并保存备份。 修改原始的“留言者名称”文本框。找到类似&amp;#60;input type=&quot;text&quot; name=&quot;author&quot; id=&quot;author&quot;的一行，将name换成三个随机值中的一个。我这里改成name=&quot;at-&amp;#60;?php echo $SESSION_[SS_ID_1];&quot; 增加隐藏输入框。找到type=hidden,name=&amp;#8221;comment_post_ID&amp;#8221;的输入框(&amp;#60;input)，在下面一行加入如下代码： 1 2 3 [...]&lt;img src=&quot;http://www1.feedsky.com/t1/528222007/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/wordpress/use-hidden-input-to-stop-spam/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>session</category><category>ajax回复</category><category>隐藏输入框</category><category>Spam</category><category>Wordpress</category><pubDate>Tue, 21 Jul 2009 20:58:52 +0800</pubDate><author>Bronco</author><comments>http://heybronco.net/tech/wordpress/use-hidden-input-to-stop-spam/#comments</comments><guid isPermaLink="false">http://heybronco.net/?p=21</guid><dc:creator>Bronco</dc:creator><fs:srclink>http://heybronco.net/tech/wordpress/use-hidden-input-to-stop-spam/</fs:srclink><fs:srcfeed>http://direct.heybronco.net/feed/</fs:srcfeed><fs:itemid>feedsky/heybronco/~8688628/528222007/5661778</fs:itemid></item><item><title>Godaddy与Name.com的DNS设置界面比较</title><link>http://heybronco.net/tech/internet/the-comparison-of-dns-between-godaddy-and-namecom/</link><content:encoded>&lt;p&gt;打算写一篇关于DNS的文章，开始进后台折腾DNS。这个域名最近才转到Name.com，之前都没怎么仔细研究过Name.com的DNS设置部分，以前的域名都是放在Godaddy上面的，不如趁此机会比较一下两者。&lt;/p&gt;
&lt;p&gt;首先是Name.com。登陆进去之后进入域名管理界面，点击&amp;#8221;DNS Management&amp;#8221;进入DNS设置，出现如下画面：&lt;a href=&quot;http://heybronco.net/blog/wp-content/uploads/2009/07/Name.png&quot; onclick=&quot;return hs.expand(this, {captionId:'caption_1248230264482'});&quot; class=&quot;highslide-image&quot;&gt;&lt;img src=&quot;http://heybronco.net/blog/wp-content/uploads/2009/07/Name_thumb.png&quot; alt=&quot;image&quot; title=&quot;Click to enlarge&quot; style=&quot;display: block; float: none; margin-left: auto; margin-right: auto&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;highslide-caption&quot; id=&quot;caption_1248230264482&quot;&gt;Name.com&lt;/span&gt; 界面非常简单，一贯的Name.com风格。在这个界面上能完成所有DNS记录的添加和删除。&lt;/p&gt;
&lt;p&gt;再来看看Godaddy的Total DNS。传统的进入方法是打开Godaddy主页，点击左边的&amp;#8221;Domain Manager&amp;#8221;，登陆后出现域名列表，点击需要的域名，在接下来的域名信息页面中点击”Total DNS Control”，终于，设置界面出来了。如下是”Advanced Mode”下的画面：&lt;a href=&quot;http://heybronco.net/blog/wp-content/uploads/2009/07/Godaddy.png&quot; onclick=&quot;return hs.expand(this, {captionId:'caption_1248230264484'});&quot; class=&quot;highslide-image&quot;&gt;&lt;img src=&quot;http://heybronco.net/blog/wp-content/uploads/2009/07/Godaddy_thumb.png&quot; alt=&quot;image&quot; title=&quot;Click to enlarge&quot; style=&quot;display: block; float: none; margin-left: auto; margin-right: auto&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;highslide-caption&quot; id=&quot;caption_1248230264484&quot;&gt;Godaddy.com&lt;/span&gt;一贯Godaddy的华丽风格。在这个界面能完成DNS记录的所有操作。&lt;/p&gt;
&lt;p&gt;OK，比较完画面，再来看看操作。&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; width=&quot;630&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-weight: bold; width: 19%&quot; valign=&quot;top&quot;&gt;操作&lt;/td&gt;
&lt;td style=&quot;text-align: center; font-weight: bold; width: 27%&quot;&gt;Name.com&lt;/td&gt;
&lt;td style=&quot;text-align: center; font-weight: bold; width: 27%&quot;&gt;Godaddy(向导模式)&lt;/td&gt;
&lt;td style=&quot;text-align: center; font-weight: bold; width: 27%&quot;&gt;Godaddy(高级模式)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-weight: bold&quot; valign=&quot;top&quot;&gt;添加记录&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;输入相关数据后直接点击”添加”按钮&lt;/td&gt;
&lt;td colspan=&quot;2&quot; valign=&quot;top&quot;&gt;在相关记录区域点击”添加”按钮后输入数据再点击”确定”按钮&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-weight: bold&quot; valign=&quot;top&quot;&gt;修改记录&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;只能删除原始记录后重新添加&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;点击记录旁边的”修改”按钮，修改记录值，点击”确定”提交&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;直接修改相关记录的数据，点击”确定”提交&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-weight: bold&quot; valign=&quot;top&quot;&gt;删除记录&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;直接点击记录旁的”删除”链接&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;直接点击记录旁的”删除”按钮&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;勾选”删除”区域的复选框后点”确定”提交&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-weight: bold&quot; valign=&quot;top&quot;&gt;支持记录类型&lt;/td&gt;
&lt;td colspan=&quot;3&quot; valign=&quot;top&quot;&gt;7种类型(A,CNAME,MX,NS,TXT,AAAA,SRV)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-weight: bold&quot; valign=&quot;top&quot;&gt;TTL设置&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;随意输入数值&lt;/td&gt;
&lt;td colspan=&quot;2&quot; valign=&quot;top&quot;&gt;固定数值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-weight: bold&quot; valign=&quot;top&quot;&gt;备份记录&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;无法备份&lt;/td&gt;
&lt;td colspan=&quot;2&quot; valign=&quot;top&quot;&gt;可将记录表导出为Unix格式和Windows格式，记录格式为标准BIND格式；支持导入记录&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这样看起来，似乎Godaddy的DNS操作要强大一些。当然，萝卜青菜，各有所爱，可能有些人会觉得Godaddy的高级功能都用不上，Name.com的简单，清爽，够用就好。&lt;/p&gt;
&lt;p&gt;另外，关于Godaddy的DNS界面的进入，步骤实在是有够繁琐，有没有简单的办法呢？嘿嘿~还真有一个。使用如下网址:&lt;br /&gt;
&lt;code&gt;https://tdns.secureserver.net/?domain=example.com&amp;amp;prog_id=GoDaddy&amp;amp;type=1&lt;/code&gt;&lt;br /&gt;
将”example.com”换成自己的域名就好了。打开后进入账户验证界面，验证通过后直接跳转到Total DNS的界面。&lt;strong&gt;注意使用https，以保证账户安全。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你在使用上述两家的DNS有什么心得，欢迎留言。 &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;hr/&gt;&lt;p&gt;The address of this article is &lt;a href=&quot;http://heybronco.net/tech/internet/the-comparison-of-dns-between-godaddy-and-namecom/&quot;&gt;http://heybronco.net/tech/internet/the-comparison-of-dns-between-godaddy-and-namecom/&lt;/a&gt;.&lt;br /&gt;When you got this here have &lt;strong&gt; 28 &lt;/strong&gt; comments, Welcome to join us! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;声明&lt;/strong&gt;&lt;br/&gt;本站遵循 &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;署名-非商业性使用-相同方式共享3.0共享协议&lt;/a&gt;. 转载请注明转自&lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt;&lt;p&gt;&amp;copy; 2009-2011 &lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt; | &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative Commons&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/528222008/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/internet/the-comparison-of-dns-between-godaddy-and-namecom/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://heybronco.net/tech/internet/the-comparison-of-dns-between-godaddy-and-namecom/feed/</wfw:commentRss><slash:comments>28</slash:comments><description>打算写一篇关于DNS的文章，开始进后台折腾DNS。这个域名最近才转到Name.com，之前都没怎么仔细研究过Name.com的DNS设置部分，以前的域名都是放在Godaddy上面的，不如趁此机会比较一下两者。 首先是Name.com。登陆进去之后进入域名管理界面，点击&amp;#8221;DNS Management&amp;#8221;进入DNS设置，出现如下画面：Name.com 界面非常简单，一贯的Name.com风格。在这个界面上能完成所有DNS记录的添加和删除。 再来看看Godaddy的Total DNS。传统的进入方法是打开Godaddy主页，点击左边的&amp;#8221;Domain Manager&amp;#8221;，登陆后出现域名列表，点击需要的域名，在接下来的域名信息页面中点击”Total DNS Control”，终于，设置界面出来了。如下是”Advanced Mode”下的画面：Godaddy.com一贯Godaddy的华丽风格。在这个界面能完成DNS记录的所有操作。 OK，比较完画面，再来看看操作。 操作 Name.com Godaddy(向导模式) Godaddy(高级模式) 添加记录 输入相关数据后直接点击”添加”按钮 在相关记录区域点击”添加”按钮后输入数据再点击”确定”按钮 修改记录 只能删除原始记录后重新添加 点击记录旁边的”修改”按钮，修改记录值，点击”确定”提交 直接修改相关记录的数据，点击”确定”提交 删除记录 直接点击记录旁的”删除”链接 直接点击记录旁的”删除”按钮 勾选”删除”区域的复选框后点”确定”提交 支持记录类型 7种类型(A,CNAME,MX,NS,TXT,AAAA,SRV) TTL设置 随意输入数值 固定数值 备份记录 无法备份 可将记录表导出为Unix格式和Windows格式，记录格式为标准BIND格式；支持导入记录 这样看起来，似乎Godaddy的DNS操作要强大一些。当然，萝卜青菜，各有所爱，可能有些人会觉得Godaddy的高级功能都用不上，Name.com的简单，清爽，够用就好。 另外，关于Godaddy的DNS界面的进入，步骤实在是有够繁琐，有没有简单的办法呢？嘿嘿~还真有一个。使用如下网址: https://tdns.secureserver.net/?domain=example.com&amp;#38;prog_id=GoDaddy&amp;#38;type=1 将”example.com”换成自己的域名就好了。打开后进入账户验证界面，验证通过后直接跳转到Total DNS的界面。注意使用https，以保证账户安全。 如果你在使用上述两家的DNS有什么心得，欢迎留言。 The address of this article is http://heybronco.net/tech/internet/the-comparison-of-dns-between-godaddy-and-namecom/.When you got this here have 28 comments, Welcome [...]&lt;img src=&quot;http://www1.feedsky.com/t1/528222008/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/internet/the-comparison-of-dns-between-godaddy-and-namecom/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>DNS</category><category>Internet</category><category>Name.com</category><category>Godaddy</category><pubDate>Sat, 11 Jul 2009 22:56:31 +0800</pubDate><author>Bronco</author><comments>http://heybronco.net/tech/internet/the-comparison-of-dns-between-godaddy-and-namecom/#comments</comments><guid isPermaLink="false">http://heybronco.net/tech/internet/godaddy%e4%b8%8ename-com%e7%9a%84dns%e8%ae%be%e7%bd%ae%e7%95%8c%e9%9d%a2%e6%af%94%e8%be%83/</guid><dc:creator>Bronco</dc:creator><fs:srclink>http://heybronco.net/tech/internet/the-comparison-of-dns-between-godaddy-and-namecom/</fs:srclink><fs:srcfeed>http://direct.heybronco.net/feed/</fs:srcfeed><fs:itemid>feedsky/heybronco/~8688628/528222008/5661778</fs:itemid></item><item><title>入夜，微凉</title><link>http://heybronco.net/life/note/cool-in-night/</link><content:encoded>&lt;p&gt;翻翻日志，最近的一篇都是半个月前的了。有朋友说，你的Blog更新得不勤啊，确实如此。之前我总说，Blog嘛，本来就是跟着自己感觉走，想写了，写一篇，不想写，就放在那里不用管。但似乎，这个周期稍微长了一点点~&lt;/p&gt;
&lt;p&gt;我对这个Blog的定位是“分享技术，感受生活”。技术上，敝人确实比较菜。在WP大牛遍地都是的今天，写关于wordpress的东西一来没有新意，二来自己确实也研究不出什么，毕竟自己平时花在上面的时间不多。写点其他的？估计真的会成为自己的笔记本。生活上，我不是一个喜欢写日记的人，人比较慢热，对很多事情的感悟都是慢慢才有的。关键一点，貌似自己目前有点缺乏写东西的激情，对某件事可能当时有感觉，真正坐在电脑前了，反而不知道该写些什么。哎~这就是万年不写作文的后果啊~~&lt;/p&gt;
&lt;p&gt;Anyway，生活还是要继续，工作永远是一大堆的事摆在面前，工作一年，no longer a rookie, and the boss will no longer tolerate rookie。于是，快马加鞭，手忙脚乱。&lt;/p&gt;
&lt;p&gt;忙里偷闲地去看电影，《终结者2018》、《金刚狼》、《变形金刚2》一片不落。我平日不泡吧，不K歌，不经常FB &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /&gt;  ，看电影成了我很喜欢的消遣。当然，我看的都是早场或者晚场，正价场太贵，划不来。坐在自己喜欢的位置，把自己沉浸到电影中，偶尔啃啃爆米花，一个人的生活，一个人的自在。&lt;/p&gt;
&lt;p&gt;败了个Canon的G10，感觉很不错。只可惜自己是个门外汉，这玩意在我手上有点浪费 &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_neutral.gif' alt=':|' class='wp-smiley' /&gt;  没事，慢慢学。希望在不久的将来也能拍几张拿得出手的pp来~&lt;/p&gt;
&lt;p&gt;窗外天空在灯火的映衬下显出些许暗红，凉风吹过，估计是又要下雨了。&lt;/p&gt;
&lt;hr/&gt;&lt;p&gt;The address of this article is &lt;a href=&quot;http://heybronco.net/life/note/cool-in-night/&quot;&gt;http://heybronco.net/life/note/cool-in-night/&lt;/a&gt;.&lt;br /&gt;When you got this here have &lt;strong&gt; 9 &lt;/strong&gt; comments, Welcome to join us! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;声明&lt;/strong&gt;&lt;br/&gt;本站遵循 &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;署名-非商业性使用-相同方式共享3.0共享协议&lt;/a&gt;. 转载请注明转自&lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt;&lt;p&gt;&amp;copy; 2009-2011 &lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt; | &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative Commons&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/528222009/heybronco/feedsky/s.gif?r=http://heybronco.net/life/note/cool-in-night/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://heybronco.net/life/note/cool-in-night/feed/</wfw:commentRss><slash:comments>9</slash:comments><description>翻翻日志，最近的一篇都是半个月前的了。有朋友说，你的Blog更新得不勤啊，确实如此。之前我总说，Blog嘛，本来就是跟着自己感觉走，想写了，写一篇，不想写，就放在那里不用管。但似乎，这个周期稍微长了一点点~ 我对这个Blog的定位是“分享技术，感受生活”。技术上，敝人确实比较菜。在WP大牛遍地都是的今天，写关于wordpress的东西一来没有新意，二来自己确实也研究不出什么，毕竟自己平时花在上面的时间不多。写点其他的？估计真的会成为自己的笔记本。生活上，我不是一个喜欢写日记的人，人比较慢热，对很多事情的感悟都是慢慢才有的。关键一点，貌似自己目前有点缺乏写东西的激情，对某件事可能当时有感觉，真正坐在电脑前了，反而不知道该写些什么。哎~这就是万年不写作文的后果啊~~ Anyway，生活还是要继续，工作永远是一大堆的事摆在面前，工作一年，no longer a rookie, and the boss will no longer tolerate rookie。于是，快马加鞭，手忙脚乱。 忙里偷闲地去看电影，《终结者2018》、《金刚狼》、《变形金刚2》一片不落。我平日不泡吧，不K歌，不经常FB ，看电影成了我很喜欢的消遣。当然，我看的都是早场或者晚场，正价场太贵，划不来。坐在自己喜欢的位置，把自己沉浸到电影中，偶尔啃啃爆米花，一个人的生活，一个人的自在。 败了个Canon的G10，感觉很不错。只可惜自己是个门外汉，这玩意在我手上有点浪费 没事，慢慢学。希望在不久的将来也能拍几张拿得出手的pp来~ 窗外天空在灯火的映衬下显出些许暗红，凉风吹过，估计是又要下雨了。 The address of this article is http://heybronco.net/life/note/cool-in-night/.When you got this here have 9 comments, Welcome to join us! 声明本站遵循 署名-非商业性使用-相同方式共享3.0共享协议. 转载请注明转自信马由缰&amp;#169; 2009-2011 信马由缰 &amp;#124; Creative Commons&lt;img src=&quot;http://www1.feedsky.com/t1/528222009/heybronco/feedsky/s.gif?r=http://heybronco.net/life/note/cool-in-night/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Note</category><category>relax</category><category>work</category><category>Blog</category><pubDate>Sun, 05 Jul 2009 21:10:50 +0800</pubDate><author>Bronco</author><comments>http://heybronco.net/life/note/cool-in-night/#comments</comments><guid isPermaLink="false">http://heybronco.net/?p=13</guid><dc:creator>Bronco</dc:creator><fs:srclink>http://heybronco.net/life/note/cool-in-night/</fs:srclink><fs:srcfeed>http://direct.heybronco.net/feed/</fs:srcfeed><fs:itemid>feedsky/heybronco/~8688628/528222009/5661778</fs:itemid></item><item><title>域名转移</title><link>http://heybronco.net/life/blablabla/transfer-the-domain/</link><content:encoded>&lt;p&gt;这个米是Yahoo！搞活动的时候注册的，到今天也两个多月了，考虑到后边不一定有时间来折腾，Yahoo！的续费又贵得吓死人，趁着这两天空闲，开转！&lt;/p&gt;
&lt;p&gt;Godaddy还是Name.com呢？这是个问题~我另一个玉米就是在Godaddy上注册的，NS也是用的Godaddy的。一年下来基本没出过问题。价格上两者差不多，操作上虽然很多人都说Godaddy很复杂，我却觉得还成。考虑来考虑去，想着既然Name.com没用过，这次就试一下好了。&lt;/p&gt;
&lt;p&gt;解锁玉米，获得授权码，注册Name.com账号，提交转入，基本一路下来都很顺利。&amp;#8221;国外的服务确实比较好啊&amp;#8221;，边操作的时候我边想，结果这个想法刚一冒出来，就被Paypal摆了一道。跳出一个红框框，说“您已经超出了对单笔交易的限额”~ &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_mad.gif' alt=':x' class='wp-smiley' /&gt;  一笔8刀的交易能超出限额？重复几次都是这个结果，遂电话Paypal客服，得到的解释更囧：系统检测到这笔交易有较高的风险，于是阻止了&amp;#8230;&amp;#8230;抽风年年有，今年特别多~~直接向账户充钱呢？看了一下，最低$25，算了，老老实实用信用卡吧 &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_neutral.gif' alt=':|' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;现在已经进行到第4步了，等吧~&lt;/p&gt;
&lt;hr/&gt;&lt;p&gt;The address of this article is &lt;a href=&quot;http://heybronco.net/life/blablabla/transfer-the-domain/&quot;&gt;http://heybronco.net/life/blablabla/transfer-the-domain/&lt;/a&gt;.&lt;br /&gt;When you got this here have &lt;strong&gt; 21 &lt;/strong&gt; comments, Welcome to join us! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;声明&lt;/strong&gt;&lt;br/&gt;本站遵循 &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;署名-非商业性使用-相同方式共享3.0共享协议&lt;/a&gt;. 转载请注明转自&lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt;&lt;p&gt;&amp;copy; 2009-2011 &lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt; | &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative Commons&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/528222010/heybronco/feedsky/s.gif?r=http://heybronco.net/life/blablabla/transfer-the-domain/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://heybronco.net/life/blablabla/transfer-the-domain/feed/</wfw:commentRss><slash:comments>21</slash:comments><description>这个米是Yahoo！搞活动的时候注册的，到今天也两个多月了，考虑到后边不一定有时间来折腾，Yahoo！的续费又贵得吓死人，趁着这两天空闲，开转！ Godaddy还是Name.com呢？这是个问题~我另一个玉米就是在Godaddy上注册的，NS也是用的Godaddy的。一年下来基本没出过问题。价格上两者差不多，操作上虽然很多人都说Godaddy很复杂，我却觉得还成。考虑来考虑去，想着既然Name.com没用过，这次就试一下好了。 解锁玉米，获得授权码，注册Name.com账号，提交转入，基本一路下来都很顺利。&amp;#8221;国外的服务确实比较好啊&amp;#8221;，边操作的时候我边想，结果这个想法刚一冒出来，就被Paypal摆了一道。跳出一个红框框，说“您已经超出了对单笔交易的限额”~ 一笔8刀的交易能超出限额？重复几次都是这个结果，遂电话Paypal客服，得到的解释更囧：系统检测到这笔交易有较高的风险，于是阻止了&amp;#8230;&amp;#8230;抽风年年有，今年特别多~~直接向账户充钱呢？看了一下，最低$25，算了，老老实实用信用卡吧 现在已经进行到第4步了，等吧~ The address of this article is http://heybronco.net/life/blablabla/transfer-the-domain/.When you got this here have 21 comments, Welcome to join us! 声明本站遵循 署名-非商业性使用-相同方式共享3.0共享协议. 转载请注明转自信马由缰&amp;#169; 2009-2011 信马由缰 &amp;#124; Creative Commons&lt;img src=&quot;http://www1.feedsky.com/t1/528222010/heybronco/feedsky/s.gif?r=http://heybronco.net/life/blablabla/transfer-the-domain/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Blablabla</category><category>Transfer</category><category>Domain</category><category>Name.com</category><category>Paypal</category><category>Godaddy</category><pubDate>Sun, 21 Jun 2009 01:09:38 +0800</pubDate><author>Bronco</author><comments>http://heybronco.net/life/blablabla/transfer-the-domain/#comments</comments><guid isPermaLink="false">http://heybronco.net/?p=12</guid><dc:creator>Bronco</dc:creator><fs:srclink>http://heybronco.net/life/blablabla/transfer-the-domain/</fs:srclink><fs:srcfeed>http://direct.heybronco.net/feed/</fs:srcfeed><fs:itemid>feedsky/heybronco/~8688628/528222010/5661778</fs:itemid></item><item><title>用Cronjob定时将站点备份发送到邮箱</title><link>http://heybronco.net/tech/linux/use-cronjob-to-send-site-backup-to-mail-periodically/</link><content:encoded>&lt;p&gt;前几天Leeiio筒子说自己在BlueHost上的数据全部丢失，加上我另一个Blog的账户在事先无任何通知的情况下被suspended，开始考虑如何定时地自动备份站点。原本上周末就打算研究的，无奈工作上事情不断，只好一拖再拖~ &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_cry.gif' alt=':cry:' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;闲暇的时候逛到老N的博客，看到了一篇如何&lt;a href=&quot;http://neolee.cn/wordpress/using-cronjob-regularly-backup-mysql-database-and-send-to-mail/&quot;&gt;用Cronjob来定时备份数据库&lt;/a&gt;，不由眼前一亮，这不就是现成的方案么~今天终于能清闲一点，开工！&lt;/p&gt;
&lt;p&gt;基本思想很简单，利用Cronjob定时执行一个脚本，脚本中依次执行压缩指定文件，发送压缩文件到邮箱以及删除压缩文件的操作。很简单，对吧？另外，考虑到文件的大小以及重要性，本方案将wp自带的文件排除在外，当然，如果你自己hack了部分代码，也可以将hack之后的文件一起备份。&lt;/p&gt;
&lt;p&gt;以下操作在cPanel下完成，其他请参照进行。&lt;/p&gt;
&lt;h4&gt;创建备份工作目录&lt;/h4&gt;
&lt;p&gt;为了便于操作和管理，在用户主目录下创建一个&amp;#8221;Backup&amp;#8221;文件夹(也就是&amp;#8221;/home/(用户名)&amp;#8221;目录)。&lt;/p&gt;
&lt;h4&gt;创建文件列表&lt;/h4&gt;
&lt;p&gt;利用自己喜欢的编辑器，创建一个文本文件，名字随意，建议以&amp;#8221;.lst&amp;#8221;结尾，比如我的是&amp;#8221;BackupFiles.lst&amp;#8221;，输入要备份的文件以及目录，一条记录一行。路径以&amp;#8221;public_html&amp;#8221;开始，便于后续操作。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意：文件夹路径的最后不要以&amp;#8221;/&amp;#8221;结尾，不要有除路径和文件名之外的其他东西，比如注释。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;例如我的:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot; style=&quot;font-family:monospace;&quot;&gt;public_html&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;index.php
public_html&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;robots.txt
public_html&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;cgi-bin
public_html&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;wp-content&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;创建脚本&lt;/h4&gt;
&lt;p&gt;另外创建一个文本文件，名字同样随意，建议以&amp;#8221;.sh&amp;#8221;结尾，比如我的是&amp;#8221;SiteBackup.sh&amp;#8221;，输入如下内容：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;cd&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;home&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;用户名&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#注意将&amp;quot;(用户名)&amp;quot;替换为你的用户名&lt;/span&gt;
&lt;span style=&quot;color: #007800;&quot;&gt;suffix&lt;/span&gt;=$&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;date&lt;/span&gt; +&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;%&lt;/span&gt;Y&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;%&lt;/span&gt;m&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;%&lt;/span&gt;d&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#获取当前的日期，格式为20090620，想用两位年的话将大写的Y改成小写的y&lt;/span&gt;
&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;tar&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-zcf&lt;/span&gt; backup&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;SiteBackup_&lt;span style=&quot;color: #007800;&quot;&gt;$suffix&lt;/span&gt;.tar.gz &lt;span style=&quot;color: #660033;&quot;&gt;-T&lt;/span&gt; backup&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;BackupFiles.lst &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#此句的意思是将backup目录中的BackupFiles.lst内指定的文件项压缩成存放在backup目录下名为SiteBackup_$suffix.tar.gz的gz文件&lt;/span&gt;
mutt mail&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;example.com &lt;span style=&quot;color: #660033;&quot;&gt;-a&lt;/span&gt; backup&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;SiteBackup_&lt;span style=&quot;color: #007800;&quot;&gt;$suffix&lt;/span&gt;.tar.gz &lt;span style=&quot;color: #660033;&quot;&gt;-s&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Site Backup&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#将mail@example.com换成你自己的邮箱，&amp;quot;Site Backup&amp;quot;指的是邮件主题。&lt;/span&gt;
&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;rm&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-r&lt;/span&gt; backup&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;SiteBackup_&lt;span style=&quot;color: #007800;&quot;&gt;$suffix&lt;/span&gt;.tar.gz &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#避免浪费空间，删除本地备份文件。&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;设置环境&lt;/h4&gt;
&lt;p&gt;将上述两个文件放到之前创建好的&amp;#8221;Backup&amp;#8221;文件夹中。进入cPanel，找到Cron Jobs，使用Standard模式。（当然如果你对Linux很熟悉的话使用Advanced模式更方便一点。）在&amp;#8221;Command to Run&amp;#8221;中填入脚本的绝对路径(比如我的:&lt;code&gt;/home/bronco/backup/SiteBackup.sh&lt;/code&gt;)。时间可以按照自己的意愿进行设置，我这里选的是每天凌晨12点。最后点击&amp;#8221;Save Crontab&amp;#8221;，大功告成！&lt;/p&gt;
&lt;h4&gt;Tips&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Linux对于文件名区分大小写，操作的时候需要格外注意&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;为了测试，你可以将时间选在当前时间之后2分钟，这样保存之后就能马上进行测试。另外在设置Cron Jobs的时候有一个选项是&amp;#8221;Please enter an email address where the cron output will be sent&amp;#8221;，这里你可以填入自己的邮箱或者使用默认值(用户名),这样当cron产生输出(通常是错误或警告信息)的时候你就能得到邮件，便于调试。如果输入的是用户名的话，邮件到cPanel的WebMail里去看;&lt;/li&gt;
&lt;li&gt;Cron里的时间设置是主机时间，各位筒子需要注意一下时间换算；&lt;/li&gt;
&lt;li&gt;如果你发现需要包含的文件项远多于需要排除的文件项，你也可以建立一个排除列表，这样在使用tar压缩的时候只要指定排除文件就好了。具体的用法还请放狗搜一下，我就不代劳了 &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_smile.gif' alt=':smile:' class='wp-smiley' /&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你有什么疑问或者更好的方法，欢迎留言，大家讨论讨论~&lt;/p&gt;
&lt;hr/&gt;
&lt;strong&gt;Update:&lt;/strong&gt;
&lt;p&gt;如果想用cron备份全站，可以用以下这个脚本:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;cd&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;home&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;用户名&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#注意将&amp;quot;(用户名)&amp;quot;替换为你的用户名&lt;/span&gt;
&lt;span style=&quot;color: #007800;&quot;&gt;suffix&lt;/span&gt;=$&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;date&lt;/span&gt; +&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;%&lt;/span&gt;Y&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;%&lt;/span&gt;m&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;%&lt;/span&gt;d&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#获取当前的日期，格式为20090620，想用两位年的话将大写的Y改成小写的y&lt;/span&gt;
mysqldump &lt;span style=&quot;color: #660033;&quot;&gt;--user&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;数据库用户名&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;--password&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;数据库密码&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-h&lt;/span&gt; localhost 数据库名 &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt; backup&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;Database_&lt;span style=&quot;color: #007800;&quot;&gt;$suffix&lt;/span&gt;.sql
&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;tar&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-zcf&lt;/span&gt; backup&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;SiteBackup_&lt;span style=&quot;color: #007800;&quot;&gt;$suffix&lt;/span&gt;.tar.gz backup&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;Database_&lt;span style=&quot;color: #007800;&quot;&gt;$suffix&lt;/span&gt;.sql &lt;span style=&quot;color: #660033;&quot;&gt;-T&lt;/span&gt; backup&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;BackupFiles.lst &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#将数据库备份文件Database_$suffix.sql以及backup目录中的BackupFiles.lst内指定的文件项压缩为SiteBackup_$suffix.tar.gz&lt;/span&gt;
mutt mail&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;example.com &lt;span style=&quot;color: #660033;&quot;&gt;-a&lt;/span&gt; backup&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;SiteBackup_&lt;span style=&quot;color: #007800;&quot;&gt;$suffix&lt;/span&gt;.tar.gz &lt;span style=&quot;color: #660033;&quot;&gt;-s&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Site Backup&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#将mail@example.com换成你自己的邮箱，&amp;quot;Site Backup&amp;quot;指的是邮件主题。&lt;/span&gt;
&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;rm&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-r&lt;/span&gt; backup&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;Database_&lt;span style=&quot;color: #007800;&quot;&gt;$suffix&lt;/span&gt;.sql &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#删除数据库文件&lt;/span&gt;
&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;rm&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-r&lt;/span&gt; backup&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;SiteBackup_&lt;span style=&quot;color: #007800;&quot;&gt;$suffix&lt;/span&gt;.tar.gz &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#避免浪费空间，删除本地备份文件。&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr/&gt;&lt;p&gt;The address of this article is &lt;a href=&quot;http://heybronco.net/tech/linux/use-cronjob-to-send-site-backup-to-mail-periodically/&quot;&gt;http://heybronco.net/tech/linux/use-cronjob-to-send-site-backup-to-mail-periodically/&lt;/a&gt;.&lt;br /&gt;When you got this here have &lt;strong&gt; more than 30 &lt;/strong&gt; comments. Why not come to check it out?! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;声明&lt;/strong&gt;&lt;br/&gt;本站遵循 &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;署名-非商业性使用-相同方式共享3.0共享协议&lt;/a&gt;. 转载请注明转自&lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt;&lt;p&gt;&amp;copy; 2009-2011 &lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt; | &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative Commons&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/528222011/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/linux/use-cronjob-to-send-site-backup-to-mail-periodically/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://heybronco.net/tech/linux/use-cronjob-to-send-site-backup-to-mail-periodically/feed/</wfw:commentRss><slash:comments>40</slash:comments><description>前几天Leeiio筒子说自己在BlueHost上的数据全部丢失，加上我另一个Blog的账户在事先无任何通知的情况下被suspended，开始考虑如何定时地自动备份站点。原本上周末就打算研究的，无奈工作上事情不断，只好一拖再拖~ 闲暇的时候逛到老N的博客，看到了一篇如何用Cronjob来定时备份数据库，不由眼前一亮，这不就是现成的方案么~今天终于能清闲一点，开工！ 基本思想很简单，利用Cronjob定时执行一个脚本，脚本中依次执行压缩指定文件，发送压缩文件到邮箱以及删除压缩文件的操作。很简单，对吧？另外，考虑到文件的大小以及重要性，本方案将wp自带的文件排除在外，当然，如果你自己hack了部分代码，也可以将hack之后的文件一起备份。 以下操作在cPanel下完成，其他请参照进行。 创建备份工作目录 为了便于操作和管理，在用户主目录下创建一个&amp;#8221;Backup&amp;#8221;文件夹(也就是&amp;#8221;/home/(用户名)&amp;#8221;目录)。 创建文件列表 利用自己喜欢的编辑器，创建一个文本文件，名字随意，建议以&amp;#8221;.lst&amp;#8221;结尾，比如我的是&amp;#8221;BackupFiles.lst&amp;#8221;，输入要备份的文件以及目录，一条记录一行。路径以&amp;#8221;public_html&amp;#8221;开始，便于后续操作。 注意：文件夹路径的最后不要以&amp;#8221;/&amp;#8221;结尾，不要有除路径和文件名之外的其他东西，比如注释。 例如我的: 1 2 3 4 public_html/index.php public_html/robots.txt public_html/cgi-bin public_html/wp-content 创建脚本 另外创建一个文本文件，名字同样随意，建议以&amp;#8221;.sh&amp;#8221;结尾，比如我的是&amp;#8221;SiteBackup.sh&amp;#8221;，输入如下内容： 1 2 3 4 5 cd /home/&amp;#40;用户名&amp;#41; #注意将&amp;#34;(用户名)&amp;#34;替换为你的用户名 suffix=$&amp;#40;date +%Y%m%d&amp;#41; #获取当前的日期，格式为20090620，想用两位年的话将大写的Y改成小写的y tar -zcf backup/SiteBackup_$suffix.tar.gz -T backup/BackupFiles.lst #此句的意思是将backup目录中的BackupFiles.lst内指定的文件项压缩成存放在backup目录下名为SiteBackup_$suffix.tar.gz的gz文件 mutt mail@example.com -a backup/SiteBackup_$suffix.tar.gz -s &amp;#34;Site Backup&amp;#34; #将mail@example.com换成你自己的邮箱，&amp;#34;Site Backup&amp;#34;指的是邮件主题。 rm -r backup/SiteBackup_$suffix.tar.gz #避免浪费空间，删除本地备份文件。 设置环境 将上述两个文件放到之前创建好的&amp;#8221;Backup&amp;#8221;文件夹中。进入cPanel，找到Cron Jobs，使用Standard模式。（当然如果你对Linux很熟悉的话使用Advanced模式更方便一点。）在&amp;#8221;Command to Run&amp;#8221;中填入脚本的绝对路径(比如我的:/home/bronco/backup/SiteBackup.sh)。时间可以按照自己的意愿进行设置，我这里选的是每天凌晨12点。最后点击&amp;#8221;Save [...]&lt;img src=&quot;http://www1.feedsky.com/t1/528222011/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/linux/use-cronjob-to-send-site-backup-to-mail-periodically/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Email</category><category>CronJob</category><category>Linux</category><category>备份</category><pubDate>Sat, 20 Jun 2009 23:59:28 +0800</pubDate><author>Bronco</author><comments>http://heybronco.net/tech/linux/use-cronjob-to-send-site-backup-to-mail-periodically/#comments</comments><guid isPermaLink="false">http://heybronco.net/?p=11</guid><dc:creator>Bronco</dc:creator><fs:srclink>http://heybronco.net/tech/linux/use-cronjob-to-send-site-backup-to-mail-periodically/</fs:srclink><fs:srcfeed>http://direct.heybronco.net/feed/</fs:srcfeed><fs:itemid>feedsky/heybronco/~8688628/528222011/5661778</fs:itemid></item><item><title>升级到WordPress 2.8</title><link>http://heybronco.net/tech/wordpress/upgrade-to-wordpress-2-8/</link><content:encoded>&lt;p&gt;其实在得知正式版出来之前我是在观望的，毕竟自己没多少时间来解决潜在的主题和插件冲突，但是吧&amp;#8230;&amp;#8230;也不知道昨天晚上自己怎么搞的，鬼使神差地就点了&amp;#8221;自动升级&amp;#8221;的链接，好吧~~ &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;升级完成之后重新替换表情文件，粗略地检查了一下，好像没什么问题，心中还窃喜了一番。谁知无意点了一下留言区的表情，囧了，居然有个滚动条？用FireBug看了下布局，貌似比原来还宽了1px啊~~时间不够，姑且任之&amp;#8230;&amp;#8230;&lt;/p&gt;
&lt;p&gt;今天仔细查看了一下代码，决定修改一下插件。有同样问题的筒子可以试试看。编辑Highslide4WP插件目录下的toys.php文件，找到第12行，将margin-right:5px;改小一点，我改成了4px。保存后一切ok。ps一句，2.8的代码编辑界面进步不小，代码高亮加行号显示，方便了不少。&lt;/p&gt;
&lt;p&gt;话说打算写文章的时候又出了问题，可视化编辑器居然不能切换模式(Visual和HTML) &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_mad.gif' alt=':x' class='wp-smiley' /&gt;  看吧，这就是瞎折腾的后果&amp;#8230;&amp;#8230;本地环境上一通调试，最后发现是主题文件里对于jQuery的处理出了问题。&lt;/p&gt;
&lt;p&gt;按照原来的设计，我把取消wp自带jQuery和注册新jQuery的函数用add_action放到init里了，按照&lt;a href=&quot;http://codex.wordpress.org/Plugin_API/Action_Reference#Advanced_Actions&quot; target=&quot;_blank&quot;&gt;文档&lt;/a&gt;的解释，init是处于wordpress装载完成但是还没有向客户端发送Header的时候。不管是访问前端还是后台，这个API都会起作用。关键问题在于，新版的TinyMCE(就是可视化编辑器)似乎和jQuery有冲突，如果页面加载了jQuery,TinyMCE的加载就会出问题。&lt;/p&gt;
&lt;p&gt;知道了原因，解决就简单了。把&amp;#8221;init&amp;#8221;替换成&amp;#8221;get_header&amp;#8221;，让这个js替换仅仅在调用模板的时候，也就是前台显示的时候才起作用。&lt;/p&gt;
&lt;p&gt;还有个小问题，TinyMCE默认字体也忒小了点吧&amp;#8230;2.7.1的时候好歹有13px，&lt;span style=&quot;text-decoration: line-through;&quot;&gt;到2.8居然成了10px&lt;/span&gt;(貌似是后台缓存了老版本的CSS，2.8也是13px)&amp;#8230; &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_evil.gif' alt=':evil:' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;以上是Bronco对wordress2.8的初步研究报告，谢谢观赏 &lt;img src='http://heybronco.net/blog/wp-content/smilies/icon_smile.gif' alt=':smile:' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;hr/&gt;&lt;p&gt;The address of this article is &lt;a href=&quot;http://heybronco.net/tech/wordpress/upgrade-to-wordpress-2-8/&quot;&gt;http://heybronco.net/tech/wordpress/upgrade-to-wordpress-2-8/&lt;/a&gt;.&lt;br /&gt;When you got this here have &lt;strong&gt; 10 &lt;/strong&gt; comments, Welcome to join us! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;声明&lt;/strong&gt;&lt;br/&gt;本站遵循 &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;署名-非商业性使用-相同方式共享3.0共享协议&lt;/a&gt;. 转载请注明转自&lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt;&lt;p&gt;&amp;copy; 2009-2011 &lt;a href=&quot;http://heybronco.net&quot;&gt;信马由缰&lt;/a&gt; | &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative Commons&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/528222012/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/wordpress/upgrade-to-wordpress-2-8/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://heybronco.net/tech/wordpress/upgrade-to-wordpress-2-8/feed/</wfw:commentRss><slash:comments>10</slash:comments><description>其实在得知正式版出来之前我是在观望的，毕竟自己没多少时间来解决潜在的主题和插件冲突，但是吧&amp;#8230;&amp;#8230;也不知道昨天晚上自己怎么搞的，鬼使神差地就点了&amp;#8221;自动升级&amp;#8221;的链接，好吧~~ 升级完成之后重新替换表情文件，粗略地检查了一下，好像没什么问题，心中还窃喜了一番。谁知无意点了一下留言区的表情，囧了，居然有个滚动条？用FireBug看了下布局，貌似比原来还宽了1px啊~~时间不够，姑且任之&amp;#8230;&amp;#8230; 今天仔细查看了一下代码，决定修改一下插件。有同样问题的筒子可以试试看。编辑Highslide4WP插件目录下的toys.php文件，找到第12行，将margin-right:5px;改小一点，我改成了4px。保存后一切ok。ps一句，2.8的代码编辑界面进步不小，代码高亮加行号显示，方便了不少。 话说打算写文章的时候又出了问题，可视化编辑器居然不能切换模式(Visual和HTML) 看吧，这就是瞎折腾的后果&amp;#8230;&amp;#8230;本地环境上一通调试，最后发现是主题文件里对于jQuery的处理出了问题。 按照原来的设计，我把取消wp自带jQuery和注册新jQuery的函数用add_action放到init里了，按照文档的解释，init是处于wordpress装载完成但是还没有向客户端发送Header的时候。不管是访问前端还是后台，这个API都会起作用。关键问题在于，新版的TinyMCE(就是可视化编辑器)似乎和jQuery有冲突，如果页面加载了jQuery,TinyMCE的加载就会出问题。 知道了原因，解决就简单了。把&amp;#8221;init&amp;#8221;替换成&amp;#8221;get_header&amp;#8221;，让这个js替换仅仅在调用模板的时候，也就是前台显示的时候才起作用。 还有个小问题，TinyMCE默认字体也忒小了点吧&amp;#8230;2.7.1的时候好歹有13px，到2.8居然成了10px(貌似是后台缓存了老版本的CSS，2.8也是13px)&amp;#8230; 以上是Bronco对wordress2.8的初步研究报告，谢谢观赏 The address of this article is http://heybronco.net/tech/wordpress/upgrade-to-wordpress-2-8/.When you got this here have 10 comments, Welcome to join us! 声明本站遵循 署名-非商业性使用-相同方式共享3.0共享协议. 转载请注明转自信马由缰&amp;#169; 2009-2011 信马由缰 &amp;#124; Creative Commons&lt;img src=&quot;http://www1.feedsky.com/t1/528222012/heybronco/feedsky/s.gif?r=http://heybronco.net/tech/wordpress/upgrade-to-wordpress-2-8/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>wordpress2.8</category><category>jQuery</category><category>冲突</category><category>可视化编辑器</category><category>Wordpress</category><category>highslide4wp</category><category>布局</category><pubDate>Sat, 13 Jun 2009 00:39:02 +0800</pubDate><author>Bronco</author><comments>http://heybronco.net/tech/wordpress/upgrade-to-wordpress-2-8/#comments</comments><guid isPermaLink="false">http://heybronco.net/?p=6</guid><dc:creator>Bronco</dc:creator><fs:srclink>http://heybronco.net/tech/wordpress/upgrade-to-wordpress-2-8/</fs:srclink><fs:srcfeed>http://direct.heybronco.net/feed/</fs:srcfeed><fs:itemid>feedsky/heybronco/~8688628/528222012/5661778</fs:itemid></item></channel></rss>
