<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[忆风居]]></title> 
<link>http://yfyfj.cn/index.php</link> 
<description><![CDATA[忆风的地盘，一些日常的记忆，技术文摘，以及收集的一些文章。]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[忆风居]]></copyright>
<item>
<link>http://yfyfj.cn/post/php_check_code.php</link>
<title><![CDATA[PHP代码审计工具 ]]></title> 
<author>yfyfj &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Web 开发]]></category>
<pubDate>Tue, 27 Jul 2010 03:39:08 +0000</pubDate> 
<guid>http://yfyfj.cn/post/php_check_code.php</guid> 
<description>
<![CDATA[ 
	<strong>PHP代码审计工具</strong><br /> <br /> <a href="http://pdepend.org/" target="_blank">PHP_Depend</a><br /> <a href="http://developer.spikesource.com/wiki/index.php/Projects:phpcheckstyle" target="_blank">PHPCheckStyle</a><br /> <a href="http://strategoxt.org/PHP/PhpSat" target="_blank">PHPSat</a><br /> <a href="http://phpmd.org/" target="_blank">PHPMD</a><br /> <a href="http://pear.php.net/package/PHP_CodeSniffer" target="_blank">PHP_CodeSniffer</a><br /> <br /> 可以检查很多方面，比如说大括号风格，缩进风格，甚至还可以检查方法参数数量等等。实际使用时，可以搭配SVN钩子脚本，这样不符合要求的代码不允许提交，从而改善项目质量。<br /> <br /> 补充：我大概试用了一遍，如果是处于检测编码标准的目的的话，那么只有PHPCheckStyle，PHP_CodeSniffer比较合适，剩下的几个 基本是用于检测代码安全性，复杂度的，至于PHPCheckStyle，PHP_CodeSniffer的选择，PHPCheckStyle项目较新，配 置方便，但是不太稳定，比如说你的代码里有闭包的话，那么在检测大括号相应配置的时候很可能会误报，类似的问题还好几个，至于 PHP_CodeSniffer，项目时间较长，相对稳定，但是配置不够灵活。<br /> <br /> <strong>Shell中的数组</strong><br /> <br /> 声明数组的语法很简单，就是用小括号括起来：<br /> <br /> $ foo=(a b)<br /> <br /> 访问数组元素的方法很也简单，唯一需要注意的就是大括号的使用：<br /> <br /> $ echo $&#123;foo[0]&#125;<br /> a<br /> $ echo $&#123;foo[1]&#125;<br /> b<br /> <br /> 如果想获得数组的长度，有如下两种方法：<br /> <br /> $ echo $&#123;#foo[*]&#125;<br /> 2<br /> $ echo $&#123;#foo[@]&#125;<br /> 2<br /> <br /> <strong>Javascript CDN</strong><br /> <br /> Jquery是很多网站居家必备的Javascript类库，如果大家都使用<a href="http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery" target="_blank">CDN</a>的话，无疑是非常低碳的！<br /> <br /> <a href="http://code.jquery.com/jquery-1.4.2.min.js" target="_blank">jQuery CDN</a><br /> <a href="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" target="_blank">Google Ajax API CDN</a><br /> <a href="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js" target="_blank">Microsoft CDN</a><br /> <br /> 用jQuery UI的话，则只有<a href="http://code.google.com/apis/ajaxlibs/" target="_blank">Google Ajax API CDN</a>可用，还提供了<a href="http://blog.jqueryui.com/2010/06/jquery-ui-182/" target="_blank">theme</a>的CDN，但是Google的服务有被墙的危险，所以<a href="http://www.asp.net/ajax/cdn/" target="_blank">Microsoft CDN</a>也是必要的。
]]>
</description>
</item><item>
<link>http://yfyfj.cn/post/php_chinese_code_bug.php</link>
<title><![CDATA[PHP 生成中文验证码乱码问题解决]]></title> 
<author>忆风 &lt;web@web.com&gt;</author>
<category><![CDATA[Web 开发]]></category>
<pubDate>Mon, 05 Jul 2010 09:29:21 +0000</pubDate> 
<guid>http://yfyfj.cn/post/php_chinese_code_bug.php</guid> 
<description>
<![CDATA[ 
	<p><br /> //将要处理的汉字,先由UTF8的汉字转成html实体形式再使用.</p> <p>//示例代码:</p> <p><br /> $pic=imagecreate(250,30);<br /> $black=imagecolorallocate($pic,0,0,0);<br /> $white=imagecolorallocate($pic,255,255,255);<br /> $font=&quot;C://WINDOWS//Fonts//simhei.ttf&quot;;$str = '中华人民共和国';<br /> $str = mb_convert_encoding($str, &quot;html-entities&quot;,&quot;utf-8&quot;&nbsp;&nbsp;);//结 果:&amp;#21738;&amp;#19968;&amp;#38431;&amp;#20248;&amp;#20808;&amp;#24320;&amp;#29699;</p> <p>imagettftext($pic,10,0,10,20,$white,$font,$str);</p> <p>header(&quot;Content-type: image/jpeg&quot;);<br /> $filename='./photo.jpg';<br /> $im=imagecreatefromjpeg($filename);<br /> imagecopymerge($im,$pic,0,0,0,0,250,30,50);<br /> imagejpeg($im);</p> <p>//pChart 示例代码:</p> <p>/*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Example14: A smooth flat pie graph<br /> */</p> <p>// Standard inclusions&nbsp;&nbsp; <br /> header(&quot;content-type:text/html; charset=utf-8&quot;);<br /> include_once(&quot;pChart/pData.class.<span class="infotextkey">php</span>&quot;);<br /> include_once(&quot;pChart/pChart.class.php&quot;);<br /> // Dataset definition <br /> $DataSet = new pData;<br /> $DataSet-&gt;AddPoint(array(10,2,3,5,3),&quot;Serie1&quot;);<br /> $DataSet-&gt;AddPoint(iconv_arr(array(&quot;Jan&quot;,&quot;二月&quot;,&quot;三 月&quot;,&quot;Apr&quot;,&quot;May&quot;)),&quot;Serie2&quot;);<br /> $DataSet-&gt;AddAllSeries();<br /> $DataSet-&gt;SetAbsciseLabelSerie(&quot;Serie2&quot;);</p> <p>// Initialise the graph<br /> $Test = new pChart(300,200);<br /> $Test-&gt;loadColorPalette(&quot;Sample/softtones.txt&quot;);<br /> $Test-&gt;drawFilledRoundedRectangle(7,7,293,193,5,240,240,240);<br /> $Test-&gt;drawRoundedRectangle(5,5,295,195,5,230,230,230);</p> <p>// Draw the pie chart<br /> $Test-&gt;setFontProperties(&quot;Fonts/simkai.ttf&quot;,8);<br /> $Test-&gt;drawBasicPieGraph($DataSet-&gt;GetData(),$DataSet-&gt;GetDataDescription(),120,100,70,PIE_PERCENTAGE,255,255,218);<br /> $Test-&gt;drawPieLegend(230,15,$DataSet-&gt;GetData(),$DataSet-&gt;GetDataDescription(),250,250,250);</p> <p>$Test-&gt;Render(&quot;example14.png&quot;);</p> /**<br /> * 将文本由UTF8编码转化为数字形式编码(HTML实体)<br /> * @param $arr 该参数可以为数组或者string<br /> * @author Steven lxq70361@qq.com<br /> */ <br /> function iconv_arr($arr)&#123; <br /> if(is_array($arr))&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach($arr as $k=&gt;$v)&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp; $arr[$k] = iconv_arr($v);<br />&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /> &#125;else&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;$arr = mb_convert_encoding($arr, &quot;html-entities&quot;,&quot;utf-8&quot; );<br /> &#125;<br /> return $arr;<br /> &#125;<br/>Tags - <a href="http://yfyfj.cn/go.php/tags/php/" rel="tag">php</a> , <a href="http://yfyfj.cn/go.php/tags/%25E9%25AA%258C%25E8%25AF%2581%25E7%25A0%2581gd/" rel="tag">验证码gd</a>
]]>
</description>
</item><item>
<link>http://yfyfj.cn/post/php_soap_wsdl_cache.php</link>
<title><![CDATA[php查询SOAP超时]]></title> 
<author>忆风 &lt;web@web.com&gt;</author>
<category><![CDATA[Web 开发]]></category>
<pubDate>Sat, 05 Jun 2010 05:10:22 +0000</pubDate> 
<guid>http://yfyfj.cn/post/php_soap_wsdl_cache.php</guid> 
<description>
<![CDATA[ 
	&nbsp; 表现形式：&nbsp;&nbsp; SOAP 查询非常慢，经常PHP脚本超时。<br /><br /><br />解决方法：<br /><br />在PHP.INI里的 SOAP<br /><br />[soap]<br />; Enables or disables WSDL caching feature.<br />; <a href="http://php.net/soap.wsdl-cache-enabled" target="_blank">http://php.net/soap.wsdl-cache-enabled</a><br />soap.wsdl_cache_enabled=1<br /><br />; Sets the directory name where SOAP extension will put cache files.<br />; <a href="http://php.net/soap.wsdl-cache-dir" target="_blank">http://php.net/soap.wsdl-cache-dir</a><br />soap.wsdl_cache_dir=&quot;d:&#92;xampp&#92;tmp&quot;<br /><br />; (time to live) Sets the number of second while cached file will be used<br />; instead of original one.<br />; <a href="http://php.net/soap.wsdl-cache-ttl" target="_blank">http://php.net/soap.wsdl-cache-ttl</a><br />soap.wsdl_cache_ttl=86400<br /><br />; Sets the size of the cache limit. (Max. number of WSDL files to cache)<br />soap.wsdl_cache_limit = 5<br /><br />这里面配置Soap WSDL 缓存，这样就不会每次查询都要重新获取WSDL<br /><br /><br/>Tags - <a href="http://yfyfj.cn/go.php/tags/php/" rel="tag">php</a> , <a href="http://yfyfj.cn/go.php/tags/soap/" rel="tag">soap</a> , <a href="http://yfyfj.cn/go.php/tags/wsdl/" rel="tag">wsdl</a> , <a href="http://yfyfj.cn/go.php/tags/cache/" rel="tag">cache</a>
]]>
</description>
</item><item>
<link>http://yfyfj.cn/post/php_gbk_addslashes_hole.php</link>
<title><![CDATA[PHP addslashes在GBK编码处理的注入漏洞]]></title> 
<author>忆风 &lt;web@web.com&gt;</author>
<category><![CDATA[Web 开发]]></category>
<pubDate>Mon, 24 May 2010 07:23:07 +0000</pubDate> 
<guid>http://yfyfj.cn/post/php_gbk_addslashes_hole.php</guid> 
<description>
<![CDATA[ 
	<div>摘要：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在GBK字符集中，0xbf27不作为多字节字符，而0xbf5c是多字节字符。当0xbf和0x27组合后就变成0xbf27，0xbf 和0x5c&nbsp;&nbsp;组合后就变成了0xbf5c 。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当注入字符比如0xbf27时，因为0x27为'，所以<span style="font-family: Courier New">addslashes()在27前加上5c（即&#92;）,把</span><span style="font-family: Arial">0xbf27修改为 0xbf5c27。而0xbf5c27的0xbf5c被认为时一个多字节字符，所以后面的27（'）就被注入了sql语句中了。<br /><br />代码如 下：</span></div> <div><br /> <pre class="code">[client]<br />default-character-set=GBK</pre> <p>Create a table called users:</p> <pre class="code">CREATE TABLE users<br />(<br />username VARCHAR(32) CHARACTER SET GBK,<br />password VARCHAR(32) CHARACTER SET GBK,<br />PRIMARY KEY (username)<br />);<br /></pre> </div> <pre class="code"><span style="color: #0000bb">&lt;?php <br /> <br />$mysql </span><span style="color: #007700">= array(); <br /> <br /></span><span style="color: #0000bb">$db </span><span style="color: #007700">= </span><span style="color: #0000bb">mysqli_init</span><span style="color: #007700">(); <br /></span><span style="color: #0000bb">$db</span><span style="color: #007700">-&gt;</span><span style="color: #0000bb">real_connect</span><span style="color: #007700">(</span><span style="color: #dd0000">'localhost'</span><span style="color: #007700">, </span><span style="color: #dd0000">'myuser'</span><span style="color: #007700">, </span><span style="color: #dd0000">'mypass'</span><span style="color: #007700">, </span><span style="color: #dd0000">'mydb'</span><span style="color: #007700">); <br /> <br /></span><span style="color: #0000bb">$_POST</span><span style="color: #007700">[</span><span style="color: #dd0000">'username'</span><span style="color: #007700">] = </span><span style="color: #0000bb">chr</span><span style="color: #007700">(</span><span style="color: #0000bb">0xbf</span><span style="color: #007700">) . <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000bb">chr</span><span style="color: #007700">(</span><span style="color: #0000bb">0x27</span><span style="color: #007700">) . <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #dd0000">' OR username = username /*'</span><span style="color: #007700">; <br /></span><span style="color: #0000bb">$_POST</span><span style="color: #007700">[</span><span style="color: #dd0000">'password'</span><span style="color: #007700">] = </span><span style="color: #dd0000">'guess'</span><span style="color: #007700">; <br /> <br /></span><span style="color: #0000bb">$mysql</span><span style="color: #007700">[</span><span style="color: #dd0000">'username'</span><span style="color: #007700">] = </span><span style="color: #0000bb">addslashes</span><span style="color: #007700">(</span><span style="color: #0000bb">$_POST</span><span style="color: #007700">[</span><span style="color: #dd0000">'username'</span><span style="color: #007700">]); <br /></span><span style="color: #0000bb">$mysql</span><span style="color: #007700">[</span><span style="color: #dd0000">'password'</span><span style="color: #007700">] = </span><span style="color: #0000bb">addslashes</span><span style="color: #007700">(</span><span style="color: #0000bb">$_POST</span><span style="color: #007700">[</span><span style="color: #dd0000">'password'</span><span style="color: #007700">]); <br /> <br /></span><span style="color: #0000bb">$sql </span><span style="color: #007700">= </span><span style="color: #dd0000">&quot;SELECT * <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;&nbsp; users <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;&nbsp;username = '&#123;$mysql['username']&#125;' <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;&nbsp;&nbsp;&nbsp;password = '&#123;$mysql['password']&#125;'&quot;</span><span style="color: #007700">; <br /> <br /></span><span style="color: #0000bb">$result </span><span style="color: #007700">= </span><span style="color: #0000bb">$db</span><span style="color: #007700">-&gt;</span><span style="color: #0000bb">query</span><span style="color: #007700">(</span><span style="color: #0000bb">$sql</span><span style="color: #007700">); <br /> <br />if (</span><span style="color: #0000bb">$result</span><span style="color: #007700">-&gt;</span><span style="color: #0000bb">num_rows</span><span style="color: #007700">) <br />&#123; <br />&nbsp;&nbsp;&nbsp;&nbsp;echo </span><span style="color: #dd0000">'&lt;p&gt;Success&lt;/p&gt;'</span><span style="color: #007700">; <br />&#125; <br />else <br />&#123; <br />&nbsp;&nbsp;&nbsp;&nbsp;echo </span><span style="color: #dd0000">'&lt;p&gt;Failure&lt;/p&gt;'</span><span style="color: #007700">; <br />&#125; <br /> <br /></span><span style="color: #0000bb">?&gt;</span></pre> <div> ps:与0x5c（即&#92;）为结尾组成多字节字符的字符集都可能有这个漏洞。<br /><br />本文介绍的是用&nbsp;&nbsp;mysql_real_escape_string对用户提交数据进行整理处理和通过addslashes以及mysql_escape_string这 3个类似的功能函数的区别。经过转义的数据可以直接插入到数据库中。<br /><br />　　很好的说明了addslashes和 mysql_real_escape_string的区别，虽然国内很多PHP&nbsp;&nbsp;coder仍在依靠addslashes防止SQL注入（包括我在内），我还是建议大家加强中文防止SQL注入的检查。addslashes的问题在于黑 客可以用0xbf27来代替单引号，而addslashes只是将0xbf27修改为0xbf5c27，成为一个有效的多字节字符，其中的0xbf5c仍 会被看作是单引号，所以addslashes无法成功拦截。<br /><br />　　当然addslashes也不是毫无用处，它是用于单字节字符串的处理，多字节字 符还是用mysql_real_escape_string吧。<br /><br />　　另外对于php手册中get_magic_quotes_gpc的举例：<br /><br /><div class="quote"><div class="quote-title">引用</div><div class="quote-content">　 　<br />if (!get_magic_quotes_gpc()) &#123; 　　<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $lastname = addslashes($_POST[&lsquo;lastname&rsquo;]);<br />&#125; <br />else &#123;<br />&nbsp;　　$lastname = $_POST[&lsquo;lastname&rsquo;]; 　　<br />&#125;</div></div><br /><br />　　最好对magic_quotes_gpc已经开放的情况下，还是 对$_POST[&rsquo;lastname&rsquo;]进行检查一下。<br />　　再说下mysql_real_escape_string和 mysql_escape_string这2个函数的区别：<br /><br />　　mysql_real_escape_string 必须在(PHP 4&nbsp;&nbsp;&gt;= 4.3.0, PHP 5)的情况下才能使用。否则只能用 mysql_escape_string ，两者的区别是：<br />　　 mysql_real_escape_string 考虑到连接的当前字符集，而mysql_escape_string 不考虑。<br /><br />　　总结一 下：<br /><br />　　addslashes() 是强行加；<br />　　mysql_real_escape_string()&nbsp;&nbsp; 会判断字符集，但是对PHP版本有要求；<br />　　mysql_escape_string不考虑连接的当前字符集<br /></div><br/>Tags - <a href="http://yfyfj.cn/go.php/tags/php/" rel="tag">php</a> , <a href="http://yfyfj.cn/go.php/tags/gbk/" rel="tag">gbk</a> , <a href="http://yfyfj.cn/go.php/tags/addslashes/" rel="tag">addslashes</a> , <a href="http://yfyfj.cn/go.php/tags/%25E6%25BC%258F%25E6%25B4%259E/" rel="tag">漏洞</a> , <a href="http://yfyfj.cn/go.php/tags/mysql/" rel="tag">mysql</a>
]]>
</description>
</item><item>
<link>http://yfyfj.cn/post/location_href_help.php</link>
<title><![CDATA[location.href的用法[转载]]]></title> 
<author>忆风 &lt;web@web.com&gt;</author>
<category><![CDATA[Web 开发]]></category>
<pubDate>Sat, 08 May 2010 06:31:41 +0000</pubDate> 
<guid>http://yfyfj.cn/post/location_href_help.php</guid> 
<description>
<![CDATA[ 
	&nbsp;<span style="color: #fa8072">*.location.href</span> 用法:<br />　　 top.location.href=&rdquo;url&rdquo;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在顶层页面打开url（跳出框架）<br />　　<a name="baidusnap0"></a><strong style="color: black; background-color: #ffff66">self.location.href</strong>=&rdquo;url&rdquo;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;仅在本页面打开url地址<br />　　parent.location.href=&rdquo;url&rdquo; 　&nbsp; &nbsp; 在父窗口打开Url地址<br />　　 this.location.href=&rdquo;url&rdquo; 　　&nbsp;&nbsp;&nbsp; 用法和self的用法一致<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (top.location ==&nbsp;&nbsp;self.location)&nbsp;判断当前location 是否为顶层来&nbsp;<span style="color: #fa8072">禁止frame引用</span><br />　&nbsp;&nbsp;&nbsp;如果页面当中有自定义的frame的话，也可以将parent&nbsp; self&nbsp;&nbsp; top换为自定义frame的名称<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;效果就是在自定义frame窗口打开url地址 <div>&nbsp;</div> <div>转帖：<span style="font-family: 宋体"><a href="http://blog.csdn.net/faintbear/archive/2004/09/15/105073.aspx" target="_blank">http://blog.csdn.net/faintbear/archive/2004/09/15/105073.aspx</a></span></div> <div> <div class="postTitle"><a href="http://blog.csdn.net/faintbear/archive/2004/09/15/105073.aspx">&nbsp;javascript&nbsp;&nbsp;frame 刷新</a></div> <div class="postText"><blockquote>引用: <hr /><br />这是一个简单的事例:<br />以下是top.htm&nbsp;&nbsp;代码<br />&lt;script language=javascript&gt;<br />function rs()&#123;<br />parent.left.location.href=&quot;top.htm&quot;<br />parent.bot.location.href=&quot;top.htm&quot;<br />&#125;<br />&lt;/script&gt;<br />&lt;input&nbsp;&nbsp;type=button name=name value=&quot;ksdj&quot; onclick=rs();&gt;<br /><br />以下是一个随意文件名的 htm文件:<br />&lt;FRAMESET COLS=&quot;150,*&quot;&gt;<br />&lt;FRAME xsrc=&quot;left.htm&quot;&nbsp;&nbsp;name=left&gt;<br />&lt;FRAMESET ROWS=&quot;150,*&quot;&gt;<br />&lt;FRAME&nbsp;&nbsp;xsrc=&quot;top.htm&quot; name=top&gt;<br />&lt;FRAME xsrc=&quot;bot.htm&quot; name=bot&gt;<br />&lt;/FRAMESET&gt;<br />&lt;/FRAMESET&gt;<br />你 自己试试,我想你要的可能就是这样的效果!<br /><hr /></blockquote> <p><br />我引用楼上老兄的方法回复，帮忙解释一下吧。<br />以下是top.htm 代码<br />&lt;script&nbsp;&nbsp;language=javascript&gt;<br />function rs()&#123;<br />parent.left.location.href=&quot;top.htm&quot;&nbsp;&nbsp;<span style="color: #ff0000">//partent指的是父页，也就是最外面的框架页，left只得是 left.htm,location是left页的一向对象，而href是location对象的一个属性，就是该属性确定了left的url地址。所以 这里就把你需要的地址给了这个parent.left。</span><br />parent.bot.location.href=&quot;top.htm&quot;&nbsp;&nbsp;//<span style="color: #ff0000">此句意思同上面的大致一样。</span><br />&#125; //<span style="color: #ff0000">函数结束，实现了同时对两个url的更新！</span><br />&lt;/script&gt;<br />&lt;input&nbsp;&nbsp;type=button name=name value=&quot;ksdj&quot; onclick=rs();&gt;<br /><br />以下是一个随意文件名的 htm文件:<br />&lt;FRAMESET COLS=&quot;150,*&quot;&gt;<br />&lt;FRAME xsrc=&quot;left.htm&quot;&nbsp;&nbsp;name=left&gt; &gt; <span style="color: #ff0000">//给这个left.htm定义了一个名字叫left</span><br />&lt;FRAMESET&nbsp;&nbsp;ROWS=&quot;150,*&quot;&gt;<br />&lt;FRAME xsrc=&quot;top.htm&quot; name=top&gt; <span style="color: #ff0000">//给这个top.htm定义了一个名字叫top</span><br />&lt;FRAME&nbsp;&nbsp;xsrc=&quot;bot.htm&quot; name=bot&gt; <span style="color: #ff0000">//给这个bot.htm定义了一个名字叫bot</span><br />&lt;/FRAMESET&gt;<br />&lt;/FRAMESET&gt;</p> <p>window 对象的 location 属性包含了当前页面的地址 (URL) 信息，你可以直接改变此属性值，将其设置成新的地址&nbsp;&nbsp;(URL)：<br /><br />window.location = &quot;<a href="http://www.yahoo.com&quot;;" target="_blank">http://www.yahoo.com&quot;;</a><br />或者<br />location&nbsp;&nbsp;= &quot;<a href="http://www.yahoo.com&quot;;" target="_blank">http://www.yahoo.com&quot;;</a><br /><br />你还可以通过下边的两种方法中的任何一种来使浏览器从服务器上下载 (Load)&nbsp;&nbsp;页面：<br /><br />reload() - 促使浏览器重新下载当前的页面，也就是&ldquo;刷新&rdquo;当前页面了。<br />replace(URL) -&nbsp;&nbsp;促使浏览器根据 URL 参数中给出的地址 (URL) 下载页面，同时在当前浏览器存储的历史记录 (即所浏览过的页面的列表)&nbsp;&nbsp;中使用新的地址(即此方法中的 URL 参数) 覆盖当前的页面。<br />使用 replace() 方法意味着用户将不能通过按 &ldquo;返回&rdquo;&nbsp;&nbsp;按钮回到前边浏览过的那个页面，但这并不是说用户完全不能回到原来的所有页面，他们只不过是无法回到被 replace() 方法替换的那一个页面&nbsp;&nbsp;(注意：只是被替换的那一个页面)。</p>&nbsp;&nbsp;<p>&nbsp;<span style="font-family: 宋体">framedemo.html,top.html,button.html为例来具体说明如何做</span></p> </div> </div> <div> <p>其中framedemo.html由上下两个页面组成，代码如下：</p> <p>&lt;frameset rows=&quot;50%,50%&quot;&gt;&lt;frame name=top&nbsp;&nbsp;xsrc=&quot;top.html&quot;&gt;&lt;frame name=button&nbsp;&nbsp;xsrc=&quot;button.html&quot;&gt;&lt;/frameset&gt;</p>&nbsp;&nbsp;<p>现在假设top.html即上面的页面有一个button来实现对下面页面的刷新，可以用以下七种语句，哪个好用自己看着办了。</p>&nbsp;&nbsp;<p>语句1. window.parent.frames[1].location.reload();</p>&nbsp;&nbsp;<p>语句2. window.parent.frames.bottom.location.reload();</p>&nbsp;&nbsp;<p>语句3. window.parent.frames[&quot;bottom&quot;].location.reload();</p>&nbsp;&nbsp;<p>语句4. window.parent.frames.item(1).location.reload();</p>&nbsp;&nbsp;<p>语句5. window.parent.frames.item('bottom').location.reload();</p>&nbsp;&nbsp;<p>语句6. window.parent.bottom.location.reload();</p>&nbsp;&nbsp;<p>语句7. window.parent['bottom'].location.reload();</p>&nbsp;&nbsp;<p>解释一下：</p>&nbsp;&nbsp;<p>1.window指代的是当前页面，例如对于此例它指的是top.html页面。</p>&nbsp;&nbsp;<p>2.parent指的是当前页面的父页面，也就是包含它的框架页面。例如对于此例它指的是framedemo.html。</p>&nbsp;&nbsp;<p>3.frames是window对象，是一个数组。代表着该框架内所有子页面。</p>&nbsp;&nbsp;<p>4.item是方法。返回数组里面的元素。</p> </div> <div>&nbsp;</div> <div>看了部分文章个人总结：</div> <div>top.location是在顶层frame中打开新页&nbsp;&nbsp;&nbsp;<br />window.location是在当前frame中打开新页</div> parent.location&nbsp;在当前窗口的父窗口打开Url地址<br/>Tags - <a href="http://yfyfj.cn/go.php/tags/location/" rel="tag">location</a> , <a href="http://yfyfj.cn/go.php/tags/href/" rel="tag">href</a> , <a href="http://yfyfj.cn/go.php/tags/setup/" rel="tag">setup</a>
]]>
</description>
</item><item>
<link>http://yfyfj.cn/post/Komodo_IDE_5_2_4_keygen.php</link>
<title><![CDATA[PHP开发IDE Komodo IDE 5.2.4[含注册]]]></title> 
<author>忆风 &lt;web@web.com&gt;</author>
<category><![CDATA[Web 开发]]></category>
<pubDate>Fri, 07 May 2010 12:40:00 +0000</pubDate> 
<guid>http://yfyfj.cn/post/Komodo_IDE_5_2_4_keygen.php</guid> 
<description>
<![CDATA[ 
	以前一直都是用Zend Studio 来写PHP代码， 随着Zend Studio的升级， 内存越占越多， 我的本本已经经受不了， 编写代码都变成了一种折磨。 后来<a href="http://www.jansfer.com" target="_blank">发哥</a>推荐我用Komodo IDE, 精简便捷，而且功能强大， 不仅可以编辑PHP，还可以编辑Python, Perl 等<br /><br /><br />看看它的介绍： Komodo 是一个跨平台支持多种程序语言的Integrated Development Environment (IDE)软件，目前他支持了在Windows与Linux上，Perl、Python及JavaScript等的程序语言开发，以及多种程序语言语法不同颜色标注。 <br /><br />去官方网站下载一个，<a href="http://downloads.activestate.com/Komodo/releases/5.2.4/Komodo-IDE-5.2.4-37659.msi">Komodo-IDE-5.2.4-37659.msi</a> 下载地址<a href="http://downloads.activestate.com/Komodo/releases/5.2.4/Komodo-IDE-5.2.4-37659.msi">猛击这里</a><br /><br />官方的功能介绍：<br /><br /><li><div class="item"><div class="title">Multi-language Support</div><div class="content" style="display: none"><p></p><ul><li>Browser-side technologies: CSS, HTML, JavaScript, and XML </li><li>Server-side languages: Perl, PHP, Python, Ruby, and Tcl </li><li>Web template languages: RHTML, Template-Toolkit, HTML-Smarty, and Django </li></ul><p></p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Autocomplete and Call Tips</div><div class="content" style="display: none"><p></p><ul><li>Write code faster and shorten the learning curve with code completion that guides you as you work </li><li>CSS, HTML, JavaScript, Perl, PHP, Python, Ruby, Tcl, XML, and XSLT </li><li>Schema-based XML/HTML completion </li><li>Multiple-language file support, such as CSS and JavaScript completion in HTML </li><li>Framework support for Rails and Zend </li><li>Support for adding third-party libraries </li><li>Interpreter version differentiation of built-in and standard library information </li></ul><p></p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Multi-language File Support</div><div class="content" style="display: none"><p>Correct syntax coloring of multi-language files and templated files, common in many web programming frameworks. Add custom language support with UDL.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Standard Editing Features</div><div class="content" style="display: none"><!-- list style: disc --><ul style="list-style-type: disc"><li>code formatting </li><li>code commenting </li><li>auto-indent </li><li>block selection </li><li>column editing </li></ul></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Syntax Checking</div><div class="content" style="display: none"><p>Instant feedback for all fully-supported languages.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Syntax Coloring</div><div class="content" style="display: none"><p>Spot errors easily and improve readability and context, even in multi-language files.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Abbreviations</div><div class="content" style="display: none"><p>Inserts snippets from your toolbox at the touch of a key.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Vi Emulation</div><div class="content" style="display: none"><p>Modal Vi keybindings emulate navigation, text insertion and command behavior. Custom commands can be implemented by adding Komodo macros to a Vi Commands Toolbox folder.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Emacs Keybindings</div><div class="content" style="display: none"><p>Emacs-like keybinding scheme supports new editor features modeled on Emacs, such as transient marks (similar to the Emacs &quot;mark ring&quot;), repeat next command and reflow paragraph.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">HTML Preview</div><div class="content" style="display: none"><p>Check HTML, XML and CSS files side-by-side or in a browser, using arbitrary files or URLs.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">View HTML Source</div><div class="content" style="display: none"><p>Drag and drop a URL onto Komodo (http://, <a href="https://)" target="_blank">https://)</a>, Komodo now offers to view the source contents of this web page. This is convenient for checking the underlying HTML source code of web pages.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Multilingual Input Method Editor (IME) support</div><div class="content" style="display: none"><p>Use your standard keyboard to enter multi-byte characters, such as Simplified Chinese, Japanese and Korean.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Code Snippets</div><div class="content" style="display: none"><p>Store any piece of code for reuse.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Code Folding</div><div class="content" style="display: none"><p>Work quickly and efficiently with large sections of code.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Multi-document Editing</div><div class="content" style="display: none"><p>Easily work on multiple documents simultaneously using multiple tab groups, split view, and cross-document search.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">History</div><div class="content" style="display: none"><p>Navigation (forward and back) buttons and a drop list in the toolbar that let you browse though the files and buffer locations you've been editing recently.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Search Highlighting</div><div class="content" style="display: none"><p>Matches are highlighted in the current buffer.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Editor Hyperlinking</div><div class="content" style="display: none"><p>Ctrl'+'hover' will highlight HTTP hyperlinks under the pointer; 'Ctrl'+'click' will open the URL in the configured browser.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">CSS Color Popup</div><div class="content" style="display: none"><p>Ctrl' + 'hover' over a color value in CSS will display a popup of that color; 'Ctrl'+'click' will open the color picker.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Primary Language Preferences</div><div class="content" style="display: none"><p>It is now possible to configure which languages you'd like to see as primary languages in Komodo. The primary languages are the first group of languages seen in the language drop-down menus, whilst secondary languages are grouped under the <em>Other</em> sub-menu.</p></div><!-- /content --></div><!-- /item --></li><li><div class="item"><div class="title">Sub-language Background Colors</div></div></li><div class="title"><br /><br /><br />IDE 是收费版，不注册只能用21DAY， 我在国外网站上找到了此注册机，大家用用， 用的喜欢了最好是去买吧，支持正版！<br /><br />注册机： <a href="attachment.php?fid=86">点击这里下载文件</a></div><br/>Tags - <a href="http://yfyfj.cn/go.php/tags/komodo/" rel="tag">komodo</a> , <a href="http://yfyfj.cn/go.php/tags/ide/" rel="tag">ide</a> , <a href="http://yfyfj.cn/go.php/tags/5.2.4/" rel="tag">5.2.4</a> , <a href="http://yfyfj.cn/go.php/tags/%25E6%25B3%25A8%25E5%2586%258C%25E6%259C%25BA/" rel="tag">注册机</a> , <a href="http://yfyfj.cn/go.php/tags/php/" rel="tag">php</a>
]]>
</description>
</item><item>
<link>http://yfyfj.cn/post/php_type_comparison_table.php</link>
<title><![CDATA[PHP 类型比较]]></title> 
<author>忆风 &lt;web@web.com&gt;</author>
<category><![CDATA[Web 开发]]></category>
<pubDate>Mon, 29 Mar 2010 02:27:53 +0000</pubDate> 
<guid>http://yfyfj.cn/post/php_type_comparison_table.php</guid> 
<description>
<![CDATA[ 
	<table border="0" class="doctable table"><caption><strong>这个很容易出错！ 听说经常用来做面试题！<br /><br /><br /><br />Comparisons of $x with PHP functions</strong></caption><thead><tr valign="middle"><th>Expression</th><th>gettype()</th><th>empty()</th><th>is_null()</th><th>isset()</th><th>boolean : <em>if($x)</em></th></tr></thead><tbody class="tbody"><tr valign="middle"><td align="left"><em>$x = &quot;&quot;;</em></td><td align="left">string</td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = null</em></td><td align="left">NULL</td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>var $x;</em></td><td align="left">NULL</td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left">$x is undefined</td><td align="left">NULL</td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = array();</em></td><td align="left">array</td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = false;</em></td><td align="left">boolean</td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = true;</em></td><td align="left">boolean</td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = 1;</em></td><td align="left">integer</td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = 42;</em></td><td align="left">integer</td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = 0;</em></td><td align="left">integer</td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = -1;</em></td><td align="left">integer</td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = &quot;1&quot;;</em></td><td align="left">string</td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = &quot;0&quot;;</em></td><td align="left">string</td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = &quot;-1&quot;;</em></td><td align="left">string</td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = &quot;php&quot;;</em></td><td align="left">string</td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = &quot;true&quot;;</em></td><td align="left">string</td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td></tr><tr valign="middle"><td align="left"><em>$x = &quot;false&quot;;</em></td><td align="left">string</td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td></tr></tbody></table><p></p><p class="para"></p><table border="0" class="doctable table"><caption><strong>Loose comparisons with <em>==</em></strong></caption><thead><tr valign="middle"><th><strong>TRUE</strong></th><th><strong>FALSE</strong></th><th><em>1</em></th><th><em>0</em></th><th><em>-1</em></th><th><em>&quot;1&quot;</em></th><th><em>&quot;0&quot;</em></th><th><em>&quot;-1&quot;</em></th><th><strong>NULL</strong></th><th><em>array()</em></th><th><em>&quot;php&quot;</em></th><th><em>&quot;&quot;</em></th></tr></thead><tbody class="tbody"><tr valign="middle"><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td></tr><tr valign="middle"><td align="left"><em>1</em></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>0</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td></tr><tr valign="middle"><td align="left"><em>-1</em></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>&quot;1&quot;</em></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>&quot;0&quot;</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>&quot;-1&quot;</em></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><strong>NULL</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td></tr><tr valign="middle"><td align="left"><em>array()</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>&quot;php&quot;</em></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>&quot;&quot;</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td></tr></tbody></table><p></p><p class="para"></p><table border="0" class="doctable table"><caption><strong>Strict comparisons with <em>===</em></strong></caption><thead><tr valign="middle"><th><strong>TRUE</strong></th><th><strong>FALSE</strong></th><th><em>1</em></th><th><em>0</em></th><th><em>-1</em></th><th><em>&quot;1&quot;</em></th><th><em>&quot;0&quot;</em></th><th><em>&quot;-1&quot;</em></th><th><strong>NULL</strong></th><th><em>array()</em></th><th><em>&quot;php&quot;</em></th><th><em>&quot;&quot;</em></th></tr></thead><tbody class="tbody"><tr valign="middle"><td align="left"><strong>TRUE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>1</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>0</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>-1</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>&quot;1&quot;</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>&quot;0&quot;</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>&quot;-1&quot;</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><strong>NULL</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>array()</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>&quot;php&quot;</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td><td align="left"><strong>FALSE</strong></td></tr><tr valign="middle"><td align="left"><em>&quot;&quot;</em></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>FALSE</strong></td><td align="left"><strong>TRUE</strong></td></tr></tbody></table><br/>Tags - <a href="http://yfyfj.cn/go.php/tags/php/" rel="tag">php</a> , <a href="http://yfyfj.cn/go.php/tags/%25E7%25B1%25BB%25E5%259E%258B/" rel="tag">类型</a> , <a href="http://yfyfj.cn/go.php/tags/%25E6%25AF%2594%25E8%25BE%2583/" rel="tag">比较</a>
]]>
</description>
</item><item>
<link>http://yfyfj.cn/post/iconv_utf8togb2312_bug.php</link>
<title><![CDATA[iconv转换UTF8-GB2312中字符不完整的解决办法]]></title> 
<author>忆风 &lt;web@web.com&gt;</author>
<category><![CDATA[Web 开发]]></category>
<pubDate>Wed, 10 Feb 2010 08:06:51 +0000</pubDate> 
<guid>http://yfyfj.cn/post/iconv_utf8togb2312_bug.php</guid> 
<description>
<![CDATA[ 
	经常要转换一下UTF8到GB2312的字符， 使用ICONV函数， 有时候发现只出现一部分， 后面一部分就丢失了。<br /><br />搜索了一下google， 发现也有人发现这个问题， 这其实是ICONV的一个bug<br /><br /><p>解决方法：<br /><br />在需要转成的编码后加 &ldquo;//IGNORE&rdquo; 也就是iconv函数第二个参数后.<br /><br />如下：</p><table border="0" cellspacing="0" cellpadding="6" width="95%" align="center"><tbody><tr><td bgcolor="#fdfddf">iconv(&rdquo;UTF-8&Prime;,&rdquo;GB2312//IGNORE&rdquo;,$data)</td></tr></tbody></table><p>ignore的意思是忽略转换时的错误，如果没有ignore参数，所有该字符后面的字符串都无法被保存。<br /><br /><br />可以查看一下php手册：<br /><br /></p><div class="refnamediv"><h1 class="refname">iconv</h1><p class="verinfo">(PHP 4 &gt;= 4.0.5, PHP 5)</p><p class="refpurpose">iconv &mdash; Convert string to requested character encoding</p></div><div class="refsect1 description"><h3 class="title">说明</h3><div class="methodsynopsis"><span class="type">string</span> <span class="methodname"><strong><strong>iconv</strong></strong></span> ( <span class="methodparam"><span class="type">string</span> $in_charset</span> , <span class="methodparam"><span class="type">string</span> $out_charset</span> , <span class="methodparam"><span class="type">string</span> $str</span> )</div><p class="para">Performs a character set conversion on the string <em>str</em> from <em>in_charset</em> to <em>out_charset</em> . </p></div><div class="refsect1 parameters"><h3 class="title">参数</h3><p class="para"></p><dl><dt><span class="term"><em>in_charset</em> </span></dt><dd><p class="para">The input charset. </p></dd><dt><span class="term"><em>out_charset</em> </span></dt><dd><p class="para">The output charset. </p><p class="para">If you append the string <em class="literal">//TRANSLIT</em> to <em>out_charset</em> transliteration is activated. This means that when a character can't be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string <em class="literal">//IGNORE</em>, characters that cannot be represented in the target charset are silently discarded. Otherwise, <em>str</em> is cut from the first illegal character. </p></dd><dt><span class="term"><em>str</em> </span></dt><dd><p class="para">The string to be converted. <br /><br /><br /><br /></p><h3 class="title">返回值</h3><p class="para">Returns the converted string or <strong>FALSE</strong> on failure. </p></dd></dl><p></p></div><br/>Tags - <a href="http://yfyfj.cn/go.php/tags/iconvutf8/" rel="tag">iconvutf8</a> , <a href="http://yfyfj.cn/go.php/tags/gb2312/" rel="tag">gb2312</a> , <a href="http://yfyfj.cn/go.php/tags/%25E5%25AD%2597%25E7%25AC%25A6%25E4%25B8%25A2%25E5%25A4%25B1/" rel="tag">字符丢失</a>
]]>
</description>
</item><item>
<link>http://yfyfj.cn/post/aptana_studio2.0.php</link>
<title><![CDATA[Aptana Studio 2.0 PluginZend studiohtml编辑器插件]]></title> 
<author>忆风 &lt;web@web.com&gt;</author>
<category><![CDATA[Web 开发]]></category>
<pubDate>Tue, 09 Feb 2010 02:40:24 +0000</pubDate> 
<guid>http://yfyfj.cn/post/aptana_studio2.0.php</guid> 
<description>
<![CDATA[ 
	<p class="step"><span>Aptana Studio 2.0 Plugin Installation Instructions<br /><br />Eclipse Update Site:</span> Installing via Aptana or Eclipse </p><div style="padding-bottom: 0px; padding-left: 5px; padding-right: 5px; padding-top: 0px"><p><strong>Update Site:</strong><br /></p><div style="padding-bottom: 0px; padding-left: 10px; padding-right: 0px; padding-top: 0px"><a id="show" href="http://download.aptana.org/tools/studio/plugin/install/studio" onclick="return false"><a href="http://download.aptana.org/tools/studio/plugin/install/studio" target="_blank">http://download.aptana.org/tools/studio/plugin/install/studio</a></a></div><br /><p></p><strong>Detailed Directions:</strong> <ol><li>From the Help menu, select Install New Software... to open an Install pop-up window. </li><li>In the Work with: text box of the Install window, type the URL <a href="http://download.aptana.org/tools/studio/plugin/install/studio" target="_blank">http://download.aptana.org/tools/studio/plugin/install/studio</a> for the update site, and hit the Enter key. </li><li>In the populated table below, check the box next to the name of the plug-in, and click the Next button. </li><li>Click the Next button to go to the license page. </li><li>Choose the option to accept the terms of the license agreement, and click the Finish button. </li></ol></div><hr /><p class="step"><span>Manual Installation:</span> Download the Plugin Update Site </p><div style="padding-bottom: 0px; padding-left: 5px; padding-right: 5px; padding-top: 0px"><p></p><ol><li>Download <a href="http://download.aptana.org/tools/studio/plugin/install/studio/zip">Studio 2.0 Plugin</a> zip. </li><li>Open Eclipse distribution, and go to <strong>Help -&gt; Install New Software.... </strong></li><li>Click the <strong>Add...</strong> button to open the <strong>Add Site</strong> window. </li><li>Click the <strong>Archive...</strong> button, and select the file saved in step 1. </li><li>Select the appropriate plugins to install, and click <strong>Next -&gt; Next</strong>. </li><li>Click the <strong>Finish</strong> button. </li></ol></div><br/>Tags - <a href="http://yfyfj.cn/go.php/tags/aptana/" rel="tag">aptana</a> , <a href="http://yfyfj.cn/go.php/tags/zend/" rel="tag">zend</a> , <a href="http://yfyfj.cn/go.php/tags/studio/" rel="tag">studio</a> , <a href="http://yfyfj.cn/go.php/tags/php/" rel="tag">php</a>
]]>
</description>
</item><item>
<link>http://yfyfj.cn/post/php_functions.php</link>
<title><![CDATA[function文件里的通用函数【不断增加】]]></title> 
<author>忆风 &lt;web@web.com&gt;</author>
<category><![CDATA[Web 开发]]></category>
<pubDate>Wed, 03 Feb 2010 07:21:35 +0000</pubDate> 
<guid>http://yfyfj.cn/post/php_functions.php</guid> 
<description>
<![CDATA[ 
	/**<br />&nbsp;* 排序函数<br />&nbsp;* @param string $ordername&nbsp; 排序的变量<br />&nbsp;* @param string $order&nbsp;排序的name order=1<br />&nbsp;* @param string $sortname 顺序还是倒序&nbsp; desc asc<br />&nbsp;* @param string $sort&nbsp; url里排序的变量如 sort=desc<br />&nbsp;* @param string $url&nbsp;要搜索的url<br />&nbsp;*/<br />function set_order_url($ordername=&quot;&quot;,$order = &quot;order&quot;, $sortname=&quot;desc&quot;, $sort=&quot;sort&quot; , $url=&quot;&quot;)&#123;<br />&nbsp;if(!empty($url))&#123;<br />&nbsp;&nbsp;&nbsp;//手动设置<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$url=$url.((strstr($url,'?'))?'&amp;':'?').$order.&quot;=&quot;;<br />&nbsp; &nbsp;&#125;else&#123;<br />&nbsp;&nbsp;&nbsp;//自动获取<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(empty($_SERVER['QUERY_STRING']))&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//不存在QUERY_STRING时<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$url=$_SERVER['REQUEST_URI'].&quot;?&quot;.$order.&quot;=&quot;;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&#125;else&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;//存在QUERY_STRING时<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if($tempstr = strstr($_SERVER['QUERY_STRING'],$order.'='))&#123;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;//地址存在排序参数&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$need = substr($tempstr,strlen($order.'='), strpos($tempstr, &quot;&amp;&quot;)-strlen($order.'='));<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$url=str_replace($order.'='.$need,'',$_SERVER['REQUEST_URI']);<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$last=$url[strlen($url)-1];<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;if($last=='?'&#124;&#124;$last=='&amp;')&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$url.=$order.&quot;=&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$url.='&amp;'.$order.&quot;=&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&#125;else&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//地址不存在排序参数<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$url=$_SERVER['REQUEST_URI'].'&amp;'.$order.'=';<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&#125;&nbsp; <br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&#125;<br />&nbsp; &nbsp;&#125;<br />&nbsp; &nbsp;$url .= $ordername;<br />&nbsp; &nbsp;<br />&nbsp; &nbsp;//升序降序处理<br />&nbsp; &nbsp;$sortstr = &quot;/&quot;.$sort.'=(desc&#124;asc)/i';<br />&nbsp; &nbsp;if(preg_match($sortstr, $url, $m))&#123;<br />&nbsp; &nbsp;&nbsp;//如果已经存在sort=则替换处理&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp;&nbsp;$str = strtolower($m[1]) == &quot;desc&quot; ? &quot;asc&quot; : &quot;desc&quot;;<br />&nbsp; &nbsp;&nbsp;$url = str_replace($m[1], $str, $url);&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp;&#125;<br />&nbsp; &nbsp;else&#123;<br />&nbsp; &nbsp;&nbsp;$url .= &quot;&amp;$sort=$sortname&quot;;<br />&nbsp; &nbsp;&#125;<br />&nbsp; &nbsp;<br />&nbsp; &nbsp;return $url;<br />&#125;<br/>Tags - <a href="http://yfyfj.cn/go.php/tags/php/" rel="tag">php</a> , <a href="http://yfyfj.cn/go.php/tags/function/" rel="tag">function</a> , <a href="http://yfyfj.cn/go.php/tags/%25E5%2585%25AC%25E7%2594%25A8%25E5%2587%25BD%25E6%2595%25B0/" rel="tag">公用函数</a>
]]>
</description>
</item>
</channel>
</rss>