<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[思想之地]]></title> 
<description><![CDATA[努力!]]></description>
<link>http://be-evil.org</link>
<language>zh-cn</language>
<generator>www.emlog.net</generator>

<item>
	<title>爆强创意真人格斗&quot;中央武院&quot;</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=90</link>
	<description><![CDATA[<p>中央美院版画系学生的作品,内容非常精彩搞笑,格斗招式华丽且很有创意,强烈推荐! <br />
<embed src="http://www.youtube.com/v/NgQtKfqYbMk&amp;hl=zh_CN&amp;fs=1" width="425" height="344" type="application/x-shockwave-flash" allownetworking="internal" enablecontextmenu="False" loop="false" autostart="false" showstatusbar="1"></embed></p>]]></description>
	<pubDate>Wed, 22 Oct 2008 12:57:32 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=90</guid>
</item>
<item>
	<title>音乐欣赏 Melee Built To Last</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=89</link>
	<description><![CDATA[<p><embed height="385" width="480" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://6.cn/player.swf?flag=0&amp;vid=pkqukEakmnS_ebzJHNvEtQ"></embed></p>
<p>Built To Last收录于美国摇滚团体Melee rocks 2007年签约华纳唱片后推出年度大碟「Devils &amp; Angels」,「Built To Last」在流畅的摇滚音乐线条中流露出乐团沉稳、明快的歌声情感。</p>
<p><br />
<strong>Melee rokcks</strong>：美国摇滚团体Melee rocks的中文译称魅力帮，其成员主要来自美国加州橘郡，分别是Chris Cron(主唱/键盘/吉他)、Ricky Sans(吉他/主唱)、Ryan Malloy(贝斯/主唱)以及Mike Nader(鼓手)。魅力帮(Melee)的流行摇滚音乐有著一份难以抗拒的自在快感，还有一份触动人心的真实感动，Piano Pop新帮主的魅力充分展现在他们入主华纳唱片公司的首张大碟「Devils &amp; Angels」中，尽情地挥洒著当代英式摇滚乐团以钢琴与人声创造动人歌曲的神采，并且找回了好久不见的加州摇滚活力<br />
<br />
&nbsp;</p>]]></description>
	<pubDate>Sun, 19 Oct 2008 22:14:27 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=89</guid>
</item>
<item>
	<title>[译文]难倒你的9个JavaScript陷阱</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=88</link>
	<description><![CDATA[<p>本文来自于<a target="_blank" href="http://www.fitzblog.com/bid/2127/Nine-Javascript-Gotchas">Nine Javascript Gotchas</a></p>
<p><strong>1.　最后一个逗号</strong></p>
<p>如这段代码，注意最后一个逗号，按语言学角度来说应该是不错的（python的类似数据类型辞典dictionary就允许如此）。IE会报语法错误，但语焉不详，你只能用人眼从几千行代码中扫描。</p>
<pre>
&nbsp;</pre>
<ol class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;theObj&nbsp;=&nbsp;{ &nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;city&nbsp;:&nbsp;</span><span class="string">&quot;Boston&quot;</span><span>, &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;:&nbsp;</span><span class="string">&quot;MA&quot;</span><span>, &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;}&nbsp;</span></li>
</ol>
<p><strong>2.　this的引用会改变</strong></p>
<p>如这段代码：</p>
<pre>
&nbsp;</pre>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;button&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;Gotcha!&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;MyButton&quot;</span><span>&nbsp;</span><span class="tag">&gt;</span><span>&nbsp;</span></span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;</span></li>
    <li class="alt"><span>var&nbsp;</span><span class="attribute">MyObject</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">function</span><span>&nbsp;()&nbsp;{ &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">this.alertMessage</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">&quot;javascript&nbsp;rules&quot;</span><span>; &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">this.ClickHandler</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">function</span><span>()&nbsp;{ &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(this.alertMessage&nbsp;); &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;} &nbsp;</span></li>
    <li><span>}(); &nbsp;</span></li>
    <li class="alt"><span>document.getElementById(&rdquo;theText&rdquo;)</span><span class="attribute">.onclick</span><span>&nbsp;=&nbsp;&nbsp;</span><span class="attribute-value">MyObject</span><span>.ClickHandler &nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;</span></li>
</ol>
<p>&nbsp;</p>
<p>并不如你所愿，答案并不是&rdquo;javascript rules&rdquo;。在执行MyObject.ClickHandler时，代码中红色这行，this的引用实际上指向的是document.getElementById(&quot;theText&quot;)的引用。可以这么解决：</p>
<pre>
&nbsp;</pre>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;button&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;Gotcha!&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;theText&quot;</span><span>&nbsp;</span><span class="tag">&gt;</span><span>&nbsp;</span></span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;</span></li>
    <li class="alt"><span>var&nbsp;</span><span class="attribute">MyObject</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">function</span><span>&nbsp;()&nbsp;{ &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">self</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">this</span><span>; &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">this.alertMessage</span><span>&nbsp;=&nbsp;&ldquo;javascript&nbsp;rules&rdquo;; &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">this.OnClick</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">function</span><span>()&nbsp;{ &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(self.value); &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li>
    <li class="alt"><span>}(); &nbsp;</span></li>
    <li><span>document.getElementById(&rdquo;theText&rdquo;)</span><span class="attribute">.onclick</span><span>&nbsp;=&nbsp;&nbsp;</span><span class="attribute-value">MyObject</span><span>.OnClick &nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;</span></li>
</ol>
<p>实质上，这就是javascript作用域的问题。如果你看过，你会发现解决方案不止一种。</p>
<p><strong>3.　标识盗贼</strong></p>
<p>在javascript中不要使用跟HTML的id一样的变量名。如下代码：</p>
<pre>
&nbsp;</pre>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;button&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;TheButton&quot;</span><span class="tag">&gt;</span><span>&nbsp;</span></span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">TheButton</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">get</span><span>(&quot;TheButton&quot;); &nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;</span></li>
</ol>
<p>IE会报对象未定义的错误。我只能说：IE sucks.</p>
<p><strong>4.　字符串只替换第一个匹配</strong></p>
<p>如下代码：</p>
<pre>
&nbsp;</pre>
<ol class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;fileName&nbsp;=&nbsp;</span><span class="string">&quot;This&nbsp;is&nbsp;a&nbsp;title&quot;</span><span>.replace(</span><span class="string">&quot;&nbsp;&quot;</span><span>,</span><span class="string">&quot;_&quot;</span><span>);&nbsp;</span></span></li>
</ol>
<p>&nbsp;</p>
<p>而实际上，结果是&rdquo;This_is a title&ldquo;. 在javascript中，String.replace的第一个参数应该是正则表达式。所以，正确的做法是这样：</p>
<pre>
&nbsp;</pre>
<ol class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;fileName&nbsp;=&nbsp;</span><span class="string">&quot;This&nbsp;is&nbsp;a&nbsp;title&quot;</span><span>.replace(/&nbsp;/g,</span><span class="string">&quot;_&quot;</span><span>);&nbsp;</span></span></li>
</ol>
<p><br />
&nbsp;</p>
<p><strong>5.　mouseout意味着mousein</strong></p>
<p>事实上，这是由于事件冒泡导致的。IE中有mouseenter和mouseleave，但不是标准的。作者在此建议大家使用库比如YUI来解决问题。</p>
<p><strong>6.　parseInt是基于进制体系的</strong></p>
<p>这个是常识，可是很多人给忽略了parseInt还有第二个参数，用以指明进制。比如，parseInt(&quot;09&quot;)，如果你认为答案是9，那就错了。因为，在此，字符串以0开头，parseInt以八进制来处理它，在八进制中，09是非法，返回false，布尔值false转化成数值就是0. 因此，正确的做法是parseInt(&quot;09&quot;, 10).</p>
<p><strong>7.　for...in...会遍历所有的东西</strong></p>
<p>有一段这样的代码：</p>
<pre>
&nbsp;</pre>
<ol class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;arr&nbsp;=&nbsp;[5,10,15]; &nbsp;</span></span></li>
    <li><span class="keyword">var</span><span>&nbsp;total&nbsp;=&nbsp;1; &nbsp;</span></li>
    <li class="alt"><span class="keyword">for</span><span>&nbsp;(&nbsp;</span><span class="keyword">var</span><span>&nbsp;x&nbsp;</span><span class="keyword">in</span><span>&nbsp;arr)&nbsp;{ &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;total&nbsp;=&nbsp;total&nbsp;*&nbsp;arr[x]; &nbsp;</span></li>
    <li class="alt"><span>}&nbsp;</span></li>
</ol>
<p><br />
&nbsp;</p>
<p>运行得好好的，不是吗？但是有一天它不干了，给我返回的值变成了NaN, 晕。我只不过引入了一个库而已啊。原来是这个库改写了Array的prototype，这样，我们的arr平白无过多出了一个属性（方法），而for...in...会把它给遍历出来。所以这样做才是比较安全的：</p>
<pre>
&nbsp;</pre>
<ol class="dp-c">
    <li class="alt"><span><span class="keyword">for</span><span>&nbsp;(&nbsp;</span><span class="keyword">var</span><span>&nbsp;x&nbsp;=&nbsp;0;&nbsp;x&nbsp;&lt;&nbsp;arr.length;&nbsp;x++)&nbsp;{ &nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;total&nbsp;=&nbsp;total&nbsp;*&nbsp;arr[x]; &nbsp;</span></li>
    <li class="alt"><span>}&nbsp;</span></li>
</ol>
<p>其实，这也是污染基本类的prototype会带来危害的一个例证。</p>
<p><strong>8.　事件处理器的陷阱</strong></p>
<p>这其实只会存在使用作为对象属性的事件处理器才会存在的问题。比如window.onclick = MyOnClickMethod这样的代码，这会复写掉之前的window.onclick事件，还可能导致IE的内容泄露（sucks again）。在IE还没有支持DOM 2的事件注册之前，作者建议使用库来解决问题，比如使用YUI:</p>
<pre>
&nbsp;</pre>
<ol class="dp-c">
    <li class="alt"><span><span>YAHOO.util.Event.addListener(window,&nbsp;</span><span class="string">&quot;click&quot;</span><span>,&nbsp;MyOnClickMethod);&nbsp;</span></span></li>
</ol>
<p><br />
&nbsp;</p>
<p>这应该也属于常识问题，但新手可能容易犯错。</p>
<p><strong>9.　Focus Pocus</strong></p>
<p>新建一个input文本元素，然后把焦点挪到它上面，按理说，这样的代码应该很自然：</p>
<pre>
&nbsp;</pre>
<ol class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;newInput&nbsp;=&nbsp;document.createElement(</span><span class="string">&quot;input&quot;</span><span>); &nbsp;</span></span></li>
    <li><span>document.body.appendChild(newInput); &nbsp;</span></li>
    <li class="alt"><span>newInput.focus(); &nbsp;</span></li>
    <li><span>newInput.select();&nbsp;</span></li>
</ol>
<p>但是IE会报错（sucks again and again）。理由可能是当你执行focus()的时候，元素尚未可用。因此，我们可以延迟执行：</p>
<pre style="width: 100.16%; height: 173px;">
&nbsp;</pre>
<ol class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;newInput&nbsp;=&nbsp;document.createElement(</span><span class="string">&quot;input&quot;</span><span>); &nbsp;</span></span></li>
    <li><span>newInput.id&nbsp;=&nbsp;</span><span class="string">&quot;TheNewInput&quot;</span><span>; &nbsp;</span></li>
    <li class="alt"><span>document.body.appendChild(</span><span class="string">&quot;newInput&quot;</span><span>); &nbsp;</span></li>
    <li><span>&nbsp;</span></li>
    <li class="alt"><span>setTimeout(</span><span class="string">&quot;document.getElementById('TheNewInput').focus();&nbsp;document.getElementById('TheNewInput').select();&quot;</span><span>,&nbsp;10);&nbsp;</span></li>
</ol>
<p>在实践中，javascript的陷阱还有很多很多，大多是由于解析器的实现不到位而引起。这些东西一般都不会在教科书中出现，只能靠开发者之间的经验分享。谢天谢地，我们生活在网络时代，很多碰到的问题，一般都可以在Google中找到答案。</p>
<div class="hiddenElement">&nbsp;</div>
<p>
<table class="hiddenElement">
    <tbody>
        <tr>
            <td>&nbsp;</td>
        </tr>
    </tbody>
</table>
</p>
<p class="hiddenElement">&nbsp;</p>
<ul class="hiddenElement">
    <li>&nbsp;</li>
</ul>
<p>&nbsp;</p>]]></description>
	<pubDate>Sat, 18 Oct 2008 19:01:50 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=88</guid>
</item>
<item>
	<title>对于柳州明网断网事件教训总结</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=87</link>
	<description><![CDATA[<ol>
    <li>这年头,连萝卜都不可靠,更何况IDC服务商。</li>
    <li>每星期都要对网站的数据进行备份。</li>
    <li>有条件的情况下,一定要购买一个备用空间以防不测。</li>
    <li>就算是100M的虚拟主机,购买合同一样很重要,特别是出了问题需要维权的时候。</li>
    <li>主机商服务好不代表主机商很可靠。</li>
    <li>IDC主机用户维权群也会变成IDC主机商推销群。</li>
    <li>google、百度快照可以找回所有的文本数据。</li>
</ol>]]></description>
	<pubDate>Thu, 16 Oct 2008 22:29:32 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=87</guid>
</item>
<item>
	<title>IE的document.getElementById混淆name和id属性的BUG</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=86</link>
	<description><![CDATA[<p>前不久我在开发中遇到了<a target="_blank" href="http://be-evil.org/showlog-83.html">在IE下Form.submit()的一个BUG</a>,没想到IE的BUG还不只这么一个,下面我来介绍我遇到的另外一个关于document.getElementById的BUG.</p>
<p><strong>BUG演示</strong></p>
<p>页面演示在这里,代码在下面</p>
<pre><ol class="dp-xml"><li class="alt"><span><span>&lt;!DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;&quot;-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN&quot;&nbsp;&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;</span><span class="tag">&gt;</span><span>&nbsp;</span></span></li><li><span class="tag">&lt;</span><span class="tag-name">html</span><span>&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://www.w3.org/1999/xhtml&quot;</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span class="tag">&lt;</span><span class="tag-name">meta</span><span>&nbsp;</span><span class="attribute">http-equiv</span><span>=</span><span class="attribute-value">&quot;Content-Type&quot;</span><span>&nbsp;</span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;text/html;&nbsp;charset=utf-8&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;</span></li><li class="alt"><span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>IE&nbsp;document.getElementById&nbsp;BUG&nbsp;DEMO</span><span class="tag">&lt;/</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;</span></li><li><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">language</span><span>=</span><span class="attribute-value">&quot;javascript&quot;</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span>/* &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;IE&nbsp;document.getElementById&nbsp;BUG&nbsp;演示DEMO &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;作者:朦朧中的罪惡 &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;博客:http://be-evil.org &nbsp;</span></li><li><span>*/ &nbsp;</span></li><li class="alt"><span>function&nbsp;changeValue() &nbsp;</span></li><li><span>{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">username</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">document</span><span>.getElementById('username'); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">username.value</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">'Whahaha'</span><span>; &nbsp;</span></li><li class="alt"><span>} &nbsp;</span></li><li><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span class="tag">&lt;</span><span class="tag-name">form</span><span>&nbsp;</span><span class="attribute">action</span><span>=</span><span class="attribute-value">&quot;IE_BUG2.html&quot;</span><span>&nbsp;</span><span class="attribute">method</span><span>=</span><span class="attribute-value">&quot;get&quot;</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span class="tag">&lt;</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>name:</span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;username&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span class="tag">&lt;</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>name2:</span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;username&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;name&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span class="tag">&lt;</span><span class="tag-name">p</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;button&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;改变&quot;</span><span>&nbsp;</span><span class="attribute">onclick</span><span>=</span><span class="attribute-value">&quot;changeValue();&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">form</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;</span></li></ol></pre>
<p>很简单的一段代码,看上去似乎没有任何错误,但是在IE下点击改变按钮后,被改变值的对象居然是第一个name属性为username的input对象.而不是第二个id属性为username的对象.&nbsp;</p>
<p>&nbsp;</p>
<p><strong>如何避免这个问题?</strong></p>
<p>方法一：尽量避免在页面中出现name与id属性相同的对象</p>
<p>方法二：利用JavaScript的特点,重写document.getElementById</p>
<p>下面j解决问题的方法和思路是根据国外某位兄弟的经验翻译过来,原文在<a target="_blank" href="http://www.sixteensmallstones.org/ie-javascript-bugs-overriding-internet-explorers-documentgetelementbyid-to-be-w3c-compliant-exposes-an-additional-bug-in-getattributes">这里</a>,这里非常感谢他的文章给我作参考!</p>
<p>1.首先初步的尝试复写document.getElementById的方法</p>
<pre><ol class="dp-c"><li class="alt"><span><span class="keyword">if</span><span>&nbsp;(/msie/i.test&nbsp;(navigator.userAgent))&nbsp;</span><span class="comment">//根据userAgent确定用户使用IE浏览器 </span><span>&nbsp;</span></span></li><li><span>{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;document.nativeGetElementById&nbsp;=&nbsp;document.getElementById; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(id) &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;elem&nbsp;=&nbsp;document.nativeGetElementById(id); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(elem) &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//确定id相同 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(elem.id&nbsp;==&nbsp;id) &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;elem; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//如果没有ID相同的,那么就遍历所有元素的集合找到id相同的元素 </span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">var</span><span>&nbsp;i=1;i&lt;document.all[id].length;i++) &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(document.all[id][i].id&nbsp;==&nbsp;id) &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;document.all[id][i]; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">null</span><span>; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}; &nbsp;</span></li><li><span>}&nbsp;</span></li></ol></pre>
<p>看起来似乎没有任何问题,但是在IE7下的某些情况中又会引出一个<strong>getAttribute()</strong>方法的问题.</p>
<p>看代码:</p>
<pre><ol class="dp-xml"><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>Demonstrate&nbsp;IE7&nbsp;getAttribute()&nbsp;bug</span><span class="tag">&lt;/</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">form</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;myForm1&quot;</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;user_id&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;user_id&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;text&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">form</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">form</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;myForm2&quot;</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;text&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">form</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/javascript&quot;</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">formElement1</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">document</span><span>.getElementById('myForm1'); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">formElement2</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">document</span><span>.getElementById('myForm2'); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(formElement1.getAttribute('id')+&nbsp;&quot;\n&quot;&nbsp;+&nbsp;formElement2.getAttribute('id')); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;</span></li></ol></pre>
<p>这个情况出现在表单中,如果有一个表单元素name的值为id的时候</p>
<p>在火狐下我们得到的结果是</p>
<p>myForm1<br />
myForm2</p>
<p>但是在IE7下面,却变成了</p>
<p>myForm1<br />
[object]</p>
<p>不知怎么的,ie错误的访问了它内部name位id的input元素而不是表单元素本身的id属性.使用formElement2.id的方法替代getAttribute()我们仍然可以得到相同的效果.(参见<a target="_blank" href="http://be-evil.org/showlog-83.html">我先前遇到的一个IE的BUG</a>)</p>
<p>幸运的是我们仍然可以通过以下的方式得到正确的元素:</p>
<p>formElement2.attributes['id'].value<br />
formElement2.getAttributeNode('id').value</p>
<p>既然还有以上的隐性BUG,那我们还要再次修改一下我们覆写的document.getElementById方法</p>
<pre><ol class="dp-c"><li class="alt"><span><span class="keyword">if</span><span>&nbsp;(/msie/i.test&nbsp;(navigator.userAgent))&nbsp;</span><span class="comment">//<span class="comment">根据userAgent确定用户使用IE浏览器</span></span></span></li><li><span>{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;document.nativeGetElementById&nbsp;=&nbsp;document.getElementById; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(id) &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;elem&nbsp;=&nbsp;document.nativeGetElementById(id); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(elem) &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//修改后的确认能得到id属性方法 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(elem.attributes[</span><span class="string">'id'</span><span>].value&nbsp;==&nbsp;id) &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;elem; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment"><span class="comment">//如果没有ID相同的,那么就遍历所有元素的集合找到id相同的元素</span> </span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">var</span><span>&nbsp;i=1;i&lt;document.all[id].length;i++) &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(document.all[id][i].attributes[</span><span class="string">'id'</span><span>].value&nbsp;==&nbsp;id) &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;document.all[id][i]; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">null</span><span>; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}; &nbsp;</span></li><li><span>} &nbsp;</span></li></ol></pre>
<p>OK,这个问题总算解决了,希望我们的微软公司能早日修复这些JavaScript DOM BUG</p>]]></description>
	<pubDate>Wed, 15 Oct 2008 22:54:03 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=86</guid>
</item>
<item>
	<title>再现战争的残酷--重温战火兄弟连</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=85</link>
	<description><![CDATA[<p>某天无意中在BT上看到兄弟连全套720P高清版本，花了一天一夜拖下来后又花了一天全部看完，这部伟大的二战电视剧再一次震撼了我的心，没有以往战争电影的丑化地方，我方主旋律、政治等等因素影响，纯属以一个第三人称叙事中立的方式来描写战争。</p><p>靠着这个中立的叙事方式，我们才能真切的看到那些有血有肉的士兵和战争的恐怖。一幕幕写实的情景时刻在敲击着我们的心灵：</p><p>在第三集中，E连攻击法国小镇时，一个被炸晕的德军士兵从房子中走出来碰到一个美军士兵，此时没有任何对白，美军士兵没有任何的迟疑，直接用手枪将其射倒，然后继续加入战斗，这个细节镜头将战争的残酷展现的淋漓尽致，生命在战场上就是这么脆弱..</p><p><a id="ematt:131" target="_blank" href="http://be-evil.org/uploadfile/200808/975eff413d060db51e984079372ca60e20080830210530.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-975eff413d060db51e984079372ca60e20080830210530.jpg" /></a></p><p>&nbsp;</p><p>第三集中，导演让我们看到了在二战片中难得的对德国军人中立的描写</p><p><a id="ematt:150" target="_blank" href="http://be-evil.org/uploadfile/200808/f0d5584cf3fece3744d7462914b55cc420080830213014.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-f0d5584cf3fece3744d7462914b55cc420080830213014.jpg" /></a></p><p><a id="ematt:151" target="_blank" href="http://be-evil.org/uploadfile/200808/349ad3c313d1c962e059fc84751f586020080830213014.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-349ad3c313d1c962e059fc84751f586020080830213014.jpg" /></a></p><p><a id="ematt:152" target="_blank" href="http://be-evil.org/uploadfile/200808/f2e2b84839ed4ef916a41af5ace806aa20080830213014.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-f2e2b84839ed4ef916a41af5ace806aa20080830213014.jpg" /></a></p><p><a id="ematt:153" target="_blank" href="http://be-evil.org/uploadfile/200808/d30134b29d4079aadabb9f1fa3e4790720080830213015.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-d30134b29d4079aadabb9f1fa3e4790720080830213015.jpg" /></a></p><p>&nbsp;</p><p>同样是第三集，士兵布洛伊与D连排长的一段对话：</p><p><a id="ematt:132" target="_blank" href="http://be-evil.org/uploadfile/200808/aedd32f71125b78e267694c659052abf20080830212020.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-aedd32f71125b78e267694c659052abf20080830212020.jpg" /></a></p><p><a id="ematt:133" target="_blank" href="http://be-evil.org/uploadfile/200808/115e78244b4b79f9e9b02fc42c2aae4520080830212020.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-115e78244b4b79f9e9b02fc42c2aae4520080830212020.jpg" /></a></p><p><a id="ematt:134" target="_blank" href="http://be-evil.org/uploadfile/200808/bc7ca4e3c7688e4df01a163bfba8d36e20080830212020.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-bc7ca4e3c7688e4df01a163bfba8d36e20080830212020.jpg" /></a></p><p><a id="ematt:135" target="_blank" href="http://be-evil.org/uploadfile/200808/e5b6a5f0eade43330bc433a79ada471020080830212021.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-e5b6a5f0eade43330bc433a79ada471020080830212021.jpg" /></a></p><p><a id="ematt:136" target="_blank" href="http://be-evil.org/uploadfile/200808/12962f7c29d7fe91f910103a04b351de20080830212021.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-12962f7c29d7fe91f910103a04b351de20080830212021.jpg" /></a></p><p><a id="ematt:137" target="_blank" href="http://be-evil.org/uploadfile/200808/84a3a747968db1a1ae9b2c6dec19416820080830212021.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-84a3a747968db1a1ae9b2c6dec19416820080830212021.jpg" /></a></p><p><a id="ematt:138" target="_blank" href="http://be-evil.org/uploadfile/200808/9a9d5fca2581073c90fce7873dcde90520080830212021.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-9a9d5fca2581073c90fce7873dcde90520080830212021.jpg" /></a></p><p><a id="ematt:139" target="_blank" href="http://be-evil.org/uploadfile/200808/0dbd286a9a7b3ec01a7dae9ab2d8061620080830212022.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-0dbd286a9a7b3ec01a7dae9ab2d8061620080830212022.jpg" /></a></p><p><a id="ematt:140" target="_blank" href="http://be-evil.org/uploadfile/200808/6c4eca0a1e5d77c1569d38b90949749020080830212022.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-6c4eca0a1e5d77c1569d38b90949749020080830212022.jpg" /></a></p><p><a id="ematt:141" target="_blank" href="http://be-evil.org/uploadfile/200808/f7c2605de3af3507114b8bf5a7e95d0520080830212022.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-f7c2605de3af3507114b8bf5a7e95d0520080830212022.jpg" /></a></p><p><a id="ematt:142" target="_blank" href="http://be-evil.org/uploadfile/200808/e264d886c017d400c0b08cfa14d88cbb20080830212022.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-e264d886c017d400c0b08cfa14d88cbb20080830212022.jpg" /></a></p><p><a id="ematt:143" target="_blank" href="http://be-evil.org/uploadfile/200808/2a678a86a41aa75a724f6711ec4aabe620080830212022.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-2a678a86a41aa75a724f6711ec4aabe620080830212022.jpg" /></a></p><p><a id="ematt:144" target="_blank" href="http://be-evil.org/uploadfile/200808/d92c66a6447bc9b2e3cf38d66c9f21fc20080830212023.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-d92c66a6447bc9b2e3cf38d66c9f21fc20080830212023.jpg" /></a></p><p><a id="ematt:145" target="_blank" href="http://be-evil.org/uploadfile/200808/0af751d6d0ac8d95a542d10d46bd34a420080830212023.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-0af751d6d0ac8d95a542d10d46bd34a420080830212023.jpg" /></a></p><p><a id="ematt:146" target="_blank" href="http://be-evil.org/uploadfile/200808/d6ead7048b565dbc33a35e9c23dfc0fc20080830212023.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-d6ead7048b565dbc33a35e9c23dfc0fc20080830212023.jpg" /></a></p><p><a id="ematt:147" target="_blank" href="http://be-evil.org/uploadfile/200808/4a299dfac7fc42a905030fbeeb18e77520080830212023.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-4a299dfac7fc42a905030fbeeb18e77520080830212023.jpg" /></a></p><p><a id="ematt:148" target="_blank" href="http://be-evil.org/uploadfile/200808/4f2170dd9ff7e7df35c1f9bcf27ac5ca20080830212023.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-4f2170dd9ff7e7df35c1f9bcf27ac5ca20080830212023.jpg" /></a></p><p><a id="ematt:149" target="_blank" href="http://be-evil.org/uploadfile/200808/d377297e6cad809134475dacde0ea8a120080830212024.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-d377297e6cad809134475dacde0ea8a120080830212024.jpg" /></a></p><p>这段对白很好的诠释了战争需要什么样的士兵..</p><p>&nbsp;</p><p>第五集，十字路口中，温特斯上尉在短暂的迟疑后射倒一位年轻的德国党卫军士兵</p><p><a id="ematt:154" target="_blank" href="http://be-evil.org/uploadfile/200808/46df0e7c25031122bee97a865b0aefa320080830214258.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-46df0e7c25031122bee97a865b0aefa320080830214258.jpg" /></a></p><p>惊异的温特斯</p><p><a id="ematt:155" target="_blank" href="http://be-evil.org/uploadfile/200808/f326c6946de98d6d0111150aa8df5ab020080830214258.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-f326c6946de98d6d0111150aa8df5ab020080830214258.jpg" /></a></p><p>年轻的德国士兵</p><p><a id="ematt:156" target="_blank" href="http://be-evil.org/uploadfile/200808/1d098977e154dad258887b9bca41297e20080830214259.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-1d098977e154dad258887b9bca41297e20080830214259.jpg" /></a></p><p>后来在法国休假的温特斯，冷静的他在巴黎的地铁上开始迷茫于战争的意义，开始难以侍从恬静与战争紧张，开始忏悔德军孩子的眼神于自己射出的那冷酷子弹的轨迹.....</p><p><a id="ematt:157" target="_blank" href="http://be-evil.org/uploadfile/200808/7add312a6a5a0e9c3e4461b40cdd4fa520080830214259.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-7add312a6a5a0e9c3e4461b40cdd4fa520080830214259.jpg" /></a></p><p>第五集，两位兄弟在炮击中的受伤，让曾经坚毅的巴克精神彻底崩溃</p><p><a id="ematt:158" target="_blank" href="http://be-evil.org/uploadfile/200808/216f7e29189cf6a368c41c9e75a55b2c20080830220315.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-216f7e29189cf6a368c41c9e75a55b2c20080830220315.jpg" /></a></p><p><a id="ematt:159" target="_blank" href="http://be-evil.org/uploadfile/200808/70a83c31536c81864f951765fab23f1e20080830220315.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-70a83c31536c81864f951765fab23f1e20080830220315.jpg" /></a></p><p><a id="ematt:160" target="_blank" href="http://be-evil.org/uploadfile/200808/1bedfecbb566ed2362dda72f76ec171220080830220555.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-1bedfecbb566ed2362dda72f76ec171220080830220555.jpg" /></a></p><p><a id="ematt:161" target="_blank" href="http://be-evil.org/uploadfile/200808/770566b26b4d23f06dd264dfa9c2eb2f20080830220555.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-770566b26b4d23f06dd264dfa9c2eb2f20080830220555.jpg" /></a></p><p>第七集中，同样是落在散兵坑里的炮弹，却是2个不同的结果</p><p>炮击来临，鲁兹在地上爬着寻找散兵坑，在散兵坑中的两个兄弟大声的对他喊着</p><p><a id="ematt:162" target="_blank" href="http://be-evil.org/uploadfile/200808/8e08cd73401904b6a10c10a9b7107cef20080830223219.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-8e08cd73401904b6a10c10a9b7107cef20080830223219.jpg" /></a></p><p>一秒钟之后，一发炮弹飞进了散兵坑</p><p><a id="ematt:164" target="_blank" href="http://be-evil.org/uploadfile/200808/8ee1fc54159927be9f928b9bb448dc6420080830223219.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-8ee1fc54159927be9f928b9bb448dc6420080830223219.jpg" /></a></p><p>鲁兹被眼前的这一幕惊呆了</p><p><a id="ematt:165" target="_blank" href="http://be-evil.org/uploadfile/200808/133a7b14c98ac00c12288da5a6d231e920080830223219.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-133a7b14c98ac00c12288da5a6d231e920080830223219.jpg" /></a></p><p>鲁兹爬进了另一个兄弟的散兵坑，一颗炮弹落在坑里却没有爆炸</p><p>&ldquo;命运就是那样&rdquo;，鲁兹后来这样说道</p><p><a id="ematt:163" target="_blank" href="http://be-evil.org/uploadfile/200808/296f8c98082299cf8d48575cf42639d020080830223219.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-296f8c98082299cf8d48575cf42639d020080830223219.jpg" /></a></p><p>在战争中，士兵不一定会在战斗中死亡，在第九集中，一个士兵在自己基地背着一袋马铃薯被德军迫击炮炸中身亡</p><p><a id="ematt:166" target="_blank" href="http://be-evil.org/uploadfile/200808/d8b4b3ead5e4241763ee11927358f36f20080830230812.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-d8b4b3ead5e4241763ee11927358f36f20080830230812.jpg" /></a></p><p>在第九集中，派康提对新兵欧基夫的一段说教，值得我们深思</p><p>台词如下：</p><p>你知道为什么没有人记得你的名字？<br />Do you know why no one remembers your name?<br />那是因为没人想去记住你的名字。<br />It's cause no one wants to remember your name.<br />我们有太多叫斯密斯，迪、马托还有欧基夫，欧布安的新兵<br />There's too many Smiths,Dimattos and O'Keefes and O'Briens,<br />你们来这里本来就是要替换老兵的<br />who show up here replacing Toccoa men<br />结果你们这些笨新兵先阵亡<br />that you replacement got killed in the first place.<br />他们都跟你一样笨手笨脚的<br />And they're all like you.They're all piss and vinegar.<br />&quot;德军在哪？&quot;<br />&quot;where are the Krauts at?&quot;<br />&quot;让我来对付他们&quot;<br />&quot;Let me at them.&quot;<br />&quot;我什么时候会跳伞到柏林？&quot;<br />&quot;When will i get to jump into Berlin？&quot;<br />两天之后，他们倒在地上<br />Two days later,there they are,<br />肚破肠流<br />with their blooding guts hanging out,<br />声嘶力竭的叫医护兵<br />and they're screaming for medic.<br />哭爹喊娘<br />Begging for their goddamn mother.<br />那些笨蛋连他们已经死了都不知道呢<br />Them dumb fucks don't even know they're dead yet.<br />你知道这段时期是我在战争中看到过的最好的部分吗？<br />Do you get that is the best part of fucking war I've seen?<br />我有热餐吃，热水洗，暖和的床<br />i got hot chow,hot showers,warm bed.<br />德国几乎跟在家一样好<br />Germany is almost as good as being home.<br />我今天甚至可以用真的卫生纸擦屁股<br />i even get to wipe my ass with real toilet paper today.</p><p>在影片最后，投降的德军将军给他们部下的一段讲话值得我们共同思考：</p><p><strong>这是一场漫长的战争，也是一场艰苦的战争。 </strong></p><p><strong>你们英勇并且骄傲地为祖国作战，你们是不平凡的一群，彼此紧密相连，这样的情谊存在也只存在于战斗中。 </strong></p><p><strong>象兄弟一样，共同使用散兵坑，在最需要的时刻彼此互相扶持，你们共同面对死亡，一同接受磨难。 </strong></p><p><strong>最后，我想说的是，我为能够与你们每个人共同服役而感到骄傲。你们有权享受永远快乐而和平的生活。</strong></p><p>将军道出的是所有士兵的心声，战争中的友谊.不论在哪一方都是有的. <br /><br />士兵打仗只是履行自己的职责，无论他们是哪一方，为什么而战。</p><p>他们都应该值得尊敬....</p><p>希望以后战争越来越少，世界更加和平..</p>]]></description>
	<pubDate>Wed, 15 Oct 2008 22:52:47 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=85</guid>
</item>
<item>
	<title>Zend Framework在II7环境下的配置手记</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=84</link>
	<description><![CDATA[<p>转换到VISTA+IIS7平台下开发后，首要的问题就是：如何让Zend Framework在IIS7下正常运行？众所周知，Zend Framework运行需要url rewrite方可实现，那么II7该如何处理配置呢？其实很简单，II7和Apache一样已经将功能组件模块化，实现一个功能只需安装对应模块文件后即可。</p>
<p>由于介绍Zend Framework在IIS7下面配置的文章网上几乎没有，我只能靠着着相关的参考资料和自己以往的经验来慢慢摸索，整个研究过程中有这么几点收获：</p>
<p>1.<span style="color: rgb(255,0,0)">IIS7真的很强大！</span>和Apache一样的功能模块化+配置数据文件化。</p>
<p>2.英文真的很重要！</p>
<p><strong>以下是我的个人研究手记：</strong></p>
<p>II7 相关模块文件和文档可以去 <a target="_blank" href="http://www.iis.net/">http://www.iis.net</a>下载</p>
<p>url rewrite下载的页面在<a target="_blank" href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;g=6&amp;i=1691">这里</a>，点击DownLoad按钮后即可下载，安装过程也很&ldquo;微软&rdquo;&mdash;&mdash;一路下一步就行了。</p>
<p>&nbsp;</p>
<p>==================================================================</p>
<p>本文系原创文章，转载请注明文章源自<a href="http://be-evil.org/">思想之地</a>&nbsp;<a href="http://be-evil.org/">http://be-evil.org</a>，作者：朦胧中的罪恶</p>
<p>==================================================================</p>
<p>下面是我的配置过程：</p>
<p>安装好模块后，我们即可在网站的配置中看到 URL rewrite Module的选项</p>
<p>点击放大：</p>
<p><a id="ematt:121" target="_blank" href="http://be-evil.org/uploadfile/200808/c51d000baa082837c9061b55a5bcecfe20080814214345.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-c51d000baa082837c9061b55a5bcecfe20080814214345.jpg" /></a></p>
<p>&nbsp;</p>
<p>然后我们就进入到了重写规则管理页面：</p>
<p><a id="ematt:122" target="_blank" href="http://be-evil.org/uploadfile/200808/aedb6e6943ddfbecf44e97b603f893ec20080814214720.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-aedb6e6943ddfbecf44e97b603f893ec20080814214720.jpg" /></a></p>
<p>&nbsp;</p>
<p>点击Add Rule后我们即可进入添加规则页面：</p>
<p>详细功能解释参见图片：(不知道为什么该页面在我的系统中显示异常)</p>
<p><a id="ematt:123" target="_blank" href="http://be-evil.org/uploadfile/200808/eb65cfa61ef258ff4742b808b3f95f1d20080814215627.jpg"><img alt="点击查看原图" border="0" src="http://be-evil.org/uploadfile/200808/thum-eb65cfa61ef258ff4742b808b3f95f1d20080814215627.jpg" /></a></p>
<p>设定完毕之后点击右上角的&quot;应用&quot;即可保存该规则设定</p>
<p>下面介绍Zend Framework的重写设定</p>
<p><strong>Requested URL</strong> 设定为&quot;matches the pattern&quot;</p>
<p><strong>Using</strong> 设定为：&quot;Regular Expressions&quot;</p>
<p><strong>Ignore Case</strong> 大小写敏感可以根据自己项目情况设定</p>
<p><strong>Partten</strong> 设定为：</p>
<p>^(([\w]+/?)+)(?!\.html|\.js|\.css|\.gif|\.png|.jpg|.ico|\.txt)$</p>
<p><strong>Rewrtie URL </strong>设定为：</p>
<p>index.php/{R:1}</p>
<p>按照以上的设定后Zend Framework即可正常在IIS7下运行</p>
<p>下面是II7 webcofing的内容，将文件放到网站目录下即可同样实现重写规则，这点和Apache的.htaccess文件集为相似</p>
<p>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br />
&lt;configuration&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;system.webServer&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rewrite&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rules&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rule name=&quot;ImportedRule1&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;match url=&quot;^(([\w]+/?)+)(?!\.html|\.js|\.css|\.gif|\.png|.jpg|.ico|\.txt)$&quot; negate=&quot;false&quot; ignoreCase=&quot;true&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;action type=&quot;Rewrite&quot; url=&quot;index.php/{R:1}&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;conditions logicalGrouping=&quot;MatchAny&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/conditions&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/rule&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/rules&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/rewrite&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/system.webServer&gt;<br />
&lt;/configuration&gt;</p>]]></description>
	<pubDate>Wed, 15 Oct 2008 22:51:32 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=84</guid>
</item>
<item>
	<title>IE中使用JavaScript中调用form.submit()提示“对象不支持此属性和方法”问题研究</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=83</link>
	<description><![CDATA[<p>今天在项目中无意中遇到的一个神奇的问题，特此记录。&nbsp;</p>
<p>首先我们看看以下代码，测试页面可以看<a target="_blank" href="http://203.208.39.99/html/script/ie_submit_bug.html">这里</a>,页面的功能和逻辑很简单。</p>
<p>这段代码从逻辑上看没有任何错误和BUG，理论上是可以完全执行的。</p>
<p><span style="font-weight: bold; color: #000080"><span style="font-weight: bold; color: #000080">&lt;html&gt;</span><br />
<font color="#000000">&nbsp;&nbsp;&nbsp; </font><span style="font-weight: bold; color: #000080">&lt;head&gt;</span><font color="#000000">IE 测试</font><span style="font-weight: bold; color: #000080">&lt;/head&gt;</span><br />
<span style="font-weight: bold; color: #000080">&lt;body&gt;</span><br />
<span style="font-weight: bold; color: #000080">&lt;script </span><span style="color: #ff0000">language=</span><span style="color: #0000ff">&quot;javascript&quot;</span><span style="font-weight: bold; color: #000080">&gt;</span><br />
<span style="color: #008800; font-style: italic">/*</span><br />
<span style="color: #008800; font-style: italic">======================================</span><br />
<span style="color: #008800; font-style: italic">&nbsp;&nbsp;&nbsp;</span><em><span style="color: #008800; font-style: italic"> IE 下 submit 重名测试</span><br />
<span style="color: #008800; font-style: italic">&nbsp;&nbsp;&nbsp; 作者：朦朧中的罪惡</span><br />
<span style="color: #008800; font-style: italic">&nbsp;&nbsp;&nbsp; 博客：http://be-evil.org</span><br />
</em><span style="color: #008800; font-style: italic">======================================</span><br />
<span style="color: #008800; font-style: italic">*/</span><br />
<span style="font-weight: bold; color: #000080">function</span><font color="#000000"> dosubmit()<br />
{<br />
&nbsp;&nbsp;&nbsp; </font><span style="font-weight: bold; color: #000080">var</span><font color="#000000"> theform = document.getElementById(</font><span style="color: #0000ff">'theform'</span><font color="#000000">);<br />
&nbsp;&nbsp;&nbsp; theform.submit();<br />
}<br />
</font><span style="font-weight: bold; color: #000080">&lt;/script&gt;</span><br />
<font color="#000000">&nbsp;&nbsp;&nbsp; </font><span style="font-weight: bold; color: #000080">&lt;form</span><font color="#000000"> </font><span style="color: #ff0000">method=</span><span style="color: #0000ff">&quot;post&quot;</span><font color="#000000"> </font><span style="color: #ff0000">id=</span><span style="color: #0000ff">&quot;theform&quot;</span><span style="font-weight: bold; color: #000080">&gt;</span><br />
<font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-weight: bold; color: #000080">&lt;table</span><font color="#000000"> </font><span style="color: #ff0000">width=</span><span style="color: #0000ff">&quot;800&quot;</span><span style="font-weight: bold; color: #000080">&gt;</span><br />
<font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-weight: bold; color: #000080">&lt;tr&gt;</span><br />
<font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-weight: bold; color: #000080">&lt;td&gt;&lt;input</span><font color="#000000"> </font><span style="color: #ff0000">type=</span><span style="color: #0000ff">&quot;text&quot;</span><font color="#000000"> </font><span style="color: #ff0000">value=</span><span style="color: #0000ff">&quot;测试&quot;</span><span style="font-weight: bold; color: #000080">&gt;&lt;/td&gt;</span><br />
<font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-weight: bold; color: #000080">&lt;/tr&gt;</span><br />
<font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-weight: bold; color: #000080">&lt;tr&gt;</span><br />
<font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-weight: bold; color: #000080">&lt;td&gt;&lt;input</span><font color="#000000"> </font><span style="color: #ff0000">type=</span><span style="color: #0000ff">&quot;button&quot;</span><font color="#000000"> </font><span style="color: #ff0000">name=</span><span style="color: #0000ff">&quot;submit&quot;</span><font color="#000000"> </font><span style="color: #ff0000">value=</span><span style="color: #0000ff">&quot;提交&quot;</span><font color="#000000"> </font><span style="color: #ff0000">onclick=</span><span style="color: #0000ff">&quot;dosubmit()&quot;</span><span style="font-weight: bold; color: #000080">&gt;&lt;/td&gt;</span><br />
<font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-weight: bold; color: #000080">&lt;/tr&gt;</span><br />
<font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-weight: bold; color: #000080">&lt;/table&gt;</span><br />
<font color="#000000">&nbsp;&nbsp;&nbsp; </font><span style="font-weight: bold; color: #000080">&lt;/form&gt;</span><br />
<span style="font-weight: bold; color: #000080">&lt;/body&gt;</span><br />
<span style="font-weight: bold; color: #000080">&lt;/html&gt;</span><br />
</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>==================================================================</p>
<p>本文系原创文章，转载请注明文章源自<a href="http://be-evil.org/">思想之地</a>&nbsp;<a href="http://be-evil.org/">http://be-evil.org</a>，作者：朦胧中的罪恶</p>
<p>==================================================================</p>
<p>如果用Firefox查看这个页面并点击提交按钮，表单会正常提交，但是我们换到IE下面，IE却会提示&ldquo;对象不支持此属性和方法&ldquo; 而停止提交的操作。</p>
<p>这是怎么回事呢？经过我多方的查找资料，发现是提交按钮的name=&quot;submit&quot;的属性在捣乱。</p>
<p>此时我们将<strong>theform.submit();</strong>注释掉，新起一行输入alert(theform.submit.value);刷新页面后再次点击提交，弹出的窗口上会显示&rdquo;提交&ldquo;两个字，神奇了！theform.submit居然是提交按钮而不是theform的方法了!</p>
<p>为什么会出现这个问题呢，因为在IE下可以通过 <strong>表单.表单元素名称 </strong>这样的方式获得一个表单下的所有表单元素，但是巧就巧在这里，如果某个表单元素的名称和表单的方法名重名的话那么IE就会优先将名称解析为某个表单元素，而不是表单的方法，此时就会出现这个神奇的问题了。</p>]]></description>
	<pubDate>Wed, 20 Aug 2008 17:32:39 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=83</guid>
</item>
<item>
	<title>聪明的搜索引擎..</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=82</link>
	<description><![CDATA[<p>看图：</p> <p><a target="_blank" href="http://be-evil.org/uploadfile/200808/f3ccdd27d2000e3f9255a7e3e2c4880020080812090232.jpg"><img border="0" alt="附件[ematt:119] " src="http://be-evil.org/uploadfile/200808/thum-f3ccdd27d2000e3f9255a7e3e2c4880020080812090232.jpg" /></a></p> <p><a target="_blank" href="http://be-evil.org/uploadfile/200808/156005c5baf40ff51a327f1c34f2975b20080812090232.jpg"><img border="0" alt="附件[ematt:120] " src="http://be-evil.org/uploadfile/200808/thum-156005c5baf40ff51a327f1c34f2975b20080812090232.jpg" /></a></p>]]></description>
	<pubDate>Tue, 12 Aug 2008 09:02:32 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=82</guid>
</item>
<item>
	<title>淘宝无法登陆的解决方法</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=81</link>
	<description><![CDATA[<p>最近在淘宝上买东西时发现一个奇怪的问题：</p>
<p>用ie 7访问淘宝任何页面都正常，但是一到登录页面速度就奇慢无比，而且就算登录页面显示出来了也是没有css的页面，输入用户名密码提交登陆后总是显示&ldquo;该页无法显示&rdquo;。更加奇怪的是，在同一时间使用firefox3登录淘宝一切却非常流畅正常，根本就没有ie的那个情况。</p>
<p>从以上情况可以初步判断是ie7的问题，下面记录我的排查步骤</p>
<p><strong>首先，我想到的是安全软件阻挡：</strong></p>
<p>关闭360安全卫士所有监控并将其退出。尝试登录，无效！</p>
<p>关闭江民杀毒软件。尝试登录，无效！</p>
<p><strong>其次，与安全软件无关？那么难道是插件问题？</strong></p>
<p>一个一个禁用所有IE正在使用中插件，每禁用一个就尝试登录淘宝，无效！</p>
<p><strong>再次，IE 安全设定的问题？</strong></p>
<p>到internet设置中将全部设置设定为默认值，尝试登录淘宝，无效！</p>
<p><strong>最后，必杀技：恢复笔记本纯净系统</strong></p>
<p>这次使出了绝招，完全恢复纯净系统，再次尝试登录淘宝，成功！</p>
<p><strong>问题到这里是解决了，但是似乎我仍然没有发现问题所在。</strong></p>
<p>因为急着买东西，打好系统补丁安装好杀毒软件我再次登录淘宝付钱买货。在我用网银往支付宝中充值后神奇的事情发生了，淘宝登录页面又出现了先前的问题，无法登陆了，而在出现这个问题的期间我只安装了工行的IE安全控件和U盾驱动。难道是它们在捣鬼？尝试卸载这两个软件后继续登录淘宝，问题依旧。此时我想到工行的IE安全控件安装后会修改安全设置，难道是修改安全设定后导致淘宝先前的写在我电脑上的cookie不正常从而无法登陆系统？于是我尝试清理了浏览器的cookie,再次登录淘宝,问题解决...</p>]]></description>
	<pubDate>Mon, 04 Aug 2008 22:49:06 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=81</guid>
</item>
<item>
	<title>熊猫打喷嚏</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=79</link>
	<description><![CDATA[<p>这段实在是太搞笑了</p>
<p><embed type="application/x-shockwave-flash" allowscriptaccess="sameDomain" align="middle" height="400" width="480" quality="high" src="http://player.youku.com/player.php/sid/8591925/v.swf"></embed></p>]]></description>
	<pubDate>Tue, 15 Jul 2008 12:46:54 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=79</guid>
</item>
<item>
	<title>ADSL使用路由器出现FTP上传缓慢的解决办法</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=78</link>
	<description><![CDATA[<p>最近突然发现自己电脑的FTP上传变得非常奇怪，使用FTP时4kb的文件都无法正常上传到服务器上，flashfxp总是显示从最高速度传输慢慢的将为0.0kb/s，然后很久才有反应开始缓慢的上传下一个文件。同时其他涉及到向网络发送数据的操作如上传文件，提交表单数据等都变得异常缓慢。</p>
<p><a target="_blank" href="http://be-evil.org/uploadfile/200807/9ddbc807d6013b2b205eb2b0055b8d6b20080710230450.jpg"><img alt="附件[ematt:115] " border="0" src="http://be-evil.org/uploadfile/200807/9ddbc807d6013b2b205eb2b0055b8d6b20080710230450.jpg" /></a></p>
<p>这是怎么回事，我开始逐一排查问题：</p>
<p></p>
<p>首先怀疑的ftp软件的问题，更换了多款ftp软件测试后，排除了软件问题。</p>
<p>其次怀疑本机、路由器的防火墙问题，关闭后，问题依旧。</p>
<p>最后怀疑到路由的<a target="_blank" href="http://baike.baidu.com/view/26974.htm">MTU</a>值的设定上了，因为出现问题的都是发送数据操作，而本机网络接受数据的速度一切正常。</p>
<p>登陆到我的TL-WR340+路由器，在网络参数-WAN口设置-高级设置 中 查到 路由器设定的MTU值为1480</p>
<p><a target="_blank" href="http://be-evil.org/uploadfile/200807/f392f796475c9d77c596b235ead8b3ff20080710230450.jpg"><img alt="附件[ematt:116] " border="0" src="http://be-evil.org/uploadfile/200807/thum-f392f796475c9d77c596b235ead8b3ff20080710230450.jpg" /></a></p>
<p>打开命令行 输入 ping -f -l 1480&nbsp;be-evil.org 测试是否能发送长度为1480的数据到服务器，结果显示Packet needs to be fragmented but DF set，意味发送1480的数据包需要拆开来发送。</p>
<p><a target="_blank" href="http://be-evil.org/uploadfile/200807/1516197382fbe406c4d2837fa9dd30da20080710230450.jpg"><img alt="附件[ematt:117] " border="0" src="http://be-evil.org/uploadfile/200807/thum-1516197382fbe406c4d2837fa9dd30da20080710230450.jpg" /></a></p>
<p>看来我这电信的MTU值要低于1480，逐降低MTU值继续使用ping 命令测试，一番测试后发现只要MTU小于等于1380就能ping通服务器了。再次登陆到路由器，修改MTU为1380后重新链接ADSL，问题解决！</p>
<p><a target="_blank" href="http://be-evil.org/uploadfile/200807/889aada2120813afec66b1c3ac28521820080710230450.jpg"><img alt="附件[ematt:118] " border="0" src="http://be-evil.org/uploadfile/200807/thum-889aada2120813afec66b1c3ac28521820080710230450.jpg" /></a></p>]]></description>
	<pubDate>Thu, 10 Jul 2008 23:04:50 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=78</guid>
</item>
<item>
	<title>基于Zend Framework的分页类</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=77</link>
	<description><![CDATA[<p>刚学Zend Framework 感叹其强大的同时却发现其在Web开发中常用到的如分页，上传，字符串处理等等却没有实现，今天小试牛刀，给Zend Framework扩展了一个分页类。</p>
<p>核心编写思路：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 本分页类未采用常见的将HTML代码生成封装在类中的做法，而是基于Zend框架的MVC的思想，只在类中封装了处理分页所必需的数据的逻辑，而具体的分页信息显示逻辑则交予视图完成，将业务逻辑与显示逻辑分离，这样在开发灵活性上可以提高很多。</p>
<p>本例基于Zend Framework&nbsp; 1.5.2 编写，未将类整合到Zend Framework中，将本文件放置于INCLUDE_PATH/Util/下即可。本类只能在控制器下的方法中使用，实例化时需要传入控制器的request对象。</p>
<p>类核心代码：Page.php</p>
<p>

</p>
<pre><ol class="dp-c"><li class="alt"><span><span>&lt;?php &nbsp;</span></span></li><li><span class="comment">/** </span>&nbsp;</li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;基于Zend&nbsp;Framework分页类 </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;&nbsp; </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;作者：朦朧中的罪惡 </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;博客:&nbsp;http://be-evil.org </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;* </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@package&nbsp;&nbsp;&nbsp;&nbsp;Util </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*/</span><span>&nbsp;</span></span></li><li><span class="keyword">class</span><span>&nbsp;Util_Page &nbsp;</span></li><li class="alt"><span>{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;数据总数 </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;int </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="vars">$_total</span><span>; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;当前页码 </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;int </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="vars">$_curpage</span><span>; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;每页记录数 </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;int </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="vars">$_perpage</span><span>; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;分页参数名称 </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="vars">$_pagename</span><span>; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Zend_Controller_Request_Http对象 </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;object </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="vars">$_request</span><span>; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;类构造函数 </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;初始化类内部属性 </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;int&nbsp;$total&nbsp;总数 </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;int&nbsp;$curpage&nbsp;当前页码 </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;int&nbsp;$perpage&nbsp;每页记录数 </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;__construct(Zend_Controller_Request_Http&nbsp;</span><span class="vars">$request</span><span>,</span><span class="vars">$total</span><span>,</span><span class="vars">$perpage</span><span>&nbsp;=&nbsp;10,</span><span class="vars">$pagename</span><span>&nbsp;=&nbsp;</span><span class="string">'page'</span><span>) &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_total&nbsp;&nbsp;&nbsp;=&nbsp;</span><span class="func">intval</span><span>(</span><span class="vars">$total</span><span>); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_perpage&nbsp;=&nbsp;10; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_pagename&nbsp;=&nbsp;</span><span class="vars">$pagename</span><span>; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_request&nbsp;&nbsp;=&nbsp;</span><span class="vars">$request</span><span>; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_curpage&nbsp;=&nbsp;</span><span class="func">intval</span><span>(</span><span class="vars">$this</span><span>-&gt;_request-&gt;getParam(</span><span class="vars">$pagename</span><span>)); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;根据已经赋值的类属性计算相关参数 </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;array </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;calculatePage() &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$pageArray</span><span>&nbsp;=&nbsp;</span><span class="keyword">array</span><span>(); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$pageArray</span><span>[</span><span class="string">'pagename'</span><span>]&nbsp;&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;_pagename; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$pageArray</span><span>[</span><span class="string">'total'</span><span>]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;_total; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//算出总页数 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$pageArray</span><span>[</span><span class="string">'totalpage'</span><span>]&nbsp;=&nbsp;(int)&nbsp;</span><span class="func">ceil</span><span>(</span><span class="vars">$this</span><span>-&gt;_total/</span><span class="vars">$this</span><span>-&gt;_perpage); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$pageArray</span><span>[</span><span class="string">'pagestart'</span><span>]&nbsp;=&nbsp;0; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//算出数据开始的行数 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$this</span><span>-&gt;_curpage&nbsp;&lt;&nbsp;1) &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_curpage&nbsp;=&nbsp;1; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_curpage&nbsp;&gt;&nbsp;</span><span class="vars">$pageArray</span><span>[</span><span class="string">'total'</span><span>]&nbsp;&amp;&amp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_curpage&nbsp;=&nbsp;</span><span class="vars">$pageArray</span><span>[</span><span class="string">'total'</span><span>]; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$pageArray</span><span>[</span><span class="string">'pagestart'</span><span>]&nbsp;=&nbsp;(</span><span class="vars">$this</span><span>-&gt;_curpage&nbsp;-&nbsp;1)&nbsp;*&nbsp;</span><span class="vars">$this</span><span>-&gt;_perpage;&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$pageArray</span><span>[</span><span class="string">'curpage'</span><span>]&nbsp;&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;_curpage; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$pageArray</span><span>[</span><span class="string">'perpage'</span><span>]&nbsp;&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;_perpage; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//通过传入的Zend_Controller_Request_Http类获得当前控制器的相关信息 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$moduleName</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;_request-&gt;getModuleName(); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$controllerName</span><span>&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;_request-&gt;getControllerName(); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$actionName</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;_request-&gt;getActionName(); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//获得参数 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$params</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;_request-&gt;getParams(); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//初始化基本的链接 </span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$pageArray</span><span>[</span><span class="string">'url'</span><span>]&nbsp;=&nbsp;&nbsp;</span><span class="string">'/'</span><span>.</span><span class="vars">$moduleName</span><span>&nbsp;.&nbsp;</span><span class="string">'/'</span><span>&nbsp;.&nbsp;</span><span class="vars">$controllerName</span><span>&nbsp;.&nbsp;</span><span class="string">'/'</span><span>&nbsp;.&nbsp;</span><span class="vars">$actionName</span><span>&nbsp;.&nbsp;</span><span class="string">'/'</span><span>; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$params</span><span>&nbsp;&amp;&amp;&nbsp;</span><span class="func">is_array</span><span>(</span><span class="vars">$params</span><span>)) &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//反转数组的键与值 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$params</span><span>&nbsp;=&nbsp;</span><span class="func">array_flip</span><span>(</span><span class="vars">$params</span><span>); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//过滤参数中的页码参数和值 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$params</span><span>&nbsp;=&nbsp;</span><span class="func">array_filter</span><span>(</span><span class="vars">$params</span><span>,</span><span class="keyword">array</span><span>(</span><span class="vars">$this</span><span>,</span><span class="string">'_filterPage'</span><span>)); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//再次反转数组的键与值 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$params</span><span>&nbsp;=&nbsp;</span><span class="func">array_flip</span><span>(</span><span class="vars">$params</span><span>); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//循环生成参数链接 </span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">foreach</span><span>(</span><span class="vars">$params</span><span>&nbsp;</span><span class="keyword">as</span><span>&nbsp;</span><span class="vars">$key</span><span>&nbsp;=&gt;&nbsp;</span><span class="vars">$value</span><span>) &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$pageArray</span><span>[</span><span class="string">'url'</span><span>]&nbsp;.=&nbsp;</span><span class="vars">$key</span><span>&nbsp;.&nbsp;</span><span class="string">'/'</span><span>&nbsp;.&nbsp;</span><span class="vars">$value</span><span>&nbsp;.&nbsp;</span><span class="string">'/'</span><span>; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="vars">$pageArray</span><span>; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;清空类属性的赋值 </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;array </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;cleanUp() &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_curpage&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;_perpage&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;_curpage&nbsp;=&nbsp;0; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_request&nbsp;=&nbsp;null; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;设定内部属性$total的值 </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;setTotal(</span><span class="vars">$total</span><span>) &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_total&nbsp;=&nbsp;</span><span class="func">intval</span><span>(</span><span class="vars">$total</span><span>); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;设定内部属性$curpage的值 </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;setCurpage(</span><span class="vars">$curpage</span><span>) &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_curpage&nbsp;=&nbsp;</span><span class="func">intval</span><span>(</span><span class="vars">$curpage</span><span>); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;设定内部属性$perpage的值 </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;setPerpage(</span><span class="vars">$perpage</span><span>) &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_perpage&nbsp;=&nbsp;</span><span class="func">intval</span><span>(</span><span class="vars">$perpage</span><span>); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;设定内部属性$perpage的值 </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;setPagename(</span><span class="vars">$pagename</span><span>) &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_pagename&nbsp;=&nbsp;</span><span class="vars">$pagename</span><span>; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;设定内部对象$request </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;setRequest(Zend_Controller_Request_Http&nbsp;</span><span class="vars">$request</span><span>) &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_request&nbsp;=&nbsp;</span><span class="vars">$request</span><span>; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;过滤Zend_Controller_Request_Http对象参数中的模块、控制器、动作及分页标识参数 </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;bool </span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;_filterPage(</span><span class="vars">$paramname</span><span>) &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$filter</span><span>&nbsp;=&nbsp;</span><span class="keyword">array</span><span>(</span><span class="string">'module'</span><span>,</span><span class="string">'action'</span><span>,</span><span class="string">'controller'</span><span>,</span><span class="vars">$this</span><span>-&gt;_pagename); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;(in_array(</span><span class="vars">$paramname</span><span>,</span><span class="vars">$filter</span><span>)&nbsp;?&nbsp;false&nbsp;:&nbsp;true); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>}&nbsp;</span></li></ol></pre>
<p>&nbsp;在控制器中的类的使用:</p>
<p>&nbsp;注意数据游标的偏移量已经在类中算好，调用数量则是分页类的每页条数属性</p>
<pre><ol class="dp-c"><li class="alt"><span><span>&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;indexAction() &nbsp;</span></span></li><li><span>&nbsp;&nbsp;{ &nbsp;</span></li><li class="alt"><span class="comment">     //获得日志总数 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$blogcount</span><span>&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;_blog-&gt;getBlogCount(); &nbsp;</span></li><li class="alt"><span class="comment">    //实例化分类页对象 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$page</span><span>&nbsp;&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Util_Page(</span><span class="vars">$this</span><span>-&gt;_request,</span><span class="vars">$blogcount</span><span>); &nbsp;</span></li><li class="alt"><span class="comment">    //计算相关数据 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$pages</span><span>&nbsp;=&nbsp;</span><span class="vars">$page</span><span>-&gt;calculatePage(); &nbsp;</span></li><li class="alt"><span class="comment">    //根据分页算出的数据偏移量调用数据 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$blogs</span><span>&nbsp;=&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;_blog-&gt;getBlogList(</span><span class="vars">$pages</span><span>[</span><span class="string">'perpage'</span><span>],</span><span class="vars">$pages</span><span>[</span><span class="string">'pagestart'</span><span>]); &nbsp;</span></li><li class="alt"><span class="comment">    //视图变量赋值 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;view-&gt;assign(</span><span class="keyword">array</span><span>(</span><span class="string">'blogs'</span><span>=&gt;</span><span class="vars">$blogs</span><span>,</span><span class="string">'pages'</span><span>=&gt;</span><span class="vars">$pages</span><span>)); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;</span></li></ol></pre>
<pre>
&nbsp;</pre>
<p><font face="Courier New">在视图中的分页信息显示处理:</font></p>
<p>&nbsp;</p>
<pre><ol class="dp-c"><li class="alt"><span><span>&lt;?php&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$this</span><span>-&gt;pages[</span><span class="string">'totalpage'</span><span>]&nbsp;&gt;&nbsp;1):&nbsp;?&gt; &nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Table&nbsp;width=</span><span class="string">&quot;98%&quot;</span><span>&nbsp;align=</span><span class="string">&quot;center&quot;</span><span>&gt; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总&lt;?php&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars">$this</span><span>-&gt;pages[</span><span class="string">'totalpage'</span><span>]&nbsp;&nbsp;?&gt;页/&lt;?php&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars">$this</span><span>-&gt;pages[</span><span class="string">'total'</span><span>]&nbsp;&nbsp;?&gt;条记录&nbsp;当前第&lt;?php&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars">$this</span><span>-&gt;pages[</span><span class="string">'curpage'</span><span>]&nbsp;&nbsp;?&gt;页 &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href=</span><span class="string">&quot;&lt;?php&nbsp;echo&nbsp;$this-&gt;pages['url']&nbsp;&nbsp;?&gt;page/1/&quot;</span><span>&gt;首页&lt;/a&gt; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$this</span><span>-&gt;pages[</span><span class="string">'curpage'</span><span>]&nbsp;&gt;&nbsp;1):&nbsp;?&gt; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href=</span><span class="string">&quot;&lt;?php&nbsp;echo&nbsp;$this-&gt;pages['url']&nbsp;&nbsp;?&gt;page/&lt;?php&nbsp;echo&nbsp;$this-&gt;pages['curpage']-1&nbsp;&nbsp;?&gt;/&quot;</span><span>&gt;上一页&lt;/a&gt; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php&nbsp;</span><span class="keyword">endif</span><span>;&nbsp;?&gt; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$this</span><span>-&gt;pages[</span><span class="string">'curpage'</span><span>]&nbsp;&lt;=&nbsp;</span><span class="vars">$this</span><span>-&gt;pages[</span><span class="string">'totalpage'</span><span>]):&nbsp;?&gt; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href=</span><span class="string">&quot;&lt;?php&nbsp;echo&nbsp;$this-&gt;pages['url']&nbsp;&nbsp;?&gt;page/&lt;?php&nbsp;echo&nbsp;$this-&gt;pages['curpage']+1&nbsp;&nbsp;?&gt;/&quot;</span><span>&gt;下一页&lt;/a&gt; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php&nbsp;</span><span class="keyword">endif</span><span>;&nbsp;?&gt; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href=</span><span class="string">&quot;&lt;?php&nbsp;echo&nbsp;$this-&gt;pages['url']&nbsp;&nbsp;?&gt;page/&lt;?php&nbsp;echo&nbsp;$this-&gt;pages['totalpage']&nbsp;?&gt;/&quot;</span><span>&gt;末页&lt;/a&gt; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Table&gt; &nbsp;</span></li><li><span>&lt;?php&nbsp;</span><span class="keyword">endif</span><span>;&nbsp;?&gt;&nbsp;</span></li></ol></pre>
<p><font face="Courier New">小结&amp;心得</font></p>
<p><font face="Courier New">第一次用面向对象的思想写扩展，同时对Zend的机制了解还不是很透彻，可能类中的某些方法可以有更好的处理方式。在以后的学习中慢慢改进吧，最后依然对Zend没有封装网站常用业务逻辑感到费解....</font></p>]]></description>
	<pubDate>Thu, 10 Jul 2008 21:41:07 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=77</guid>
</item>
<item>
	<title>超酷Firefox扩展better Gmail 2</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=76</link>
	<description><![CDATA[<p>作为一个忠实的Gmail用户，觉得Gmail很好很强大，但是总是觉得Gmail的用户界面相对于其他的邮件服务界面过于简朴。</p>
<p>今天在网上闲逛时无意发现了一款firefox扩展 better Gmail 2，它基于 Greasemonkey 实现对Gmail界面美化和功能加强。</p>
<p>下图是它改造过的Gmail界面，怎么样？相当不错吧。</p>
<p>Loading界面：</p>
<p><a href="http://be-evil.org/uploadfile/200807/c51d000baa082837c9061b55a5bcecfe20080709200013.jpg" target="_blank"><img border="0" alt="附件[ematt:112] Gmail Loading" src="http://be-evil.org/uploadfile/200807/thum-c51d000baa082837c9061b55a5bcecfe20080709200013.jpg" /></a></p>
<p>&nbsp;主界面：</p>
<p>&nbsp;<a target="_blank" href="http://be-evil.org/uploadfile/200807/aedb6e6943ddfbecf44e97b603f893ec20080709200146.jpg"><img border="0" src="http://be-evil.org/uploadfile/200807/thum-aedb6e6943ddfbecf44e97b603f893ec20080709200146.jpg" alt="附件[ematt:113] main" /></a></p>
<p>除了美化Gmail界面，Better Gmail 2 还提供了一些加强功能，如强制https访问Gmail，将mailto:url直接连接到Gmail等等人性化功能。</p>
<p>Better Gmail 2 的安装地址在<a target="_blank" href="https://addons.mozilla.org/zh-CN/firefox/addon/6076">这里</a>，要使用它还需要安装<a target="_blank" href="https://addons.mozilla.org/zh-CN/firefox/addon/748">Greasemonkey</a>， 它已经可以跑在最新的Firefox 3下，界面是全英文，不过选项都很简单易懂，如果觉得不错，可以去装一个美化下Gmail，嘿嘿</p>]]></description>
	<pubDate>Wed, 09 Jul 2008 20:00:13 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=76</guid>
</item>
<item>
	<title>emlog2.7开发日志</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=75</link>
	<description><![CDATA[<p>今天将思想之地更新到emlog2.7预览版bulid 539版本,从端午节到现在，emlog又增加了不少新功能：</p>
<p>1.<strong>更换了新的FCK编辑器</strong></p>
<p>原来使用的fck编辑器属于较旧的精简版本，功能被砍去不少不说在浏览器兼容上的问题也不少，于是我们决定在2.7版中将FCK编辑器更新到最新版本。更换新版的FCK之后emlog的文件体积增加了不少，编辑器的加载速度也稍微慢了一些，但是我觉得用这些代价换来更好的用户体验和更多实用的功能是值得的。<img alt="" src="/adm/fckeditor/editor/images/smiley/msn/teeth_smile.gif" /></p>
<p>2.<strong>更换了新的缓存逻辑</strong></p>
<p>这个版本中我们采用了将PHP数据序列化存储为文件的方式，相比原来生成PHP文件缓存的方式这样的速度会更快一些（当然了，很难感觉出来的，原来缓存速度也不错，要看数据），理论上来讲emlog的负载能力得到了相应提高。</p>
<p>3.<strong>重构了URL重写的逻辑</strong></p>
<p>以前的url重写是将重写前和重写后的url直接写在模板当中，虽然这样达到了重写的目的，但是这么做我们无论是维护还是扩展都非常不方便，由于这个问题，我将重写逻辑重写，将改写url的任务交给了PHP程序处理而不是模板上的判断，不仅我们修改维护方便用户也可以很方便的按照自己的需要自行修改url重写方案了。</p>
<p>主要的优化就是以上几条，其他的小细节调整其实也是不计其数，如模板细节优化，文件结构优化，javascript优化等等，我们努力的将emlog变的更好更实用，在此也要感谢和我一起完成这些工作的<a target="_blank" href="http://www.emlog.net/blog">那多记忆</a>和<a href="http://www.emlog.net/qiyu/">奇遇</a>，虽然我们都不在一个地方，却能默契的完成了emlog的每次修改和优化，有着这些好兄弟，开发emlog对我来讲是一个很快乐的事情...</p>
<p>我相信，emlog会变得更好~！</p>]]></description>
	<pubDate>Tue, 08 Jul 2008 13:34:25 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=75</guid>
</item>
<item>
	<title>让人瀑布汗的餐厅翻译</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=74</link>
	<description><![CDATA[<p><a target="_blank" href="http://be-evil.org/uploadfile/200807/d7cb973efb292cd07434b36cda0336b920080704232417.jpg"><img alt="附件[ematt:111] " border="0" src="http://be-evil.org/uploadfile/200807/thum-d7cb973efb292cd07434b36cda0336b920080704232417.jpg" /></a></p>
<p>从上图偶得到以下结论</p>
<p>1.囧....</p>
<p>2.广告主不懂E文</p>
<p>3.广告制作者不懂E文</p>
<p>4.广告制作者在制作广告时用的网络翻译功能</p>
<p>5.那个翻译的服务器在翻译时出问题了</p>
<p><a target="_blank" href="http://anchorstudio.blogspot.com/2007/11/translate-server-error.html">来源</a></p>]]></description>
	<pubDate>Fri, 04 Jul 2008 23:24:17 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=74</guid>
</item>
<item>
	<title>给Dreamweaver增加自定义文件扩展名</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=73</link>
	<description><![CDATA[<p>最近在研究zend框架，框架的页面文件采用的phtml后缀Dreamweaver无法将其识别为PHP文件，编辑页面设计时没有语法高亮甚是麻烦！然而我在&ldquo;首选参数&rdquo;选项中却无法找到相关扩展名关联的设置，看来文件关联写在某个配置文件上了。在Dreamweaver文件夹中一阵查询后确定了Configuration\DocumentTypes\MMDocumentTypes.xml是扩展名的配置文件，用任意编辑器打开后找到xml节点&lt;documenttype id=&quot;PHP_MySQL&quot; 在其winfileextension属性中增加.phtml重启Dreamweaver即可。</p>]]></description>
	<pubDate>Thu, 03 Jul 2008 21:33:24 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=73</guid>
</item>
<item>
	<title>今日惨遭阿里妈妈广告位刷屏</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=72</link>
	<description><![CDATA[从昨天晚上到现在，阿里妈妈不断的给我邮箱发送我的博客广告位被买的邮件，跑过去一看买家卖完之后就立马取消了购买。如果是一两个人还可以理解，但是很多人一都起这么做说明有什么问题了，不外乎是阿里妈妈系统出了BUG可以刷分或者是举办什么活动靠购买广告位获得相关的利益。在论坛咨询阿里妈妈客服后果然不出我所料：<br /><br />
<div class="tpc_content" id="read_957122">朦胧中的罪恶  ，您好！<br />在我们的逢8必发的活动进行中我们发现有个别人为了获得位尾数为8的交易号码，大量购买广告位，并取消了其中不为8的交易，从而使很多网站主收到了大量的取消交易的邮件，影响了正常的交易。所以我们现在已经停止该活动了。<br /><br />呵呵，我就知道！一天的邮件轰炸总算停息了，哎...其实我还是很希望那几十个购买需求都是真的....囧~<br />附刷屏截图一张：<br /><a href="http://be-evil.org/uploadfile/200806/1cc3d7eccb74de697967c191ae15d02620080625212657.jpg" target="_blank"><img border="0" alt="附件[ematt:110] " src="http://be-evil.org/uploadfile/200806/thum-1cc3d7eccb74de697967c191ae15d02620080625212657.jpg" /></a></div>]]></description>
	<pubDate>Wed, 25 Jun 2008 21:26:57 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=72</guid>
</item>
<item>
	<title>80后的记忆</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=71</link>
	<description><![CDATA[今天在土豆上看到的，全手绘，很好很强大....搞笑的是，里面人物的表情很囧....<br /><embed height="342" width="400" src="http://www.tudou.com/v/htrtvpKzBiw"></embed>]]></description>
	<pubDate>Sun, 22 Jun 2008 10:22:12 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=71</guid>
</item>
<item>
	<title>Eclipse+php插件+Xdebug搭建PHP完美开发/调试环境指南</title>
	<link>http://be-evil.org/?action=showlog&amp;gid=70</link>
	<description><![CDATA[<p>最近要开始使用<a target="_blank" href="http://framework.zend.com/">Zend框架</a>开发中型应用系统了，由于采用完全面向对象的框架思路开发程序，不光开发思想，先前的Editplus+Dreamweaver编辑器组合显然不能满足我的要求了。我的新环境初步定为<a target="_blank" href="http://www.eclipse.org/">Eclipse</a>+<a target="_blank" href="http://www.eclipse.org/pdt/">PDT插件</a>+<a target="_blank" href="http://www.xdebug.org/">Xdebug</a>+<a target="_blank" href="http://apache.org">Apache</a>。</p>
<p>先前一直对dotNET、Java的IDE的代码自动嗅探、代码提示、程序断点调试等等自动化功能羡慕不已，而自己写PHP只能靠着echo、var_dump()来调试程序，能不能让PHP也实现断点调试呢？先前在<a target="_blank" href="http://www.eclipse.org/">Eclipse</a>的PHP插件中发现了Debug的选项，说明调试功能应该是可行的，但是不知道是怎么个配置法，跑上google查找资料发现没有一个完整的介绍配置文档，我只能将获得的信息拼接起来后来测试。</p>
<p>结果是：<strong>完美实现PHP断点调试！</strong></p>
<p></p>
<p>=====================================================</p>
<p>本文系原创文章，转载请注明文章源自<a href="http://be-evil.org">思想之地</a>，作者：朦胧中的罪恶</p>
<p>=====================================================</p>
<p>下面就是详细过程。</p>
<p>步骤一：</p>
<p><strong>1.首先下载并安装相应软件</strong></p>
<p>Jdk是绝对必要的，它是跑<a target="_blank" href="http://www.eclipse.org/">Eclipse</a>的最基本要求，到<a target="_blank" href="http://java.sun.com/javase/downloads/index.jsp">这里</a>下载。</p>
<p>Eclipse整合了PHP开发插件版本在<a href="http://download.eclipse.org/tools/pdt/downloads/release.php?release=R20080603">这里</a>下载，选择对应自己的操作系统的版本后下载到本地即可。</p>
<p>XDebug到<a target="_blank" href="http://www.xdebug.org/">这里</a>下载，请根据自己PHP的版本选择相应文件下载。</p>
<p>服务器任意，推荐使用Apache+PHP模块安装方式。</p>
<p><strong>2.软件安装</strong></p>
<p>首先安装JDK后，安装好后请按照下面步骤配置系统变量</p>
<p>其次是安装Eclipse，Eclipse不用怎么设置，只要设置好了JDK，Eclipse放置于任何位置都可以直接运行</p>
<p>最后Xdebug安装</p>
<p>我自己使用的是PHP5.2.5，下载的xdebug文件名为：php_xdebug-2.0.3-5.2.5.dll，将文件放到php/ext文件夹下即可</p>
<p>3.配置</p>
<p>xdebug配置</p>
<p>打开php.ini</p>
<p>在最后一行加入以下配置代码，配置说明已经做好注释</p>
<p>;载入Xdebug<br />
zend_extension_ts=&quot;c:/php/ext/php_xdebug.dll&quot;</p>
<p>;xdebug配置<br />
[Xdebug]<br />
;开启自动跟踪<br />
xdebug.auto_trace = On<br />
;开启异常跟踪<br />
xdebug.show_exception_trace = On<br />
;开启远程调试自动启动<br />
xdebug.remote_autostart = On<br />
;开启远程调试<br />
xdebug.remote_enable = On<br />
;收集变量<br />
xdebug.collect_vars = On<br />
;收集返回值<br />
xdebug.collect_return = On<br />
;收集参数<br />
xdebug.collect_params = On</p>
<p><u>注意zend_extension_ts后面的路径要填写绝对路径，保存后重启服务器即可。</u></p>
<p>此时用phpinfo()查看php配置，如果安装成功，应该可以看到以下信息：&nbsp;<a target="_blank" href="http://be-evil.org/uploadfile/200806/c51d000baa082837c9061b55a5bcecfe20080618135752.jpg"><img alt="附件[ematt:101] " border="0" src="http://be-evil.org/uploadfile/200806/thum-c51d000baa082837c9061b55a5bcecfe20080618135752.jpg" /></a></p>
<p><strong>下面是eclipse的配置</strong>&nbsp;</p>
<p>详细配置请看下图说明（所有图片均可点击放大查看）</p>
<p><strong>eclipse全局总体配置</strong>：（点击放大查看）</p>
<p>&nbsp;<a target="_blank" href="http://be-evil.org/uploadfile/200806/eb65cfa61ef258ff4742b808b3f95f1d20080618214233.jpg"><img alt="附件[ematt:105] " border="0" src="http://be-evil.org/uploadfile/200806/thum-eb65cfa61ef258ff4742b808b3f95f1d20080618214233.jpg" /></a></p>
<p><strong>测试服务器配置：</strong>在上面窗口中点击 PHP Server....&nbsp;&nbsp; 后&nbsp;<strong>（点击放大查看）</strong></p>
<p>&nbsp;</p>
<p><strong>&nbsp;</strong><a target="_blank" href="http://be-evil.org/uploadfile/200806/aedb6e6943ddfbecf44e97b603f893ec20080618213510.jpg"><strong><img alt="附件[ematt:104] " border="0" src="http://be-evil.org/uploadfile/200806/thum-aedb6e6943ddfbecf44e97b603f893ec20080618213510.jpg" /></strong></a></p>
<p>PHP<strong>项目总体配置：</strong>打开或新建一个php项目后，在项目上单击右键，选择 Properties（点击放大查看）</p>
<p><a target="_blank" href="http://be-evil.org/uploadfile/200806/c51d000baa082837c9061b55a5bcecfe20080618212619.jpg"><img alt="附件[ematt:103] " border="0" src="http://be-evil.org/uploadfile/200806/thum-c51d000baa082837c9061b55a5bcecfe20080618212619.jpg" /></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>按照自己的实际要求配置好之后，整体的调试环境就完全配置好了，开始enjoy吧！</p>
<p><strong>下面介绍如何开始调试</strong></p>
<p>1.首先打开你要调试的页面，我这里以emlog首页index.php为例</p>
<p>&nbsp;&nbsp;在eclipse的菜单中照图中的顺序选择：</p>
<p>&nbsp; <a target="_blank" href="http://be-evil.org/uploadfile/200806/2d680a19c6400e41dff05267e6f5ea5b20080618215116.jpg"><img alt="附件[ematt:106] " border="0" src="http://be-evil.org/uploadfile/200806/thum-2d680a19c6400e41dff05267e6f5ea5b20080618215116.jpg" /></a></p>
<p>这时eclipse就会启动debug界面，效果截图：（点击放大）</p>
<p>&nbsp;<a target="_blank" href="http://be-evil.org/uploadfile/200806/abe69f1c139045c2496f600e4da25a4520080618221921.jpg"><img alt="附件[ematt:107] " border="0" src="http://be-evil.org/uploadfile/200806/thum-abe69f1c139045c2496f600e4da25a4520080618221921.jpg" /></a></p>
<p>&nbsp;如果你的服务器配置正确，那么就会蹦出浏览器并看到程序页面了。</p>
<p>&nbsp;现在进入重点，很酷的PHP<strong>断点调试功能</strong></p>
<p>&nbsp;在你要设定断点的行上点击右键，选择 Toggle Breakpoints</p>
<p>&nbsp;<a target="_blank" href="http://be-evil.org/uploadfile/200806/ec8e43cc9455ffb801b71012ee2024c420080618224453.jpg"><img alt="附件[ematt:109] " border="0" src="http://be-evil.org/uploadfile/200806/thum-ec8e43cc9455ffb801b71012ee2024c420080618224453.jpg" /></a></p>
<p>设定好之后，请再启动debug</p>
<p>下面是个例子（点击放大）</p>
<p>&nbsp;<a target="_blank" href="http://be-evil.org/uploadfile/200806/710e0c0738b86ee528c72464796a83c220080618224338.jpg"><img alt="附件[ematt:108] " border="0" src="http://be-evil.org/uploadfile/200806/thum-710e0c0738b86ee528c72464796a83c220080618224338.jpg" /></a></p>
<p>有人肯定会问，这是首页，如果我要调试的页面带有参数或者不能直接访问怎么办？</p>
<p>答案很简单，你只要在需要的调试的页面上设定断点，debug时启动任何一个可以直接访问的页面，然后从页面上点击到你要访问的页面，或者访问调用你要调试的文件的页面即可，运行到断点的时候eclipse会自动跳出来，这时你就可以开始调试了。&nbsp;</p>]]></description>
	<pubDate>Wed, 18 Jun 2008 13:06:01 +0800</pubDate>
	<author>朦朧中的罪惡</author>
	<guid>http://be-evil.org/?action=showlog&amp;gid=70</guid>
</item></channel>
</rss>