<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>零号相册 &#187; PHP</title>
	<atom:link href="http://photozero.net/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://photozero.net</link>
	<description>没事瞎写</description>
	<lastBuildDate>Thu, 04 Feb 2010 12:55:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Microsoft Access 转 MySQL软件</title>
		<link>http://photozero.net/microsoft-access-to-mysql/</link>
		<comments>http://photozero.net/microsoft-access-to-mysql/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 04:22:36 +0000</pubDate>
		<dc:creator>neekey</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://photozero.net/?p=366</guid>
		<description><![CDATA[以前刚开始学网页脚本的时候，先学的是ASP，ASP一般配合Access数据库使用。直到后来一个高手推荐我学PHP，才屁颠屁颠地学了点PHP，又用上了MySQL。Access和MySQL数据库各有特色，Access的特点是小... ]]></description>
			<content:encoded><![CDATA[<p>以前刚开始学网页脚本的时候，先学的是ASP，ASP一般配合<a href="http://zh.wikipedia.org/wiki/Access">Access</a>数据库使用。直到后来一个高手推荐我学PHP，才屁颠屁颠地学了点PHP，又用上了MySQL。Access和MySQL数据库各有特色，Access的特点是小巧玲珑，而且由一个文件构成、数据库备份之类的只要复制一下文件就好，挺方便的；所以我刚开始用MySQL的时候不解，为什么要做成这种后台形式呢？无论安装PHP程序还是备份数据，多麻烦？不过MySQL的特点也是显而易见的，高效、稳定。</p>
<p>以前偶尔会做一些小玩意，比如我曾经从网上下载了一个电话号码定位的数据库，里面大概有 130XXXX &#8211; 139XXXX 的号码段对应的城市，这个数据库是Microsoft Access格式的，而我当时用的是PHP+MySQL，所以得转为sql格式放入MySQL中。一开始用的是PHP脚本法，即写一个PHP脚本，通过<a href="http://zh.wikipedia.org/wiki/ODBC">ODBC</a>从Access中读取出来，再插入MySQL。不过那个速度是相当的慢。本来也想找一个软件来完成这项工作，但上网找了一下，似乎有一个这样的软件，不过是收费的，还是算了。</p>
<p>最近又在搞一个小玩意，《<a href="http://www.zquery.com/chengyu">成语词典</a>》，我从<a href="http://download.csdn.net/source/13517">CSDN</a>下载的源文件，原本是ASP+Access格式的，我又得把它转为MySQL，数据大概有13000条，我查了一下家里放着的那一本《学生常用成语词典》，不过才8000+条成语而已，可见这个数据还是比较全面的。</p>
<p>还好这次找到了一个<a href="http://www.bullzip.com/products/a2m/info.php">Access To MySQL</a>这个软件。这个软件是丹麦一家公司Bullzip开发的免费的软件。立即下载来试用了一下。感觉不错。首先要安装一个ODBC的软件（如果有安装IIS似乎会一起装，没有的话上<a href="http://dev.mysql.com/downloads/connector/odbc/5.1.html">MySQL官方网站下载</a>）。</p>
<p><img src="http://www.bullzip.com/products/a2m/doc/ss_sourcedatabase.png" alt="" /></p>
<p>打开程序，选中要导出的MDB文件，</p>
<p><img class="alignnone" title="select mysql db" src="http://www.bullzip.com/products/a2m/doc/ss_destinationdatabase.png" alt="" width="484" height="371" /></p>
<p>再填写MySQL服务器信息及要导入到的数据库名，</p>
<p><img class="alignnone" title="select table" src="http://www.bullzip.com/products/a2m/doc/ss_tables.png" alt="" width="484" height="371" /></p>
<p>可以选择要导入的表和列</p>
<p><img class="alignnone" title="option" src="http://www.bullzip.com/products/a2m/doc/ss_options.png" alt="" width="484" height="371" /></p>
<p>再设定“覆盖原表及数据”，“转存数据”，“转存索引”等设置，点击开始，即可开始转换过程。</p>
<p>我的大概13000条，4MB的数据也仅仅转换了30S左右，如果用PHP脚本写的话不知道要到猴年马月。</p>
<p>美中不足的是，这个软件对字符集的支持并不好，它不支持设定字符集，我第一次的时候导入以后数据全部是问号，因为它创建的表的字符集都是默认的拉丁_瑞典语字符集，而MDB文件的字符集是GB2312，后来我只好自己先创建好表，设定好字符集，再用导入数据的模式进行操作，操作完后一切正常。</p>
<p>再花了一个下午写了这个《<a href="http://www.zquery.com/chengyu">成语词典</a>》，欢迎大家使用。</p>
]]></content:encoded>
			<wfw:commentRss>http://photozero.net/microsoft-access-to-mysql/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>如何禁止搜索引擎收录？</title>
		<link>http://photozero.net/how-to-ban-robot/</link>
		<comments>http://photozero.net/how-to-ban-robot/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 04:42:29 +0000</pubDate>
		<dc:creator>neekey</dc:creator>
				<category><![CDATA[Free Talk]]></category>
		<category><![CDATA[baidu]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://photozero.net/?p=350</guid>
		<description><![CDATA[很多站长都认为有搜索引擎收录是一件好事，首先是自己的网站得到了承认，通过搜索引擎也能带来一定的流量。其实并不完全准确，某些比较不知名的搜索引擎，即便收录了许多网页，并且... ]]></description>
			<content:encoded><![CDATA[<p>很多站长都认为有搜索引擎收录是一件好事，首先是自己的网站得到了承认，通过搜索引擎也能带来一定的流量。其实并不完全准确，某些比较不知名的搜索引擎，即便收录了许多网页，并且天天更新，却不能带来实在的利益，反而浪费了服务器带宽（国内的主机一般宣称不限流量，但国外的Dreamhost这样的主机都是限制流量的），这样的搜索引擎，收不收录也是无所谓的。本文说说如何禁止某些搜索引擎的抓取及收录。</p>
<p>首先谈谈哪些搜索引擎是一定有用的，Google，百度，我认为这两个搜索引擎是必须的。国内网站的90%以上的搜索引擎流量来自于Google和百度，其中百度七成，Google三成左右。Google是搜索引擎的权威（强龙），而百度就是中文搜索的领袖（地头蛇）。除此之外，我认为其他的搜索引擎都可以屏蔽。雅虎中国、Live中文、以及国内的搜狗、搜搜、有道之辈均是无足轻重的搜索引擎。</p>
<p>禁止搜索引擎收录的方法大概有3种。</p>
<p><strong>方法一：服务器禁止访问。</strong></p>
<p>这需要服务器配备有cPanel这样的后台管理软件，设定某个搜索引擎所在的IP段禁止访问。如要封锁Google的蜘蛛，先通过域名对应IP查询得www.google.com的IP地址，如74.125.19.99，再通过IP WHOIS查询查到IP段 74.125.0.0 &#8211; 74.125.255.255 的所有人均是Google公司，把这个IP段填入IP黑名单中。（具体的方法根据不同的管理软件有所不同，可能是74.125.0.0-74.125.255.255或74.125.*.*）</p>
<p>这个方法比较好的地方在于直接禁止搜索引擎的访问，除了HTTP请求头，几乎不耗费流量，一般情况下这点流量也不会计算在你的消耗的流量当中。这是禁止搜索引擎收录的最好方法。但麻烦在于你不可能得到Google的所有IP段，这个就得靠收集了。</p>
<p><strong>方法二：robots.txt禁止</strong></p>
<p>robots.txt（小写）是放置在网站根目录下的搜索引擎权限控制文件。搜索引擎一般遵守robots.txt协议。通过编辑robots.txt协议，可以禁止某些搜索引擎的访问、禁止某个文件、文件夹被搜索引擎收录，适合用于保护私有文件。搜索引擎通过读取robots.txt，判断自己是否在被禁止搜索引擎之列，如果被禁止，一般不会对该网站进行抓取，除了<a href="http://photozero.net/baidu-with-robots-txt/">百度这变态</a>。</p>
<p>robots.txt的简单用法：</p>
<p>1.禁止百度收录（想和淘宝一样抵制百度就这么做 <img src='http://photozero.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ）</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">User-agent: *</li>
<li>Disallow:</li>
<li>&nbsp;</li>
<li>User-agent: baiduspider</li>
<li>Disallow: /</li></ol></div>
<p>首先是User-agent，每个搜索引擎都有自己的User-agent，比如Google的为 Googlebot，百度的为 baiduspider ，可能区分大小写，其他相对应的应该到搜索引擎的帮助页面去查询一下。 * 是一个通配符，通配所有的搜索引擎，Disallow: 项目表示禁止访问的位置，第一个Disallow:后面为空，表示没有禁止访问的项目，也就是允许所有的搜索引擎收录。但如果要添加例外，还可以添加一行User-agent: baiduspider，表示下面的规则仅适合百度蜘蛛，百度蜘蛛的规则是Disallow: / ，也就意味着禁止收录该域名下所有的网页。</p>
<p>在特殊情况下，我们可能希望部分不被所有的搜索引擎收录，比如Wordpress的wp-admin/目录是后台管理的目录，wp-content/是存放主题、插件的目录，这个不需要被搜索引擎收录，可以编辑robots.txt为</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">User-agent: *</li>
<li>Disallow: /wp-admin/</li>
<li>Disallow: /wp-content/</li></ol></div>
<p>2.仅允许百度以及Google收录（推荐）</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">User-agent: Googlebot</li>
<li>Disallow:</li>
<li>&nbsp;</li>
<li>User-agent: baiduspider</li>
<li>Disallow:</li>
<li>&nbsp;</li>
<li>User-agent: *</li>
<li>Disallow:/</li></ol></div>
<p>使用robots.txt需要注意的是，并非所有的搜索引擎都遵守该协议，而且就算遵守该协议不代表蜘蛛不对网站进行抓取，可能是抓取后不发布出来而已，流量是要样要耗费的。</p>
<p><strong>方法三：<a href="http://photozero.net/recognize_search_engine_robot_spider/">脚本判断，禁止</a></strong></p>
<p>这里写一下PHP的方法，其他ASP等方法也是类似的。<br />
检测来访的访客的User-agent(UA)，如果是搜索引擎的蜘蛛则立即禁止访问，提示出错信息。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">preg_match</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/(google|baidu)/i</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: #00008b;">$_SERVER</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">HTTP_USER_AGENT</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">header</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">HTTP/1.1 403 Forbidden</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">exit</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
</ol></div>
<p>该代码当来访的访客的UA中包含google或baidu字样即返回403禁止信息并退出脚本。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">//禁止UA中含有bot/crawl/spider字样的用户</span></li>
<li><span style="color: #ffa500;">//但允许百度和Google</span></li>
<li><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">preg_match</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/(bot|crawl|spider)/i</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: #00008b;">$_SERVER</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">HTTP_USER_AGENT</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;"> &amp;&amp; !</span><span style="color: Blue;">preg_match</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/(google|baidu)/i</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: #00008b;">$_SERVER</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">HTTP_USER_AGENT</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">header</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">HTTP/1.1 403 Forbidden</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">exit</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
</ol></div>
<p>用脚本的方法禁止搜索引擎的访问比较方便快捷，特别是WordPress这样的程序，只要加一个插件即可（过些天做一个发布出来）。用这个方法对服务器流量的消耗也不大，可以接受。</p>
]]></content:encoded>
			<wfw:commentRss>http://photozero.net/how-to-ban-robot/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>PHP-Javascript“返回上一页”无缓存问题</title>
		<link>http://photozero.net/php-javascript-history-back-no-cache/</link>
		<comments>http://photozero.net/php-javascript-history-back-no-cache/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 13:31:05 +0000</pubDate>
		<dc:creator>neekey</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://photozero.net/?p=321</guid>
		<description><![CDATA[很多用PHP写脚本的朋友都会遇到这样的问题，比如一个注册页面（不使用任何AJAX），需要填写账号密码等信息，填写完后需要到服务端验证，如果验证不通过，就要让用户重新填写资料，这对... ]]></description>
			<content:encoded><![CDATA[<p>很多用PHP写脚本的朋友都会遇到这样的问题，比如一个注册页面（不使用任何AJAX），需要填写账号密码等信息，填写完后需要到服务端验证，如果验证不通过，就要让用户重新填写资料，这对很多用户来说这是一大煎熬，有可能就因此放弃了注册。遇到这种问题，一般有这几种解决方法：</p>
<p>1.仍然调用刚才的页面，输出错误提示，并把&lt;input&gt;中 value的值改为刚才用户输入的值。这应该是最好的方法，但缺点是要在这个页面的&lt;input&gt;的VALUE进行处理，比较麻烦。</p>
<p>2.还有很多懒人像我一样，遇到验证不通过，直接输出一个出错提示页面，并在页面中加入JavaScript的代码：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">a</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">javascript:window.history.back();</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">返回</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">a</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">或</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">a</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">javascript:window.history.go(-1);</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">返回</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">a</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>这个代码是返回上一页的代码，返回后，除了密码类型的所有数据均会保留在网页中，这算是比较友好了。</p>
<p>但有很多朋友反应使用JS的返回后，网页上并没有数据的缓存，有时候却又有，真让人捉摸不定。前几天我在开发的时候也碰到了这个问题，上网Google许久未果，只好又从自己的代码分析入手。这时候，一句 <a href="http://cn2.php.net/manual/zh/ref.session.php">session_start();</a> 引起了我的注意。session_start(); 是开启 $_SESSION 会话的函数，开启SESSION后，似乎是每次访问一个网页都要重新调用一次网页。我把这句话去掉以后，问题就解决了。如果遇到网页数据不能缓存的，不妨去掉SESSION试试 <img src='http://photozero.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://photozero.net/php-javascript-history-back-no-cache/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Contact Me 服务</title>
		<link>http://photozero.net/contact-me-services/</link>
		<comments>http://photozero.net/contact-me-services/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 10:19:29 +0000</pubDate>
		<dc:creator>neekey</dc:creator>
				<category><![CDATA[Free Talk]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://photozero.net/?p=318</guid>
		<description><![CDATA[ContactMe服务是专门为各种网站/博客建立的电子邮件联系表单的网站，通过ContactMe服务，现在你可以不必费尽心思去自己亲自动手做一个联系页面，也不用担心你的服务器不支持PHP的mail函数了，... ]]></description>
			<content:encoded><![CDATA[<p>ContactMe服务是专门为各种网站/博客建立的电子邮件联系表单的网站，通过ContactMe服务，现在你可以不必费尽心思去<a href="http://photozero.net/create_feedback_page/">自己亲自动手做一个联系页面</a>，也不用担心你的服务器不支持PHP的mail函数了，把你的Contact Me页面让它来托管吧！</p>
<p>示范页面: <a href="http://dev.neekey.com/callme/lang/zh-cn/contact/2">http://dev.neekey.com/callme/lang/zh-cn/contact/2</a></p>
<p><a href="http://dev.neekey.com/callme/lang/zh-cn/contact/2"></a>服务简介：在这个网站上输入你的邮件地址，经过邮件地址确认后，将会得到一个唯一的URL地址，在自己的博客上创建一个ContactMe的链接到这里，你的访客要给你留言时就可以直接上这里来了。你既省去了制作页面的麻烦，也不怕电子邮件地址直接放在网页上而被SPAM扫描到了 <img src='http://photozero.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>服务特色：</p>
<p>1.多语言支持。可选多种语言，使用范围广，国际化服务。（目前提供中英两种语言，但预留了接口，只要有翻译，可以随意增加语言种类）。</p>
<p>2.多模板支持。不仅有系统默认的模板，将来还可以提供多种模板，（也可以自己编写HTML、CSS）让你的联系页面与众不同。</p>
<p>3.多种调用格式支持。除了直接访问这个URL外，将来预计还能支持在自己的博客上通过FLASH，JavaScript，iframe调用。</p>
<p>4.多项贴心设置：开启Email可见模式，可以把您的Email地址制作成图片显示，既放置被SPAM扫描到，又能在服务器发生错误时手动发送邮件。</p>
<p>目前这个服务只制作了一个联系表单，注册模块等还未制作，其他的服务都在构思中。如果想先体验这项服务的不妨留下你的大名（邮件地址我在后台可以看到），率先体验一下这项功能。</p>
]]></content:encoded>
			<wfw:commentRss>http://photozero.net/contact-me-services/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>PHPxref使用指南</title>
		<link>http://photozero.net/phpxref_tutorial/</link>
		<comments>http://photozero.net/phpxref_tutorial/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 03:00:35 +0000</pubDate>
		<dc:creator>neekey</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xampp]]></category>

		<guid isPermaLink="false">http://photozero.net/?p=317</guid>
		<description><![CDATA[PHPXref是一个十分优秀的PHP开发工具，它能将某一个程序（如Wordpress）中所有的函数、变量、常量等分类记录，生成一个HTML网页列表，你可以轻松地在这个列表中找到某个函数在什么位置被定义... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://phpxref.com">PHPXref</a>是一个十分优秀的PHP开发工具，它能将某一个程序（如Wordpress）中所有的函数、变量、常量等分类记录，生成一个HTML网页列表，你可以轻松地在这个列表中找到某个函数在什么位置被定义，在什么位置被引用。这一点无论是对于一个Wordpress插件开发者，还是想学习研究Wordpress的人都是十分有用的。</p>
<p>PHPXref官方有个已经制作好的Wordpress的分析文档：<a href="http://phpxref.com/xref/wordpress/">http://phpxref.com/xref/wordpress/</a>，此外，PHPXref还制作了多种PHP程序的分析文档，有兴趣的可以<a href="http://www.google.com/search?hl=en&amp;newwindow=1&amp;q=site%3Aphpxref.com%2Fxref%2F&amp;btnG=Search">Google</a>站内搜索一下。</p>
<p><strong>PHPXref的主要功能包括</strong></p>
<p>1.文件管理。无论要找什么文件，用它能很快地搜索到，如果你的文件中有符合语法规则的注释，PHPXref还能将它列在文件名的旁边，更容易了解这个文件的功能用途，也不用为了找一个文件翻遍整个文件夹，打开每个文件查找注释了。</p>
<p>2.函数、变量、常量、类管理。Wordpress内置了多种功能强大的函数、类，无论是字符处理还是远程URL读取等都有现成的函数，但我们往往不知道这个函数能在Wordpress里面找到，现在容易多了，搜索一下就找到了，如果在开发过程中遇到某个Wordpress函数，不知道它是干什么用的，这时候就得找到这个函数在哪里定义的，可是Wordpress里面上百个文件上哪找去？还是用PHPXref好了。</p>
<p>3.文件包含管理。Wordpress中需要很多 include，require包含别的文件，但偶尔也会遇到重复包含导致出错，虽然require_once可以解决，但我们也最好要了解某个脚本包含了哪些文件，要调用这个文件时也心中有数。PHPXref提供了每个文件的包含文件列表和被包含的文件。</p>
<p>4.源代码高亮。这个功能也是比较实用的，但在实际测试中偶尔会出错。</p>
<p>5.出色的关联功能。在浏览源代码时，将鼠标指到某个函数名，就会在鼠标旁边出现函数的定义页面，以及被使用次数，此外，还对使用较多的变量名，也是可以直接有个页面显示所有的关于这个变量的使用情况。</p>
<p><strong>既然PHPxref那么强大，该如何使用呢？</strong></p>
<p>1.首先，从<a href="http://phpxref.sourceforge.net/">SF下载</a>最新的程序，现在的版本是0.7，下载那个win32的版本就好了。下载后解压出来。</p>
<p>2.phpxref目录下有一个 source 的文件夹，这是存放源代码的文件夹，把另外下载的Wordpress源代码放到这里来，请注意，不要把 wordpress/这整个目录放进来，而是里面的文件放进来就行了，确保以 source/index.php，source/wp-content/ ..这样的格式就行。</p>
<p>3.运行可执行文件phpxref.exe ，将进行生成文档的工作，这个过程大约需要1分钟左右，由于需要高频率读取硬盘和大量计算消耗CPU资源，请暂停其他工作。</p>
<p>4.提示成功后，output 这个目录下就是所有的文档了，建议在本地上用XAMPP进行调试，把整个output 文件夹搬到 xampp的 htdocs 的目录下，再把名字改为好记的 phpxref ，这样，就可以通过 http://localhost/phpxref/ 访问了。效果和 http://phpxref.com/xref/wordpress/ 的是一模一样，当然，速度快了很多。</p>
<p>PHPXref还提供了在Linux下生成文档的版本，但我很少用Ubuntu，也没有去Ubuntu下测试了，我想更多数人需要的还是Win系统下的，如果有需要，把Win下生成的文档可以搬到服务器上去供大家访问，还可以在页面下面放点Google Adsense广告赚点外快。但PHPxref生成的文档实在太大了，一个1.2MB的Wordpress(压缩包)，解压后再生成文档，居然要80多MB的位置！压缩完后也需要接近20MB，所以我打消了把它放在自己服务器上的愿望（说不定制作重复的镜像还会被搜索引擎处罚）。</p>
<p>除了用PHPXref来生成已有的Wordpress或其他PHP示范程序（如Discuz）进行学习外，用PHPXref来生成自己制作的PHP程序，进行检验错误或者是整理代码资源也很有用。我从学PHP至今大概写过5个比较大型的程序（我认为算比较大型了，但没有一个是成型的商业产品），几乎也是写了5次的邮件地址验证函数，用户名验证函数，密码验证函数，MySQL类&#8230;看来还得用PHPXref来整理资源了。</p>
<p>在使用PHPxref之前，我还读过awflasher.com提供的<a href="http://www.awflasher.com/blog/archives/1079">简介</a>，特此感谢。</p>
]]></content:encoded>
			<wfw:commentRss>http://photozero.net/phpxref_tutorial/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>创建你的电子邮件联系页面</title>
		<link>http://photozero.net/create_feedback_page/</link>
		<comments>http://photozero.net/create_feedback_page/#comments</comments>
		<pubDate>Sat, 16 Aug 2008 02:51:12 +0000</pubDate>
		<dc:creator>neekey</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://photozero.net/?p=303</guid>
		<description><![CDATA[无论是一个网站还是一个博客，站长与网友的互动，不但需要有一个QQ、Email，更需要一个在线的即时Email联系表单。在Wordpress博客中有很多插件能够实现这种功能。但如果发送一个邮件都得调... ]]></description>
			<content:encoded><![CDATA[<p>无论是一个网站还是一个博客，站长与网友的互动，不但需要有一个QQ、Email，更需要一个在线的即时Email联系表单。在Wordpress博客中有很多插件能够实现这种功能。但如果发送一个邮件都得调用WP程序的话，速度慢、安全系数不高，不如单独创建一个联系页面。</p>
<p>创建一个feedback.php 页面</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">&lt;?php</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #00008b;">$email</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$_REQUEST</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">email</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> ;</span><span style="color: #ffa500;">//留言者的Email </span></li>
<li><span style="color: #00008b;">$message</span><span style="color: Gray;"> = </span><span style="color: Blue;">strip_tags</span><span style="color: Olive;">(</span><span style="color: #00008b;">$_REQUEST</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">message</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//留言信息，去除HTML标记</span></li>
<li><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Green;">empty</span><span style="color: Olive;">(</span><span style="color: #00008b;">$message</span><span style="color: Olive;">)){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">mail</span><span style="color: Olive;">(</span><span style="color: Gray;">&nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">username@example.com</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Feedback Form Blog</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: #00008b;">$message</span><span style="color: Gray;">.</span><span style="color: #8b0000;">'</span><span style="color: Red;">From:</span><span style="color: #8b0000;">'</span><span style="color: Gray;">.</span><span style="color: #00008b;">$email</span><span style="color: Gray;"> , </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">From: username@example.com</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//调用系统函数 mail() 发送邮件。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//第一个参数是接收者，第二个参数是标题，这里设置了固定的标题，第三个是留言信息，第四个实际上设置了发送者的邮箱，为了防止被邮件系统误判为垃圾邮件，且安全起见，最好不要用用户直接输入的邮箱。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">header</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">Location:http://photozero.net/thankyou.html</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//留言完转到感谢页面</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></li>
<li><span style="color: Gray;">&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;</span></li>
<li><span style="color: Gray;">&lt;head&gt;</span></li>
<li><span style="color: Gray;">&lt;meta http-equiv=&quot;Content-type&quot; content=&quot;text/html;charset=utf-8&quot; /&gt;</span></li>
<li><span style="color: Gray;">&lt;title&gt;Feedback&lt;/title&gt;</span></li>
<li><span style="color: Gray;">&lt;/head&gt;</span></li>
<li><span style="color: Gray;">&lt;body&gt;</span></li>
<li><span style="color: Gray;">&lt;!-- 创建一个提交信息的表单 --&gt;</span></li>
<li><span style="color: Gray;">&lt;form method=&quot;post&quot; action=&quot;feedback.php&quot;&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; 您的邮箱: &lt;input name=&quot;email&quot; type=&quot;text&quot; /&gt;&lt;br /&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; 意见或建议:&lt;br /&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &lt;textarea name=&quot;message&quot; rows=&quot;15&quot; cols=&quot;40&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &lt;input type=&quot;submit&quot; value=&quot;提交&quot; /&gt;</span></li>
<li><span style="color: Gray;">&lt;/form&gt;</span></li>
<li><span style="color: Gray;">&lt;/body&gt;</span></li>
<li><span style="color: Gray;">&lt;/html&gt;</span></li></ol></div>
<p>需要有几个需要注意的地方。<br />
1.mail() 函数。不是所有的空间都可以使用mail()函数的，要取决于所在的服务器是否有正确设置了sendmail，否则即使使用了mail()函数也是无法发信的。创建这个页面后最好自己试一下能否使用。一般来说，国外比较大的空间，如我用的Dreamhost，mail函数都配置得挺好的，可以直接用。而国内很多空间的服务水平很差，很多函数、PHP库都没有设置、启用。我曾经用过的某个国内空间就是这样，（甚至连 iconv 这个很重要的函数都不支持，PHP版本居然还是 4.2.5的，我问他们技术支持，让他们升级PHP版本，他们却无动于衷）如果mail() 函数无法使用，则可能需要使用一些第三方的MAIL库或MAIL类，我也没试过，下回找一个</p>
<p>2.编码。国内很多邮箱是采用了GB2312等编码，建议在mail()函数的第四个参数（邮件的HEADER）设置一下，如这个代码来取代mail函数</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">mailer</span><span style="color: Olive;">(</span><span style="color: #00008b;">$to</span><span style="color: Gray;">,</span><span style="color: #00008b;">$subject</span><span style="color: Gray;">,</span><span style="color: #00008b;">$content</span><span style="color: Gray;">,</span><span style="color: #00008b;">$header</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$header</span><span style="color: Gray;"> .= </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Content-type: text/plain; charset=utf-8 </span><span style="color: Navy;">\r\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//设置邮件编码</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$header</span><span style="color: Gray;"> .= </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Content-Transfer-Encoding: 8bit</span><span style="color: Navy;">\r\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$subject</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">=?UTF-8?B?</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">.</span><span style="color: Blue;">base64_encode</span><span style="color: Olive;">(</span><span style="color: #00008b;">$subject</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">?=</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//对标题进行编码，</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; @</span><span style="color: Blue;">mail</span><span style="color: Olive;">(</span><span style="color: #00008b;">$to</span><span style="color: Gray;">,</span><span style="color: #00008b;">$subject</span><span style="color: Gray;">,</span><span style="color: #00008b;">$content</span><span style="color: Gray;">,</span><span style="color: #00008b;">$header</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">mailer</span><span style="color: Olive;">(</span><span style="color: Gray;">&nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">username@example.com</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Blue;">strip_tags</span><span style="color: Olive;">(</span><span style="color: #00008b;">$_REQUEST</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">title</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;">, </span><span style="color: #00008b;">$message</span><span style="color: Gray;">.</span><span style="color: #8b0000;">'</span><span style="color: Red;">From:</span><span style="color: #8b0000;">'</span><span style="color: Gray;">.</span><span style="color: #00008b;">$email</span><span style="color: Gray;"> , </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">From: username@example.com</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
</ol></div>
<p>其他CSS之类的自己随便做一下就好了，挺简单的吧:)</p>
]]></content:encoded>
			<wfw:commentRss>http://photozero.net/create_feedback_page/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>PHP中的UNZIP（解压缩）</title>
		<link>http://photozero.net/php_function_unzip/</link>
		<comments>http://photozero.net/php_function_unzip/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 10:20:39 +0000</pubDate>
		<dc:creator>neekey</dc:creator>
				<category><![CDATA[Free Talk]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[unzip]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://photozero.net/?p=288</guid>
		<description><![CDATA[Linux系统一直对ZIP格式提供了良好的支持，在Linux系统中有unzip命令可以解压缩文件包，这对于使用SSH在Dreamhost上搭建博客的朋友是一个十分方便的功能。此外，7ZIP（推荐，开源免费）与WinRAR是... ]]></description>
			<content:encoded><![CDATA[<p>Linux系统一直对ZIP格式提供了良好的支持，在Linux系统中有unzip命令可以解压缩文件包，这对于<a href="http://photozero.net/using_dreamhost_ssh/">使用SSH在Dreamhost</a>上搭建博客的朋友是一个十分方便的功能。此外，7ZIP（推荐，开源免费）与WinRAR是常用于Win系统上的ZIP压缩/解压缩软件。在PHP中我们该如何使用压缩和解压缩功能呢？</p>
<p>上回我做了一个一键下载WP主题的插件<a href="http://photozero.net/get_theme/">Get_Theme</a>，代码核心的两部分分别是下载与解压缩。下载比较简单了，通常是用file_get_contents(FILENAME); 这函数或者用 fsockopen 函数下载即可，可解压缩部分就比较复杂点了。由于我对ZIP也算是一无所知，唯一知道的就是PHP似乎内置了对ZIP/UNZIP的支持。后来一查文档才发现，这个功能需要加载额外的DB库，并且有些主机不支持。还好网上提供了很多不需要加载库的解决方案。</p>
<p>第一次用了PHPMYADMIN里面的unzip库。如果有本地用XAMPP搭建测试平台的不妨到 phpMyAdmin/libraries 目录下，找到 unzip.lib.php，里头有个 SimpleUnzip 的UNZIP类，它的作用是将一个ZIP文件解析出一个二维数组，这个数组中每个文件又是一个数组，数组中包含了路径、文件数据、创建时间等信息，解出数组后还要根据每个文件的路径判断是否需要新建文件夹等。后来我用这个类在本地的PHP环境中测试了一下，工作得不错。但当我把它上传到Dreamhost空间进行测试的时候却出现了问题。当我从Wordpress主题站下载主题进行测试解压时，解压后的每个文件均能被正常识别、创建，但文件里的内容都是乱码。我一直不解其中原因。后来我想起7ZIP里面有个似乎可以查看压缩算法的功能，看了一下，算法好像都是 Deflate。而下面的主操作系统信息引起了我的怀疑。我在本地压缩的几个主题包的主操作系统都是 FAT ，而WP主题站下载的主题的主操作系统都是 UNIX ，可能是由于数据的存储方式不同导致了这个问题。  而后我又记起了WP自己拥有的插件升级功能，必然也需要用到UNZIP功能，在WP的文件里找了一下，终于找到了一个UNZIP类，它位于 wp-admin/includes/ 下的 class-pclzip.php 用这个 PclZip 类很容易地解析出了ZIP包的内容，同样需要进行创建文件夹、文件等操作。</p>
<p>这里说一下大概过程，假设有个$archive_files数组，里面有数个$file数组，$file里是真正的每个文件的数据，如$file[filename] 是文件名（包含文件路径，有可能是 file.php 也有可能是 /dir/file.php），$file[content]是文件数据，还有创建时间修改时间等就不列了。</p>
<p>有了文件名首先把它连上绝对路径，用file_exists()或is_dir()的函数判断路径是否存在，不存在就要创建。判断的时候还要注意有可能存在多级文件夹未创建的情况，所以应该先用 explode 函数分解成几个数组，用个for循环把每级目录都判断一遍，不存在则创建。</p>
<p>接下来就是用文件函数创建函数了。</p>
]]></content:encoded>
			<wfw:commentRss>http://photozero.net/php_function_unzip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何获取Alexa排名数据</title>
		<link>http://photozero.net/get_alexa_ranking/</link>
		<comments>http://photozero.net/get_alexa_ranking/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 05:38:55 +0000</pubDate>
		<dc:creator>neekey</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[alexa]]></category>
		<category><![CDATA[baidu]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://photozero.net/?p=262</guid>
		<description><![CDATA[上回说到Alexa的排名数据来源于Alexa工具条，所以排名数据并不十分准确，特别是对于中文网站来说，国内装Alexa工具条的多是被某些网站“误导”的用户以及一些网站站长，所以很多人也对Alexa... ]]></description>
			<content:encoded><![CDATA[<p>上回说到Alexa的排名数据来源于Alexa工具条，所以排名数据并不十分准确，特别是对于中文网站来说，国内装Alexa工具条的多是被某些网站“误导”的用户以及一些网站站长，所以很多人也对Alexa数据不以为然。在目前情况下，Alexa的排名还是和Google PR一样被广告商们看重的数据和作为衡量网站广告投放价值的依据。</p>
<p>这里讲讲如何获取Alexa的数据排名。最简单的莫过于装上<a href="http://www.alexa.com">Alexa</a>提供的<a href="http://www.alexa.com/site/download/">工具条</a>了，Alexa提供了Firefox和IE的版本，但纯粹为了看一个网站的排名而安装这个插件显得有点浪费资源。我在Firefox浏览器用的是<a href="https://addons.mozilla.org/zh-CN/firefox/addon/321">SearchStatus</a>这个插件，这个插件同时显示了Google PR和Alexa排名，占用位置也不大，用起来比较方便。</p>
<p>本文着重要讲的是如何使用从Alexa的服务器下载数据，并进行分析后应用于WP插件或提供给访客（如 <a ref="nofollow" href="http://alexa.chinaz.com/">http://alexa.chinaz.com/</a>这样的服务）。Alexa官方提供了收费的API<a href="http://aws.amazon.com/awis">接口</a>，每千次查询$0.15（上回凭印象说是$0.1，更正一下），既然要收费，肯定没有多少人愿意花这钱了，特别在我们中国人看来更是难以理解，照理说用你Alexa的数据应该是相当给你面子，给你人气，你还要向我收费？还好早就有人破解了Alexa工具条（貌似很多国内网站强迫要求下载的Alexa工具条还经过改装，拥有木马功能了），并把它的服务器接口盗取出来分享给大家了。</p>
<blockquote><p>接口一：</p>
<address><a href="http://data.alexa.com/data/+wQ411en8000lA?cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;wid=12206&amp;act=00000000000&amp;ss=1680x1050&amp;bw=964&amp;t=0&amp;ttl=35371&amp;vis=1&amp;rq=4&amp;url=http://www.baidu.com">http://data.alexa.com/data/+wQ411en8000lA?cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;wid=12206&amp;act=00000000000&amp;ss=1680&#215;1050&amp;bw=964&amp;t=0&amp;ttl=35371&amp;vis=1&amp;rq=4&amp;url=http://www.baidu.com</a></address>
<p>接口二：</p>
<address><a href="http://data.alexa.com/data/TCaX/0+qO000fV?cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;wid=31472&amp;act=00000000000&amp;ss=1024x768&amp;bw=639&amp;t=0&amp;ttl=4907&amp;vis=1&amp;rq=23&amp;url=http://www.baidu.com">http://data.alexa.com/data/TCaX/0+qO000fV?cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;wid=31472&amp;act=00000000000&amp;ss=1024&#215;768&amp;bw=639&amp;t=0&amp;ttl=4907&amp;vis=1&amp;rq=23&amp;url=http://www.baidu.com</a></address>
<p>接口三：</p>
<address><a href="http://data.alexa.com/data/ezdy01DOo100QI?cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;wid=16865&amp;act=00000000000&amp;ss=1024x768&amp;bw=775&amp;t=0&amp;ttl=1125&amp;vis=1&amp;rq=2&amp;url=http://www.baidu.com">http://data.alexa.com/data/ezdy01DOo100QI?cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;wid=16865&amp;act=00000000000&amp;ss=1024&#215;768&amp;bw=775&amp;t=0&amp;ttl=1125&amp;vis=1&amp;rq=2&amp;url=http://www.baidu.com</a></address>
<p>接口四：</p>
<address><a href="http://data.alexa.com/data/+wQ411en8000lA?cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;wid=12206&amp;act=00000000000&amp;ss=1680x1050&amp;bw=964&amp;t=0&amp;ttl=35371&amp;vis=1&amp;rq=4&amp;url=http://www.baidu.com">http://data.alexa.com/data/+wQ411en8000lA?cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;wid=12206&amp;act=00000000000&amp;ss=1680&#215;1050&amp;bw=964&amp;t=0&amp;ttl=35371&amp;vis=1&amp;rq=4&amp;url=http://www.baidu.com</a></address>
</blockquote>
<p>事实上，分析一下这些地址可以看到它已经将用户的浏览器信息，系统信息等发送给了服务端。</p>
<blockquote><p>ezdy01DOo100QI是aid。<br />
&#8220;cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;&#8221;这部分是固定值。<br />
wid是个随机数。<br />
act数据包含了Alexa Toobar功能的被使用情况。<br />
ss很明显是屏幕分辨率了。<br />
bw是IE窗口的宽度。<br />
t取值是0或1，和当前IE的window对象还有referrer有关。<br />
ttl是当前页面打开速度，和Site Stats中的Speed有关。<br />
vis表明IE是否显示工具条。<br />
rq是对象计数器。</p></blockquote>
<p>有了这些接口，我们就可以提供Alexa排名查询的服务了。</p>
<p>访问任意上述地址任意一个，查询baidu.com的信息，返回XML文件如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;?</span><span style="color: Green;">xml</span><span style="color: Gray;"> </span><span style="color: #00008b;">version</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1.0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">encoding</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">UTF-8</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">?&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">ALEXA</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">VER</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0.9</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">URL</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">baidu.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">HOME</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">AID</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">RLS</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">PREFIX</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">more</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">315</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">RL</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">HREF</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">www.3721.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">3 7 2 1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">RL</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">HREF</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">search.21cn.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">21CN</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">RL</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">HREF</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">itsearch.ccidnet.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">itsearch.ccidnet.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">RL</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">HREF</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">e.pku.edu.cn/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">e.pku.edu.cn/</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">RL</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">HREF</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">21cn.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">21cn.Com -</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">RL</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">HREF</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">163.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">163.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">RL</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">HREF</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">search.163.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">search.163.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">RL</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">HREF</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">dir.sohu.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">dir.sohu.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">RL</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">HREF</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">cn.search.yahoo.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">cn.search.yahoo.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">RL</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">HREF</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">yahoo.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Yahoo!</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">RLS</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">SD</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">A</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">FLAGS</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">DMOZ</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">TITLE</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">TEXT</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Baidu.com</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">ADDR</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">STREET</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">The Ideal International Bldg, 12th floor</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">CITY</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Beijing 100080,&nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">STATE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">ZIP</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">COUNTRY</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">CHINA</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">CREATED</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">DATE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">11-Oct-1999</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">DAY</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">11</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">MONTH</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">10</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">YEAR</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1999</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">PHONE</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">NUMBER</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">+86 1082607100</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">OWNER</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">NAME</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Baidu.com, sillyser</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">EMAIL</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">ADDR</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">baidu_dns_master@baidu.com</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">LANG</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">LEX</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">zh-CN</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">LINKSIN</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">NUM</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">58665</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">SPEED</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">TEXT</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1062</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">PCT</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">82</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">POPULARITY</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">URL</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">baidu.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TEXT</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">11</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">RANK</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">DELTA</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-2</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">CHILD</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">SRATING</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">REACH</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">RANK</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">13</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">SD</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">KEYWORDS</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">KEYWORD</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">VAL</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Chinese Simplified</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">KEYWORDS</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">DMOZ</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">SITE</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">BASE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">baidu.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Baidu.com</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">DESC</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">The leading Chinese language search engine, provides â€œsimple and reliableâ€? search experience, strong in Chinese language and multi-media content including MP3 music and movies, the first to offer WAP and PDA-based mobile search in China.</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">CATS</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">CAT</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">ID</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Top/World/Chinese_Simplified/计算机/互联网络/搜寻/搜索引擎</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">TITLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">搜寻/搜索引擎</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">CID</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1005774</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">CATS</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">SITE</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">DMOZ</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">ALEXA</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>开头包括了一些反向链接的网站，中间是网站排名等信息，下面是网站介绍，网站管理员可以向Alexa添加这些信息。如果是比较不知名的小站，如我的http://photozero.net 信息就没有那么全了。</p>
<p>在前面的文章里提到了，调用<a href="http://www.neekey.com">Neekey API services</a>的<a href="http://www.neekey.com/alexa">Alexa rank显示图片</a>还会提升Alexa排名，实际上指的就是在调用Alexa数据时，我们是模拟Alexa工具条进行查询的，所以你的博客的Alexa排名自然就提升上去了，不信您试试？我在Firefox里装上<a href="https://addons.mozilla.org/zh-CN/firefox/addon/321">SearchStatus</a>插件后，每天访问自己的博客一会儿，眼睁睁看着Alexa排名从300W排名开外冲到目前的110W。</p>
<p>PHP中获取文件排名的方法</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #00008b;">$content</span><span style="color: Gray;"> = </span><span style="color: Blue;">file_get_contents</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">$alexaURL</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//自行将URL放入，如果服务器的file函数没有开启ALLOW_URL_OPEN 选项（如Dreamhost），应该用 fsockopen 等函数替代。</span></li>
<li><span style="color: #00008b;">$pattern</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">/&lt;POPULARITY URL=&quot;\s*(.+?)&quot; TEXT=&quot;\s*(.+?)&quot;\/&gt;/</span><span style="color: #8b0000;">'</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//在XML中匹配的 &lt;populartity /&gt;项里面的数据就是Alexa排名了</span></li>
<li><span style="color: Blue;">preg_match</span><span style="color: Olive;">(</span><span style="color: #00008b;">$pattern</span><span style="color: Gray;">, </span><span style="color: #00008b;">$content</span><span style="color: Gray;">, </span><span style="color: #00008b;">$match</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//进行匹配搜索</span></li>
<li><span style="color: Green;">echo</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">$match</span><span style="color: Olive;">[</span><span style="color: Maroon;">2</span><span style="color: Olive;">]</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//$match[2] 就是排名了。</span></li>
<li><span style="color: #ffa500;">//如果需要其他信息就自己写个匹配模式，从里面提取出来就行了。当然用PHP提供的XML处理函数也是可以的。</span></li>
</ol></div>
<p>除了在服务端调用进行输出外，做个AJAX调用的查询程序也不错，还节省了服务器资源。下次抽空做个放出来。</p>
]]></content:encoded>
			<wfw:commentRss>http://photozero.net/get_alexa_ranking/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP创建(中/英文字)图片</title>
		<link>http://photozero.net/php_create_image_with_english_and_chinese/</link>
		<comments>http://photozero.net/php_create_image_with_english_and_chinese/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 00:21:27 +0000</pubDate>
		<dc:creator>neekey</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[image]]></category>

		<guid isPermaLink="false">http://photozero.net/?p=270</guid>
		<description><![CDATA[这个PHP代码是我做的一个程序的一部分，现在贴出来分享一下。这个代码的功能是创建一个图片，不但可以用自定义字体在图片上写英文，也可以写中文了！这个代码适用于验证码、给图片加... ]]></description>
			<content:encoded><![CDATA[<p>这个PHP代码是我做的一个程序的一部分，现在贴出来分享一下。这个代码的功能是创建一个图片，不但可以用自定义字体在图片上写英文，也可以写中文了！这个代码适用于验证码、给图片加水印等功能。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">&lt;?php</span></li>
<li><span style="color: #ffa500;">/*</span></li>
<li><span style="color: #ffa500;">Photozero.net 改编自PHP参考文档</span></li>
<li><span style="color: #ffa500;">*/</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">//设置Header，如果输出图片不成功，请先暂时去掉这代码，查看错误信息</span></li>
<li><span style="color: Blue;">header</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Content-type: image/png</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">header</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Cache-Control: no-cache</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #00008b;">$zh_text</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">黑体</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$en_text</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">Test</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//要输出的字</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #00008b;">$zh_font</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">simhei.ttf</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$en_font</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">arial.ttf</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//字库的文件名。建议中文字体和E文字体用不一样的，因为宋体、黑体字库里的英文实在不咋滴</span></li>
<li><span style="color: #ffa500;">//这里用的都是TTF字体。懒得上网找就到 C:\WINDOWS\Fonts 下，Copy几个字体到程序目录下就好了</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">// 创建一个真彩的图片背景，参数是 X长 ,Y宽。</span></li>
<li><span style="color: #00008b;">$im</span><span style="color: Gray;"> = </span><span style="color: Blue;">imagecreatetruecolor</span><span style="color: Olive;">(</span><span style="color: Maroon;">400</span><span style="color: Gray;">, </span><span style="color: Maroon;">400</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//或者可以调用已有的PNG图片等 ： $im = imagecreatefrompng('background.png');</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">// 定义几个色彩</span></li>
<li><span style="color: #00008b;">$white</span><span style="color: Gray;"> = </span><span style="color: Blue;">imagecolorallocate</span><span style="color: Olive;">(</span><span style="color: #00008b;">$im</span><span style="color: Gray;">, </span><span style="color: Maroon;">255</span><span style="color: Gray;">, </span><span style="color: Maroon;">255</span><span style="color: Gray;">, </span><span style="color: Maroon;">255</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$grey</span><span style="color: Gray;"> = </span><span style="color: Blue;">imagecolorallocate</span><span style="color: Olive;">(</span><span style="color: #00008b;">$im</span><span style="color: Gray;">, </span><span style="color: Maroon;">128</span><span style="color: Gray;">, </span><span style="color: Maroon;">128</span><span style="color: Gray;">, </span><span style="color: Maroon;">128</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$black</span><span style="color: Gray;"> = </span><span style="color: Blue;">imagecolorallocate</span><span style="color: Olive;">(</span><span style="color: #00008b;">$im</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">//填充背景为白色</span></li>
<li><span style="color: Blue;">imagefill</span><span style="color: Olive;">(</span><span style="color: #00008b;">$im</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: #00008b;">$white</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//将背景透明化</span></li>
<li><span style="color: Blue;">imagecolortransparent</span><span style="color: Olive;">(</span><span style="color: #00008b;">$im</span><span style="color: Gray;">,</span><span style="color: #00008b;">$white</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//以上两行是创建透明图片的关键！</span></li>
<li><span style="color: #ffa500;">//很多人反应， imagecreatetruecolor创建后的图片，背景颜色是黑的，无论怎么修改都不能变成白色的</span></li>
<li><span style="color: #ffa500;">//我先将背景填充为白色，再做透明处理就可以了！在Firefox3和IE7下测试成功！</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">// 这是一个很简单的产生阴影的效果。</span></li>
<li><span style="color: #ffa500;">//先在原本要输出的位置的偏左下角一点点输出灰色的字体，接着再用黑色字体写上去就有阴影效果了</span></li>
<li><span style="color: #ffa500;">//下次再提供点别的花样~</span></li>
<li><span style="color: #ffa500;">//imagettftext($im, 20, 0, 11, 21, $grey, $en_font, $en_text);</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">// 写入字体</span></li>
<li><span style="color: Blue;">imagettftext</span><span style="color: Olive;">(</span><span style="color: #00008b;">$im</span><span style="color: Gray;">, </span><span style="color: Maroon;">12</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">100</span><span style="color: Gray;">, </span><span style="color: Maroon;">120</span><span style="color: Gray;">, </span><span style="color: #00008b;">$black</span><span style="color: Gray;">, </span><span style="color: #00008b;">$en_font</span><span style="color: Gray;">, </span><span style="color: #00008b;">$en_text</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">imagepng</span><span style="color: Olive;">(</span><span style="color: #00008b;">$im</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">imagedestroy</span><span style="color: Olive;">(</span><span style="color: #00008b;">$im</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">// 不用说了，输出图片，然后清除缓存</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">//函数都是用PHP内置的，如果有不了解的请参考一下文档。</span></li>
<li><span style="color: Blue;">?&gt;</span></li></ol></div>
<p>整个代码的功能是比较单一的，但这是一个创建图片比较基本的框架。无论是做验证码还是要提供显示IP的服务，只要略微修改就很快能用了。就留着这代码备用吧，以后哪天说不定就用上了。</p>
]]></content:encoded>
			<wfw:commentRss>http://photozero.net/php_create_image_with_english_and_chinese/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP识别Robot(Spider,机器人,搜索引擎)函数</title>
		<link>http://photozero.net/recognize_search_engine_robot_spider/</link>
		<comments>http://photozero.net/recognize_search_engine_robot_spider/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 04:10:57 +0000</pubDate>
		<dc:creator>neekey</dc:creator>
				<category><![CDATA[Free Talk]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[baidu]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[web20]]></category>

		<guid isPermaLink="false">http://photozero.net/?p=248</guid>
		<description><![CDATA[最近有想做一些有趣的网站的想法，但由于时间不充足，只是光想，没有去做，但部分所需的函数还是利用课余时间想好了，也顺便分享出来，方便大家使用。
很多Web2.0网站采用了AJAX构造，这... ]]></description>
			<content:encoded><![CDATA[<p>最近有想做一些有趣的网站的想法，但由于时间不充足，只是光想，没有去做，但部分所需的函数还是利用课余时间想好了，也顺便分享出来，方便大家使用。</p>
<p>很多Web2.0网站采用了AJAX构造，这样对搜索引擎不是很友好，这里就提供一个识别各个搜索引擎的函数，在判断是搜索引擎后转入专门为搜索引擎提供的页面，方便搜索引擎收录。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">is_bot</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$ua</span><span style="color: Gray;"> = </span><span style="color: Blue;">strtolower</span><span style="color: Olive;">(</span><span style="color: #00008b;">$_SERVER</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">HTTP_USER_AGENT</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$botchar</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/(bot|crawl|spider|slurp|yahoo|sohu-search|lycos|robozilla)/i</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">preg_match</span><span style="color: Olive;">(</span><span style="color: #00008b;">$botchar</span><span style="color: Gray;">, </span><span style="color: #00008b;">$ua</span><span style="color: Olive;">))</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">true</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">false</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
</ol></div>
<p>这是利用了搜索引擎的USER_AGENT进行判断，像Google的UA为GoogleBot，百度的为Baiduspider，基本上所有的搜索引擎都会增加这些字符以表明Robot的身份。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">is_bot</span><span style="color: Olive;">()){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">readfile</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">for-robot.html</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">include</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">index2.php</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
</ol></div>
<p>在使用时，判断是否机器人进行不同操作。</p>
]]></content:encoded>
			<wfw:commentRss>http://photozero.net/recognize_search_engine_robot_spider/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
