<?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>Leeiio Chaos Made. &#187; PHP</title>
	<atom:link href="http://leeiio.me/category/design/php-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://leeiio.me</link>
	<description>The site is redesigning,please be patient  :P</description>
	<lastBuildDate>Sun, 29 Jan 2012 16:40:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>不要忽视你博客的访客！博客营销小技巧两则，附程序代码。</title>
		<link>http://leeiio.me/do-not-neglect-ur-visitors/</link>
		<comments>http://leeiio.me/do-not-neglect-ur-visitors/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 15:45:22 +0000</pubDate>
		<dc:creator>Leeiio</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[博客营销]]></category>
		<category><![CDATA[批量导出访客email]]></category>
		<category><![CDATA[批量导出访客URL]]></category>

		<guid isPermaLink="false">http://leeiio.me/?p=1778</guid>
		<description><![CDATA[很多博客都在想方设法地推广自己，当然方法很多，我就不一一列举了。但本文我要说的博客营销方式差不多是很多博客主正在做的并积极奉行的一种方法，那就是在各博客中游走，评论，留下自己的 URL ，然后等待被点击。除了做好 SEO 外，我觉得这确实是一种很实在并且有效的方法。 方法一：批量导出访客的 URL进行回访 正如上文所说，一般访问都会填写自己的 URL，日积月累下来，数据库里肯定存了很多访客的 URLS。并且都在 wordpress 数据库的 wp_comments 数据表里，既然知道自己想要的数据存在数据库的什么位置，要把它们给筛选出来就显得简单多了。看下面的代码。只要复制并修改代码中中文文字提示部分并保存到 .php 的文件里然后放到自己的服务器上打开即可获得全部访客的 URLS。 &#60;?php $conn = @mysql_connect&#40;&#34;Mysql服务器地址，一般都为localhost&#34;,&#34;数据库用户名&#34;,&#34;数据库密码&#34;&#41; or die&#40;&#34;Datebase Could not be connected: &#34; . mysql_error&#40;&#41;&#41;; mysql_select_db&#40;&#34;Mysql数据库名字&#34;, $conn&#41;; $result = mysql_query&#40;&#34;SELECT DISTINCT comment_author_url , comment_author FROM &#8230; <a href="http://leeiio.me/do-not-neglect-ur-visitors/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://imgs.leeiio.me/blogimgs/2010/01/20100111_blog-board.png" alt="不要忽视你博客的访客！博客营销小技巧两则，附程序代码。" /><br />
很多博客都在想方设法地推广自己，当然方法很多，我就不一一列举了。但本文我要说的博客营销方式差不多是很多博客主正在做的并积极奉行的一种方法，那就是在各博客中游走，评论，留下自己的 URL ，然后等待被点击。除了做好 SEO 外，我觉得这确实是一种很实在并且有效的方法。<br />
<span id="more-1778"></span></p>
<h2 class="part-title">方法一：批量导出访客的 URL进行回访 </h2>
<p>正如上文所说，一般访问都会填写自己的 URL，日积月累下来，数据库里肯定存了很多访客的 URLS。并且都在 wordpress 数据库的 wp_comments 数据表里，既然知道自己想要的数据存在数据库的什么位置，要把它们给筛选出来就显得简单多了。看下面的代码。只要复制并修改代码中中文文字提示部分并保存到 .php 的文件里然后放到自己的服务器上打开即可获得全部访客的 URLS。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #339933;">@</span><span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Mysql服务器地址，一般都为localhost&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;数据库用户名&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;数据库密码&quot;</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Datebase Could not be connected: &quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Mysql数据库名字&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT DISTINCT comment_author_url , comment_author FROM wp_comments WHERE comment_author_url != '' AND comment_author_url != 'http://'&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// 排除没有填写 URL 的数据</span>
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;comment_author&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;   &quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;a target='_blank' href='&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;comment_author_url&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;'&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;comment_author_url&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;br /&gt;&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;/a&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">mysql_free_result</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>为了更方便阅读和查看，我另外筛选出了对应的评论者名字，并且给每条 URL 加上了 a 标记以便直接点击查看。当然，如果comment_author_url , comment_author后面再加一条筛选条件变成comment_author_url , comment_author,comment_author_email,然后配合wordpress 的 get_avatar( 邮件地址, &#8216;头像大小&#8217; )就可以输出更直观的带头像的列表了(这种方法的话得配合wordpress运行不能单独运行，或者载入wordpress的get_avatar函数)。</p>
<h2 class="part-title">方法二：批量导出访客的 email，EDM</h2>
<p>EDM 可是个外恶的东西，不过我刚入职阿里的时候就是干设计 EDM 的行当。EDM 对于营销者来说是个利器，但是对于收邮件的用户来说无疑是个灾难，这几乎就是垃圾邮件的 “衣冠楚楚” 的一个专有名词的说法。<br />
EDM 就是所谓的邮件营销，在你得知了一大票的用户 email 地址的时候你就可以通过群发邮件来达到营销手段。<em>所以，谨慎使用！</em><br />
一般大节日诸如即将到来的春节这个特别喜庆的日子你可以群发邮件，一般这时候人们心情比较好，不会怪你的哈=_= ||<br />
当然，最好能有个好的内容设计，能达到更好的效果。<br />
<em>但是，谨慎使用不光是提醒你群发邮件可能会给收邮件人带来厌恶感之外，就是如果退信率过高，也是会被一些邮件提供商给加入 “黑名单”的，以后你发的邮件就有可能出现在别人邮箱的垃圾邮件一栏里了，所以，谨慎使用！</em></p>
<p>以下是代码，同样，复制并修改代码中中文文字提示部分并另存为.php的网页，在服务器运行访问即可。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #339933;">@</span><span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Mysql服务器地址，一般都为localhost&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;数据库用户名&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;数据库密码&quot;</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Datebase Could not be connected: &quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Mysql数据库名字&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT DISTINCT comment_author_email FROM wp_comments WHERE comment_author_email != '' &quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;comment_author_email&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">','</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">mysql_free_result</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>需要注意的是，请注意保护好你的访客的隐私，所以我不建议你们把导出的email地址们直接复制粘贴到收件人一栏，因为这将直接将你的访客的email地址暴露在其余收到邮件的列表中的用户邮箱中。所以，推荐用密送，也就是 bcc。至于收件人一栏，可以填写自己的email。</p>
<p class="alert">
名词解释：<br />
CC 英文全称是 Carbon Copy(抄送)；BCC 英文全称是 Blind CarbonCopy(暗抄送/密送)。两者的区别在于在BCC 栏中的收件人可以看到所有的收件人名(TO,CC,自己)，而在 TO 和 CC 栏中的收件人看不到 BBC 的收件人名。<br />
如： A 发送邮件 to B，cc to C，bcc to D<br />
那么：A知道发送给了B，抄送给了C，密送给了D。<br />
        B知道这封是A发送给自己的，并且抄送给了C。<br />
        C知道这封是A发送给B的，并且抄送给了自己。<br />
        D知道这封是A发送给B的，并且抄送给了C，而且密送给了自己。
</p>
<p><strong>另外需要注意的是，如果你在安装 wordpress 的时候自己指定了表头，请修改代码中的wp_comments。</strong></p>
<p>这里只是提供了两种针对博客的可行的营销方式，程序很简单，就是简单的 SQL 查询和 php 输出而已。仅是今晚心血来潮想看看我博客的访客留下的 URL 地址而进行的一系列发散，欢迎评论！</p>
<p>Keep busy ing！</p>
]]></content:encoded>
			<wfw:commentRss>http://leeiio.me/do-not-neglect-ur-visitors/feed/</wfw:commentRss>
		<slash:comments>57</slash:comments>
		</item>
		<item>
		<title>Shorter! 基于短地址API的批量缩短服务</title>
		<link>http://leeiio.me/shorter/</link>
		<comments>http://leeiio.me/shorter/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 15:34:10 +0000</pubDate>
		<dc:creator>Leeiio</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Shorter!]]></category>
		<category><![CDATA[批量短地址]]></category>

		<guid isPermaLink="false">http://leeiio.me/?p=1732</guid>
		<description><![CDATA[首先，这不是你们常见的那些提供网址URL缩短的服务，虽然它提供了批量缩短网址URL的服务，但这个服务是基于那些提供短地址服务的API的。通常提供网址URL缩短的短地址服务都只能一条一条来，可能考虑到数据存储之类的问题，但是我这个就不同了，直接拿他们提供的API来做的，所以不用考虑数据存储的问题。 最初，@disinfeqt 童鞋希望我帮他写一个类似 iTweet 或者 twitterKr 的批量转换输入文本框里的网址URL为短地址的服务。后来，被我这个 php 菜鸟水平的人终于成功写出来了。应用在了 Rabr上。如图所示按钮“Shorten”。 上个段落提到过，我的 php 水平实属菜鸟，所以代码写得很羞愧，就请大家多多包含哈。 开源项目在 google code上我的私人项目 Leeiio。 ChangeLog: 2009.12.01 Shorter! v0.1 上线，暂时没发现BUG. 下个版本将增加自定义api功能。 2010.03.25 用encodeURIComponent()函数处理提交给api前的网址，主要是考虑部分短地址程序(比如yourls)不能识别&#038;符号。用“leeiiosplit”替代之前的“&#124;”，其主要原因是因为URL在转换编码的时候会把“&#124;”转换掉。新增支持中文网址以及网址中含有“&#124;”的正则。点击查看与之前版本比对 2010.03.25 改用php的rawurlencode()函数代替js的encodeURIComponent()函数处理，原先的GET换为POST，php在接收POST数据的时候再对url进行rawurlencode()处理。点击查看与之前版本比对 SVN地址：http://leeiio.googlecode.com/svn/trunk/tools/shorter/]]></description>
			<content:encoded><![CDATA[<p><a href="http://lab.leeiio.me/shorter/" rel="nofollow external" title="Shorter!"><img src="http://imgs.leeiio.me/blogimgs/2009/12/20091201_shorter.png" alt="Shorter!" /></a><br />
首先，这不是你们常见的那些提供网址URL缩短的服务，虽然它提供了批量缩短网址URL的服务，但这个服务是基于那些提供短地址服务的API的。通常提供网址URL缩短的短地址服务都只能一条一条来，可能考虑到数据存储之类的问题，但是我这个就不同了，直接拿他们提供的API来做的，所以不用考虑数据存储的问题。<br />
<span id="more-1732"></span><br />
最初，@disinfeqt 童鞋希望我帮他写一个类似 iTweet 或者 twitterKr 的批量转换输入文本框里的网址URL为短地址的服务。后来，被我这个 php 菜鸟水平的人终于成功写出来了。应用在了 <a href="https://zdx.in/" title="Rabr" rel="nofollow" class="broken_link">Rabr</a>上。如图所示按钮“Shorten”。<br />
<img src="http://imgs.leeiio.me/blogimgs/2009/12/20091201_rabr-shorten.gif" alt="Rabr shorten" /><br />
上个段落提到过，我的 php 水平实属菜鸟，所以代码写得很羞愧，就请大家多多包含哈。</p>
<p>开源项目在 google code上我的私人项目 <a rel="nofollow" href="http://code.google.com/p/leeiio/" title="Leeiio @ google code">Leeiio</a>。</p>
<p><strong>ChangeLog:</strong><br />
2009.12.01 Shorter! v0.1 上线，暂时没发现BUG.<br />
下个版本将增加自定义api功能。<br />
2010.03.25 用encodeURIComponent()函数处理提交给api前的网址，主要是考虑部分短地址程序(比如yourls)不能识别&#038;符号。用“leeiiosplit”替代之前的“|”，其主要原因是因为URL在转换编码的时候会把“|”转换掉。新增支持中文网址以及网址中含有“|”的正则。<a rel="nofollow" href="http://code.google.com/p/leeiio/source/detail?r=4" class="broken_link">点击查看与之前版本比对</a><br />
2010.03.25 改用php的rawurlencode()函数代替js的encodeURIComponent()函数处理，原先的GET换为POST，php在接收POST数据的时候再对url进行rawurlencode()处理。<a rel="nofollow" href="http://code.google.com/p/leeiio/source/detail?r=5" class="broken_link">点击查看与之前版本比对</a></p>
<p>SVN地址：<a rel="nofollow" href="http://leeiio.googlecode.com/svn/trunk/tools/shorter/">http://leeiio.googlecode.com/svn/trunk/tools/shorter/</a></p>
<p><p class="preview left"><a href="http://lab.leeiio.me/shorter/" title="点击访问 Shorter!">Shorter!
<em title="Shorter! 基于短地址API的批量缩短服务">Just click it!</em></a></p><br />
<p class="clear"></p></p>
]]></content:encoded>
			<wfw:commentRss>http://leeiio.me/shorter/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>Mail to Commenter插件的发件人邮箱以及名称的问题修正</title>
		<link>http://leeiio.me/mail-to-commenter-sendmail-from/</link>
		<comments>http://leeiio.me/mail-to-commenter-sendmail-from/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 14:59:34 +0000</pubDate>
		<dc:creator>Leeiio</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[$headers]]></category>
		<category><![CDATA[邮件头]]></category>
		<category><![CDATA[Mail to Commenter]]></category>
		<category><![CDATA[发件人邮箱]]></category>

		<guid isPermaLink="false">http://leeiio.me/?p=1718</guid>
		<description><![CDATA[Mail to Commenter是一款评论辅助插件，通过判断评论内容是否含有‘@user ‘或‘@user:’的代码，然后将评论内容用邮件发送给user。我一直在使用这款插件，当然同时也推荐给还没有听闻或听闻了但还在观望的朋友。可是这款插件有个问题，相信很多朋友都遇到了，就是发件人名称以及邮箱地址的问题。 WordPress默认的发邮件的地址是wordpress@yourdomain.com，当然这个地址也是可以修改的。wordpress安装目录下，打开wp-includes\pluggable.php文件，搜索“wordpress@”，有两处，替换成你希望的名字就可以了。不过我们这里不讨论这个问题，虽然这个问题我也顺便说了解决方法了，相信也有不少朋友会想修改这个地址。 没错，正常情况下确实是这样的，通过 wordpress 后台发送给用户的邮件地址应该是 wordpress@yourdomain.com，可是偏偏给我碰到了不正常的情况，在我为解决之前搜索了下发现确实也有很多的朋友都有这个问题，Mail to Commenter作为一款优秀的使用广泛的插件就遭遇了这个问题。通常如果你的主机是合租性质的，并且不像 Hostmonster之类的可以通过在每个子账户根目录复制一个php.ini文件来配置的话，那么在使用 Mail to Commenter 插件通过你的 WordPress 程序发送给@user中的user的信件的邮件地址的后缀极有可能是root帐户配置的那个域名后缀。 比如我的主机是在淫荡的大猫的庙那里买的合租的 MediaTemple，root帐户配置的邮件地址是root(at)yslow(dot)info，那么我的 Mail to Commenter插件发送给每一个被我@user的user用户收到的邮件都将会显示这个邮件地址而不是我希望的默认的 wordpress@yourdomain.com或者我希望的任意一个指定的email地址。当然奇怪的是并非所有人都会碰到这个问题，所以作者也并没有完全修正这个问题。在这个YD的感冒飞扬的日子里，我留着鼻涕，打着喷嚏，打开了Mail to Commenter插件里的mailtocommenter_functions.php文件。因为本身就是插件，自然没必要请出淫荡的add_filter钩子大仙出山。邮件地址的问题无非是wp_mail()插件里面的$header变量引起的，那就找找看插件里有没有对$header的定义咯。 这里有必要对wp_mail()函数进行一些粗略简单的介绍((wp_mail()函数的更具体描述请看官方codex文档))。wp_mail()从命名方式就可以看出这个是wordpress发送email的核心函数。wp_mail()和php自带的mail()函数的参数差不多，注意它们都有对header信息的定义只不过都是可选的参数并不是必填参数，而当header参数未填写的时候，发件人也就是sendmail_from的定义就存在于php.ini里面了。 &#60;?php wp_mail&#40; $to, $subject, $message, $headers, $attachments &#41;; ?&#62; 继续回到mailtocommenter_functions.php文件。搜索header查找到了这么一段函数。 function mailtocommenter_send_email&#40;$to,$subject,$message&#41;&#123; $blogname &#8230; <a href="http://leeiio.me/mail-to-commenter-sendmail-from/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://imgs.leeiio.me/blogimgs/2009/11/20091124_sendmail.gif" alt="sendmail邮件头引发的血案" /><br />
<a rel="nofollow" href="http://www.thinkagain.cn/archives/989.html">Mail to Commenter</a>是一款评论辅助插件，通过判断评论内容是否含有‘@user ‘或‘@user:’的代码，然后将评论内容用邮件发送给user。我一直在使用这款插件，当然同时也推荐给还没有听闻或听闻了但还在观望的朋友。可是这款插件有个问题，相信很多朋友都遇到了，就是发件人名称以及邮箱地址的问题。</p>
<p>WordPress默认的发邮件的地址是wordpress@yourdomain.com，当然这个地址也是可以修改的。wordpress安装目录下，打开wp-includes\pluggable.php文件，搜索“wordpress@”，有两处，替换成你希望的名字就可以了。不过我们这里不讨论这个问题，虽然这个问题我也顺便说了解决方法了，相信也有不少朋友会想修改这个地址。<br />
<span id="more-1718"></span><br />
没错，正常情况下确实是这样的，通过 wordpress 后台发送给用户的邮件地址应该是 wordpress@yourdomain.com，可是偏偏给我碰到了不正常的情况，在我为解决之前搜索了下发现确实也有很多的朋友都有这个问题，Mail to Commenter作为一款优秀的使用广泛的插件就遭遇了这个问题。通常如果你的主机是合租性质的，并且不像 <a rel="nofollow" href="http://www.hostmonster.com/track/leeiio">Hostmonster</a>之类的可以通过在每个子账户根目录复制一个php.ini文件来配置的话，那么在使用 Mail to Commenter 插件通过你的 WordPress 程序发送给@user中的user的信件的邮件地址的后缀极有可能是root帐户配置的那个域名后缀。</p>
<p>比如我的主机是在淫荡的<a rel="nofollow" href="http://ooxx.me">大猫</a>的<a rel="nofollow" href="http://miao.in">庙</a>那里买的合租的 MediaTemple，root帐户配置的邮件地址是root(at)yslow(dot)info，那么我的 Mail to Commenter插件发送给每一个被我@user的user用户收到的邮件都将会显示这个邮件地址而不是我希望的默认的 wordpress@yourdomain.com或者我希望的任意一个指定的email地址。当然奇怪的是并非所有人都会碰到这个问题，所以作者也并没有完全修正这个问题。在这个YD的感冒飞扬的日子里，我留着鼻涕，打着喷嚏，打开了Mail to Commenter插件里的mailtocommenter_functions.php文件。因为本身就是插件，自然没必要请出淫荡的<a href="http://codex.wordpress.org/Function_Reference/add_filter" rel="nofollow">add_filter</a>钩子大仙出山。邮件地址的问题无非是wp_mail()插件里面的$header变量引起的，那就找找看插件里有没有对$header的定义咯。</p>
<p>这里有必要对wp_mail()函数进行一些粗略简单的介绍((wp_mail()函数的更具体描述请看官方<a rel="nofollow" href="http://codex.wordpress.org/Function_Reference/wp_mail">codex</a>文档))。wp_mail()从命名方式就可以看出这个是wordpress发送email的核心函数。wp_mail()和php自带的<a rel="nofollow" href="http://php.net/manual/en/function.mail.php">mail()</a>函数的参数差不多，注意它们都有对header信息的定义只不过都是可选的参数并不是必填参数，而当header参数未填写的时候，发件人也就是sendmail_from的定义就存在于php.ini里面了。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> wp_mail<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$to</span><span style="color: #339933;">,</span> <span style="color: #000088;">$subject</span><span style="color: #339933;">,</span> <span style="color: #000088;">$message</span><span style="color: #339933;">,</span> <span style="color: #000088;">$headers</span><span style="color: #339933;">,</span> <span style="color: #000088;">$attachments</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>继续回到mailtocommenter_functions.php文件。搜索header查找到了这么一段函数。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> mailtocommenter_send_email<span style="color: #009900;">&#40;</span><span style="color: #000088;">$to</span><span style="color: #339933;">,</span><span style="color: #000088;">$subject</span><span style="color: #339933;">,</span><span style="color: #000088;">$message</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$blogname</span> <span style="color: #339933;">=</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'blogname'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   <span style="color: #666666; font-style: italic;">//获取博客名称赋值到$blogname变量里(leeiio注)</span>
	<span style="color: #000088;">$charset</span> <span style="color: #339933;">=</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'blog_charset'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$headers</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;From: <span style="color: #006699; font-weight: bold;">$blogname</span> <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #339933;">;</span>   <span style="color: #666666; font-style: italic;">//设置header里面的from为$blogname(leeiio注)</span>
	<span style="color: #000088;">$headers</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;MIME-Version: 1.0<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$headers</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;Content-Type: text/html;charset=<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #006699; font-weight: bold;">$charset</span><span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$to</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$to</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #339933;">@</span>wp_mail<span style="color: #009900;">&#40;</span><span style="color: #000088;">$to</span><span style="color: #339933;">,</span> <span style="color: #000088;">$subject</span><span style="color: #339933;">,</span> <span style="color: #000088;">$message</span><span style="color: #339933;">,</span> <span style="color: #000088;">$headers</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>也就是说，这段函数将博客的名称设置成了From，难怪我的博客通过Mail to Commenter发出去的发件人都显示成了如图所示。<br />
<img src="http://imgs.leeiio.me/blogimgs/2009/11/20091124_sendmail1.gif" alt="Mail to Commenter插件的发件人邮箱以及名称的问题修正" /><br />
十分诡异，就算获取博客名称也应该是Leeiio Chaos Made@yslow.info才对，可能是其中获取参数的时候程序处理秀逗了，因为我对php也是七窍通了六窍，所以各种的缘由还有待大师来解惑。(呃，懒得去翻wordpress的函数去查原因。。)</p>
<p>既然如此，那么我就只好采取强硬的手段来达到我的目的了。于是修改后的函数为：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> mailtocommenter_send_email<span style="color: #009900;">&#40;</span><span style="color: #000088;">$to</span><span style="color: #339933;">,</span><span style="color: #000088;">$subject</span><span style="color: #339933;">,</span><span style="color: #000088;">$message</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$blogname</span> <span style="color: #339933;">=</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'blogname'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$charset</span> <span style="color: #339933;">=</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'blog_charset'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$headers</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'From: Leeiio Chaos Made &lt;no-reply@leeiio.me&gt;'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\\</span>&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//指定了发件人名称以及发件人邮箱，注意&lt;&gt;括号之前和发件人名称用空格隔开</span>
	<span style="color: #000088;">$headers</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;MIME-Version: 1.0<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$headers</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;Content-Type: text/html;charset=<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #006699; font-weight: bold;">$charset</span><span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$to</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$to</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #339933;">@</span>wp_mail<span style="color: #009900;">&#40;</span><span style="color: #000088;">$to</span><span style="color: #339933;">,</span> <span style="color: #000088;">$subject</span><span style="color: #339933;">,</span> <span style="color: #000088;">$message</span><span style="color: #339933;">,</span> <span style="color: #000088;">$headers</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>于是，如图所示。<br />
<img src="http://imgs.leeiio.me/blogimgs/2009/11/20091124_sendmail2.gif" alt="Mail to Commenter插件的发件人邮箱以及名称的问题修正" /></p>
<p>根据我的一知半解，邮件header信息里面的From:要么是填写纯粹的邮件地址xxx@xxx.com要不是填写带<>的<xxx@xxx.com又或者想指定显示名称的话就填写XYZ <xxx@xxx.com>。但切勿只填写发件人名称，按照wordpress的wp_mail()函数处理的话，就有可能造成上图的诡异现象了。</p>
<p>废话一大堆，希望你们看懂了。不懂的话就在下面提问吧，本大湿会一一解答的。</p>
<p><em>题外话：现在很多的垃圾邮件都通过伪造邮件头信息来达到蒙蔽广大群众的目的，望各位火眼金睛，分辨仔细。并不是看到发件人是xxx@mircosoft.com的邮件就是微软发给你的中奖邮件，也有可能是骗子发给你的。</em><br />
延伸阅读：<a rel="nofollow" href="http://www.chinamyhosting.com/email/forge.php">有人用我的电子邮件帐户发垃圾邮件？</a></p>
]]></content:encoded>
			<wfw:commentRss>http://leeiio.me/mail-to-commenter-sendmail-from/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>RealURL,还原你的短地址！</title>
		<link>http://leeiio.me/transform-shorturl-into-realurl/</link>
		<comments>http://leeiio.me/transform-shorturl-into-realurl/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 15:57:32 +0000</pubDate>
		<dc:creator>Leeiio</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[还原短地址]]></category>
		<category><![CDATA[RealURL]]></category>
		<category><![CDATA[Short URL]]></category>

		<guid isPermaLink="false">http://leeiio.me/?p=1620</guid>
		<description><![CDATA[今天，我又文明用语了！（点击图片有惊喜） 这个好玩意的作用便是能让缩的东西重新变大，特别是在文明用语的和谐社会下，她好你也好。 只是个小玩意，技术含量不高，但是苦于我那几乎为0的 PHP 技术，边搜索边做出来的小应用，故有 BUG 是正常的，但是明知道是 BUG 却不向我汇报的行为是不正常的。如有任何疑问或者BUG请马上联系我。 希望大家喜欢！忙，没时间美化，有志之士可以代劳随后告知我，然后我更新上去。 ChangeLog: 2009.10.13 RealURL 0.1上线，暂时没发现BUG. 2009.10.14 RealURL v0.15发布;增加一种新的转换方式 http://leeiio.me/realurl/?url=; RealURL 快速使用: 当你想用RealURL还原你的短地址的时候不需要每次都访问RealURL网站了。只需要复制一下地址到你的浏览器地址栏: http://leeiio.me/realurl/?url= 然后把要还原的短地址粘贴在后面。这个连接将会把你带到转换结果的页面。 Example: 你想要还原 http://tiny.pl/htk : http://leeiio.me/realurl/?url=http://tiny.pl/htk 同时，悄悄派发 Brizzly 邀请码10枚，送完即止！]]></description>
			<content:encoded><![CDATA[<p><a href="http://ijustmadelove.com/" rel="external nofollow" title="点击有惊喜"><img src="http://imgs.leeiio.me/blogimgs/2009/10/20091013_transform-shorturl-to-realurl.jpg" alt="RealURL,还原你的短地址！Transform the short url into real url." /></a><br />
今天，我又文明用语了！（点击图片有惊喜）<br />
<span id="more-1620"></span><br />
这个好玩意的作用便是能让缩的东西重新变大，特别是在文明用语的和谐社会下，她好你也好。<br />
只是个小玩意，技术含量不高，但是苦于我那几乎为0的 PHP 技术，边搜索边做出来的小应用，故有 BUG 是正常的，但是明知道是 BUG 却不向我汇报的行为是不正常的。如有任何疑问或者BUG请马上联系我。<br />
希望大家喜欢！忙，没时间美化，有志之士可以代劳随后告知我，然后我更新上去。</p>
<p><strong>ChangeLog:</strong><br />
2009.10.13 RealURL 0.1上线，暂时没发现BUG.<br />
2009.10.14 RealURL v0.15发布;增加一种新的转换方式 http://leeiio.me/realurl/?url=;</p>
<p><strong>RealURL 快速使用:</strong><br />
当你想用RealURL还原你的短地址的时候不需要每次都访问RealURL网站了。只需要复制一下地址到你的浏览器地址栏:<br />
<code>http://leeiio.me/realurl/?url=</code></p>
<p>然后把要还原的短地址粘贴在后面。这个连接将会把你带到转换结果的页面。</p>
<p><code>Example: 你想要还原 http://tiny.pl/htk :</p>
<p>http://leeiio.me/realurl/?url=http://tiny.pl/htk</code></p>
<p><span class="user-notice">同时，悄悄派发 <a href="http://brizzly.com" rel="nofollow">Brizzly</a> 邀请码10枚，送完即止！</span><br />
<p class="preview left"><a href="http://leeiio.me/realurl/" title="点击访问 RealURL">Just click it!
<em title="RealURL,还原你的短地址！">Short URL To Real URL</em></a></p><br />
<p class="clear"></p></p>
]]></content:encoded>
			<wfw:commentRss>http://leeiio.me/transform-shorturl-into-realurl/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>XAMPP 虚拟主机配置，实现多域名访问本地项目</title>
		<link>http://leeiio.me/xampp-vhosts/</link>
		<comments>http://leeiio.me/xampp-vhosts/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 06:12:13 +0000</pubDate>
		<dc:creator>Leeiio</dc:creator>
				<category><![CDATA[設計資源]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[笔记]]></category>
		<category><![CDATA[虚拟主机]]></category>
		<category><![CDATA[vhosts]]></category>
		<category><![CDATA[XAMPP]]></category>
		<category><![CDATA[多域名]]></category>

		<guid isPermaLink="false">http://leeiio.me/?p=1501</guid>
		<description><![CDATA[有时候你需要一些顶级域名访问方式来访问你本地的项目文件而不是目录方式访问，这时候就需要配置虚拟主机，给你的目录绑定一个域名（本地的话可以通过修改 hosts 文件随便绑定什么域名比如 www.a.com 或者 localdemo）。
现在假定你有两个目录，一个存在于 /xampp/htdocs/a，另一个存在于 /xampp/htdocs/b 。
现在你想要在本地测试的时候访问 www.a.com 对应的目录是 /xampp/htdocs/a ,访问 www.b.com 对应的目录是  /xampp/htdocs/b 。 <a href="http://leeiio.me/xampp-vhosts/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://imgs.leeiio.me/blogimgs/2009/08/20090807_xampp-vhosts.gif" alt="XAMPP 虚拟主机配置，实现多域名访问本地项目" /><br />
之前在 Mac 下一直使用 MAMP 搭建本地 php 环境，因为其强大的组合配置以及方便的 UI 操作。因为公司的电脑是 Windows 的，有时候需要搭建 php 环境来调试一些小东西方便自己工作，因为只是小应用，所以自己搭建本地的 WAMP 环境就没有必要了，网上的 WAMP 环境集成包还是很多的，什么 PHPNow 啊，WampServer 啊，PHPStudy 啊，AppServ 啊，EasyPHP 啊之类的我都没用过，以及我之前一直在使用的 UniServer，琳琅满目啊，看得我眼花缭乱。之所以后来不用 UniServer 的原因其实我也不知道， UniServer 很强大，值得推荐一下，但是后来我又转用了 XAMPP ，因为它也很强大，并且文件包达 100MB 还多，当然你可以下载 Lite 版本，但是文件大小都比 UniServer 大出好几倍，可能就是因为它的大，后来我才转用了 XAMPP。<br />
<span id="more-1501"></span><br />
当然以上全是一些废话，下面才是正题。<br />
有时候你需要一些顶级域名访问方式来访问你本地的项目文件而不是目录方式访问，这时候就需要配置虚拟主机，给你的目录绑定一个域名（本地的话可以通过修改 hosts 文件随便绑定什么域名比如 www.a.com 或者 localdemo）。<br />
现在假定你有两个目录，一个存在于 /xampp/htdocs/a，另一个存在于 /xampp/htdocs/b 。<br />
现在你想要在本地测试的时候访问 www.a.com 对应的目录是 /xampp/htdocs/a ,访问 www.b.com 对应的目录是  /xampp/htdocs/b 。<br />
<strong>懂得 Apache配置的其实就可以绕开了，因为 XAMPP 无非就是集成了 APache 之类的环境集成包，实现多域名也就是通过配置 Apache 实现的。</strong></p>
<p>当然网上搜索到的方法很多，但是网上的信息都是转载来转载去的，有的方法我怀疑是否验证过是否正确都不知道。以下的方法是我亲测的，如果你按照我的配置还是无法实现本地多域名调试的话，可能是因为你的 XAMPP 的版本和我的不一致造成的。你可以在下面评论告知我，我会给你一一解答。<strong>以下配置针对的是 XAMPP Windows 1.7.1 版本。</strong></p>
<p>1、首先修改C盘WINDOWS\system32\drivers\etc目录下的 hosts 文件，用记事本打开，加入：<br />
127.0.0.1   www.a.com<br />
127.0.0.1   www.b.com</p>
<p>2、打开xampp\apache\conf\httpd.conf文件，搜索 “Include conf/extra/httpd-vhosts.conf”，确保前面没有 # 注释符，也就是确保引入了 vhosts 虚拟主机配置文件。</p>
<p>开启了httpd-vhosts.conf，默认的httpd.conf默认配置失效（确保 httpd-vhosts.conf 文件里也开启了虚拟主机配置，见第3条），访问此IP的域名将全部指向 vhosts.conf 中的第一个虚拟主机。</p>
<p>3、在虚拟主机设置文件xampp\apache\conf\extra\httpd-vhosts.conf里设置：<br />
取消 NameVirtualHost *:80 前面的 ##，这样就启用了 vhosts.conf ，默认的httpd.conf默认配置失效。虚拟主机配置将只设置在 httpd-vhosts.conf 里。<br />
&lt;VirtualHost *:80><br />
  DocumentRoot /xampp/htdocs/a<br />
  ServerName <strong>www.a.com</strong><br />
&lt;/VirtualHost></p>
<p>&lt;VirtualHost *:80><br />
  DocumentRoot /xampp/htdocs/b<br />
  ServerName <strong>www.b.com</strong><br />
&lt;/VirtualHost></p>
<p>4、设置完了第3条之后，你会发现访问 localhost直接指向到设置的 a 那个路径去了，这个问题在第2条有讲。也就是开启了 vhosts 后，默认的 httpd 的配置就会失效了，默认的访问就指向到 vhosts 里的第一条设置去了。这时候你要把 localhost 的目录配置给设置回来。<br />
&lt;VirtualHost *:80><br />
  DocumentRoot /xampp/htdocs/<br />
  ServerName localhost<br />
&lt;/VirtualHost></p>
<p>至此，XAMPP 的虚拟主机设置完毕，现在 访问 localhost 还是原来的 XAMPP 的帮助指南，访问 www.a.com 将指向到绑定的 a 目录，访问 www.b.com 将指向到绑定的 b 目录。</p>
]]></content:encoded>
			<wfw:commentRss>http://leeiio.me/xampp-vhosts/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>PHP判斷客戶端瀏覽器的語言，加強後續用戶體驗</title>
		<link>http://leeiio.me/php-browser-lang/</link>
		<comments>http://leeiio.me/php-browser-lang/#comments</comments>
		<pubDate>Sat, 29 Nov 2008 17:47:20 +0000</pubDate>
		<dc:creator>Leeiio</dc:creator>
				<category><![CDATA[My Works]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[用戶體驗]]></category>
		<category><![CDATA[UED]]></category>
		<category><![CDATA[判斷瀏覽器語言]]></category>

		<guid isPermaLink="false">http://blog.guaniu.com/?p=548</guid>
		<description><![CDATA[因為本站使用的是繁體漢字，而我們大陸的大部分人都是使用的簡體漢字，所以我在頂端導航處加了“繁簡切換”功能。考慮到更好的用戶體驗，所以我決定在正文部分加上一些警示文字。但是呢，如果來訪的用戶如果是台灣或者香港地區的，那麼警示文字顯得有些多餘且沒必要，所以需要對其進行語言判斷。網上很多用到的方法大都是對來訪的ip進行判斷，但是如果用戶使用了代理或者在外等一些情況，那麼可能會顯得有些不准確。所以我考慮了下通過瀏覽器的語言設置進行判斷，雖然說不能排除某一小部分人可能喜歡用英文的語言設置，但是大部分還是奏效的。 實現的原理： 瀏覽器發給web服務器的 HTTP Headers Information 中包含了這樣一個信息 Accept-Language這個信息就是，瀏覽器中 工具->Internet選項->常規 下的 語言，它就是用來設置瀏覽器可接受的語言首選項的， 它可以是多種可接受語言的優先排序列。 　　以PHP為例，用戶可接受的語言信息，放在$_SERVER['HTTP_ACCEPT_LANGUAGE']裏，變量信息是類似這樣的 &#8220;zh-cn&#8221;，如果是多語言列，是類似 &#8220;zh-cn,en;q=0.8,ko;q=0.5,zh-tw;q=0.3&#8243;這樣的情況。 戳我進入判斷當前使用的瀏覽器的語言設置 因為本人對php幾乎一竅不通，當時就直接用if語句寫個個判斷，如下: 1 2 3 4 5 6 &#60;? if&#40;$_SERVER&#91;'HTTP_ACCEPT_LANGUAGE'&#93;==&#34;zh-cn&#34; &#41; &#123; echo &#34;经雷达探测，您使用的语言为新中国的简体汉字，为避免晕车，请使用顶端导航的繁简切换功能，謝謝 !&#34;;//当是簡體中文的时候 &#125; ?&#62; 但是你的瀏覽器可能并不是只有一種語言設置，例如firefox默認的語言設置就是zh-cn,zh;q=0.5,opera國際版的是zh-CN,en;q=0.9,fr;q=0.8,ja;q=0.7,de;q=0.6,es;q=0.5,it;q=0.4,pt;q=0.3,pt-PT;q=0.2,nl;q=0.1,sv;q=0.1,nb;q=0.1,da;q=0.1,fi;q=0.1,ru;q=0.1,pl;q=0.1,zh-TW;q=0.1,ko;q=0.1，所以此法並不可取。google了近半個小時，查到了php的preg_match()函數，大體就是可以自定義一個規則來和某一個參數進行匹配，所以判斷的語句修改成如下: 1 2 3 4 5 6 7 &#8230; <a href="http://leeiio.me/php-browser-lang/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://imgs.guaniu.com/blogpics/month_0811/PHPpreg_match.gif" alt="PHP判斷客戶端瀏覽器的語言，加強後續用戶體驗" /></p>
<p class="fl">因為本站使用的是繁體漢字，而我們大陸的大部分人都是使用的簡體漢字，所以我在頂端導航處加了“繁簡切換”功能。考慮到更好的用戶體驗，所以我決定在正文部分加上一些警示文字。但是呢，如果來訪的用戶如果是台灣或者香港地區的，那麼警示文字顯得有些多餘且沒必要，所以需要對其進行語言判斷。網上很多用到的方法大都是對來訪的ip進行判斷，但是如果用戶使用了代理或者在外等一些情況，那麼可能會顯得有些不准確。所以我考慮了下通過瀏覽器的語言設置進行判斷，雖然說不能排除某一小部分人可能喜歡用英文的語言設置，但是大部分還是奏效的。</p>
<p><span id="more-548"></span><br />
實現的原理：</p>
<blockquote><p>瀏覽器發給web服務器的 HTTP Headers Information 中包含了這樣一個信息 Accept-Language這個信息就是，瀏覽器中 工具->Internet選項->常規 下的 語言，它就是用來設置瀏覽器可接受的語言首選項的， 它可以是多種可接受語言的優先排序列。<br />
　　以PHP為例，用戶可接受的語言信息，放在$_SERVER['HTTP_ACCEPT_LANGUAGE']裏，變量信息是類似這樣的 &#8220;zh-cn&#8221;，如果是多語言列，是類似 &#8220;zh-cn,en;q=0.8,ko;q=0.5,zh-tw;q=0.3&#8243;這樣的情況。</p></blockquote>
<p><font color="red"><a href="http://guaniu.com/test/lang.php" target="_blank" class="broken_link">戳我進入判斷當前使用的瀏覽器的語言設置</a></font><br />
<br />
因為本人對php幾乎一竅不通，當時就直接用if語句寫個個判斷，如下:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_ACCEPT_LANGUAGE'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #0000ff;">&quot;zh-cn&quot;</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;经雷达探测，您使用的语言为新中国的简体汉字，为避免晕车，请使用顶端导航的繁简切换功能，謝謝 !&quot;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//当是簡體中文的时候</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>但是你的瀏覽器可能并不是只有一種語言設置，例如firefox默認的語言設置就是<em>zh-cn,zh;q=0.5</em>,opera國際版的是<em>zh-CN,en;q=0.9,fr;q=0.8,ja;q=0.7,de;q=0.6,es;q=0.5,it;q=0.4,pt;q=0.3,pt-PT;q=0.2,nl;q=0.1,sv;q=0.1,nb;q=0.1,da;q=0.1,fi;q=0.1,ru;q=0.1,pl;q=0.1,zh-TW;q=0.1,ko;q=0.1</em>，所以此法並不可取。google了近半個小時，查到了php的<em>preg_match()</em>函數，大體就是可以自定義一個規則來和某一個參數進行匹配，所以判斷的語句修改成如下:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">error_reporting</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">E_ALL</span> ^ <span style="color: #009900; font-weight: bold;">E_NOTICE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^([a-z\-]+)/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_ACCEPT_LANGUAGE'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">// 分析 HTTP_ACCEPT_LANGUAGE 的屬性</span>
<span style="color: #000088;">$lang</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">// 取第一語言設置</span>
&nbsp;
<span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$lang</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'zh-cn'</span> <span style="color: #339933;">:</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;经雷达探测，您使用的语言为新中国的简体汉字，为避免晕车，请使用顶端导航的繁简切换功能，谢谢 !&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;經雷達探測，您使用的語言目前超出本站的想像範圍，您確定您看得懂中文?&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>部分瀏覽器的語言顯示大小寫可能有問題，比如我所使用的opera顯示的是zh-CN，所以我們要繼續完善它，成品如下：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">error_reporting</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">E_ALL</span> ^ <span style="color: #009900; font-weight: bold;">E_NOTICE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^([a-z\-]+)/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_ACCEPT_LANGUAGE'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">// 分析 HTTP_ACCEPT_LANGUAGE 的屬性</span>
<span style="color: #000088;">$lang</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">// 這裏只取第一語言設置 （其他可根據需要增強功能，這裏只做簡單的方法演示）</span>
&nbsp;
<span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$lang</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'zh-cn'</span> <span style="color: #339933;">:</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;经雷达探测，您使用的语言为新中国的简体汉字，为避免晕车，请使用顶端导航的繁简切换功能，谢谢 !&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'zh-CN'</span> <span style="color: #339933;">:</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;经雷达探测，您使用的语言为新中国的简体汉字，为避免晕车，请使用顶端导航的繁简切换功能，谢谢 !&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'zh-hk'</span> <span style="color: #339933;">:</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;經雷達探測，您使用的語言為中國傳統繁體漢字，為本站所推崇文字，祝您旅途愉快!&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'zh-HK'</span> <span style="color: #339933;">:</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;經雷達探測，您使用的語言為中國傳統繁體漢字，為本站所推崇文字，祝您旅途愉快!&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'zh-tw'</span> <span style="color: #339933;">:</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;經雷達探測，您使用的語言為中國傳統繁體漢字，為本站所推崇文字，祝您旅途愉快!&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'zh-TW'</span> <span style="color: #339933;">:</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;經雷達探測，您使用的語言為中國傳統繁體漢字，為本站所推崇文字，祝您旅途愉快!&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'en-us'</span> <span style="color: #339933;">:</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;經雷達探測，您使用的語言為英文，您確定你看得懂中文?&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;經雷達探測，您使用的語言目前超出本站的想像範圍，您確定您看得懂中文?&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>具體的效果可見本blog的文章上端的提示文字，或者把代碼存成php放在自己網絡空間測試。如發現顯示不準確，請訪問<a href="http://guaniu.com/test/lang.php" target="_blank" class="broken_link">http://guaniu.com/test/lang.php</a>探測你的瀏覽器的語言設置，然後給我回覆，謝謝！</p>
]]></content:encoded>
			<wfw:commentRss>http://leeiio.me/php-browser-lang/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>

