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

<channel>
	<title>我想网 &#187; 程序源码</title>
	<atom:link href="http://www.iwanna.cn/topics/resource/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iwanna.cn</link>
	<description></description>
	<lastBuildDate>Sat, 31 Jul 2010 15:12:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>实用jquery代码片段集合[下]</title>
		<link>http://www.iwanna.cn/archives/2010/07/29/4797/</link>
		<comments>http://www.iwanna.cn/archives/2010/07/29/4797/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 14:26:22 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=4797</guid>
		<description><![CDATA[如何隐藏除了特定选择器下的全部对象

$(&#8216;#target div:not(#exclude)&#8217;).hide();
 //或者
 $(&#8216;#target&#8217;).children().filter(&#8216;:not(#exclude)&#8217;).hide();

filter()起到过滤的作用。
寻找带有指定字符串的元素


var foundin = $(&#8216;*:contains(&#8221; 明河&#8221;)&#8217;);

获取垂直滚动距离

alert($(document).scrollTop());

scrollTop()非常实用的一个方法。
向表格追加一行数据

$(&#8216;#myTable tr:last&#8217;).after(&#8216;&#60;tr&#62;&#8230;&#60;/tr&#62;&#8217;);

超过一个属性时的过滤

var elements = $(&#8216;#someid  input[type=sometype][value=somevalue]&#8216;).get();

让cookies在X分钟后过期

var date = new Date();
date.setTime(date.getTime() + (x * 60 * 1000));
$.cookie(&#8216;example&#8217;, &#8216;foo&#8217;, { expires: date });

选择从第一个到第X个的元素

//从第一个到第10个
$(&#8216;a&#8217;).slice(0,10);
//或者
$(&#8216;a:lt(10)&#8217;);

获取客户端的IP

$.getJSON(&#8220;http://jsonip.appspot.com?callback=?&#8221;,function(data){
 alert( &#8220;你的IP：&#8221; + data.ip);
});

这是利用了jsonip.appspot.com提供的取IP服务。
解析XML数据源

&#60;?xml version=&#8221;1.0&#8243; ?&#62;
&#60;result&#62;
 &#60;item&#62;
 &#60;id&#62;1&#60;/id&#62;
 &#60;title&#62;title1&#60;/title&#62;
 &#60;description&#62;desc1&#60;/description&#62;
 &#60;/item&#62;
 &#60;item&#62;
 &#60;id&#62;2&#60;/id&#62;
 &#60;title&#62;title2&#60;/title&#62;
 &#60;description&#62;desc2&#60;/description&#62;
 &#60;/item&#62;
 &#60;!&#8211; &#8230; &#8211;&#62;
&#60;/result&#62;


$.get(&#8216;file.xml&#8217;,{},function(data){
 $(&#8216;item&#8217;,data).each(function(){
 var $this&#38;nbsp;&#38;nbsp;&#38;nbsp;&#38;nbsp;&#38;nbsp;&#38;nbsp; = $(this);
 var id [...]]]></description>
			<content:encoded><![CDATA[<h5>如何隐藏除了特定选择器下的全部对象</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(&#8216;#target div:not(#exclude)&#8217;).hide();</li>
<li> //或者</li>
<li> $(&#8216;#target&#8217;).children().filter(&#8216;:not(#exclude)&#8217;).hide();</li>
</ol>
<p>filter()起到过滤的作用。</p>
<h5>寻找带有指定字符串的元素</h5>
<p><span id="more-4797"></span></p>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var foundin = $(&#8216;*:contains(&#8221; 明河&#8221;)&#8217;);</li>
</ol>
<h5>获取垂直滚动距离</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>alert($(document).scrollTop());</li>
</ol>
<p>scrollTop()非常实用的一个方法。</p>
<h5>向表格追加一行数据</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(&#8216;#myTable tr:last&#8217;).after(&#8216;&lt;tr&gt;&#8230;&lt;/tr&gt;&#8217;);</li>
</ol>
<h5>超过一个属性时的过滤</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var elements = $(&#8216;#someid  input[type=sometype][value=somevalue]&#8216;).get();</li>
</ol>
<h5>让cookies在X分钟后过期</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var date = new Date();</li>
<li>date.setTime(date.getTime() + (x * 60 * 1000));</li>
<li>$.cookie(&#8216;example&#8217;, &#8216;foo&#8217;, { expires: date });</li>
</ol>
<h5>选择从第一个到第X个的元素</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>//从第一个到第10个</li>
<li>$(&#8216;a&#8217;).slice(0,10);</li>
<li>//或者</li>
<li>$(&#8216;a:lt(10)&#8217;);</li>
</ol>
<h5>获取客户端的IP</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$.getJSON(&#8220;http://jsonip.appspot.com?callback=?&#8221;,function(data){</li>
<li> alert( &#8220;你的IP：&#8221; + data.ip);</li>
<li>});</li>
</ol>
<p>这是利用了jsonip.appspot.com提供的取IP服务。</p>
<h5>解析XML数据源</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>&lt;?xml version=&#8221;1.0&#8243; ?&gt;</li>
<li>&lt;result&gt;</li>
<li> &lt;item&gt;</li>
<li> &lt;id&gt;1&lt;/id&gt;</li>
<li> &lt;title&gt;title1&lt;/title&gt;</li>
<li> &lt;description&gt;desc1&lt;/description&gt;</li>
<li> &lt;/item&gt;</li>
<li> &lt;item&gt;</li>
<li> &lt;id&gt;2&lt;/id&gt;</li>
<li> &lt;title&gt;title2&lt;/title&gt;</li>
<li> &lt;description&gt;desc2&lt;/description&gt;</li>
<li> &lt;/item&gt;</li>
<li> &lt;!&#8211; &#8230; &#8211;&gt;</li>
<li>&lt;/result&gt;</li>
</ol>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$.get(&#8216;file.xml&#8217;,{},function(data){</li>
<li> $(&#8216;item&#8217;,data).each(function(){</li>
<li> var $this&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $(this);</li>
<li> var id &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= $this.find(&#8216;id&#8217;).text();</li>
<li> var title &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= $this.find(&#8216;title&#8217;).text();</li>
<li> var description = $this.find(&#8216;description&#8217;).text();</li>
<li> //do something &#8230;</li>
<li> });</li>
<li>});</li>
</ol>
<h5>获取在id中的数字</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>&lt;div id=&#8221;sites&#8221;&gt;</li>
<li> &lt;a id=&#8221;site_1&#8243; href=&#8221;http://siteA.com&#8221;&gt;siteA&lt;/a&gt;</li>
<li> &lt;a id=&#8221;site_2&#8243; href=&#8221;http://siteB.com&#8221;&gt;siteB&lt;/a&gt;</li>
<li> &lt;a id=&#8221;site_3&#8243; href=&#8221;http://siteB.com&#8221;&gt;siteC&lt;/a&gt;</li>
<li> &#8230;</li>
<li>&lt;/div&gt;</li>
</ol>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(&#8220;#sites a&#8221;).click(function(){</li>
<li> var $this &amp;nbsp;&amp;nbsp; &amp;nbsp;= $(this);</li>
<li> var nmb &amp;nbsp;&amp;nbsp; &amp;nbsp;= $this.attr(&#8216;id&#8217;).match(/site_(\d+)/)[1];</li>
<li> &#8230;</li>
<li>});</li>
</ol>
<h5>将类似12343778 转成 12.343.778的形式</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var delimiter = &#8216;.&#8217;;</li>
<li>$(&#8216;#result&#8217;).<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">html</a>()</li>
<li> .toString()</li>
<li> .replace(new RegExp(&#8220;(^\\d{&#8220;+($this.<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">html</a>().toString().length%3||-1)+&#8221;})(?=\\d{3})&#8221;),&#8221;$1&#8243; + delimiter)</li>
<li> .replace(/(\d{3})(?=\d)/g,&#8221;$1&#8243; + delimiter);</li>
</ol>
<p>这个正则值得收藏，颇为经典。</p>
<h5>向firebug的控制面板发送消息</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li><a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>.fn.log = function (msg) {</li>
<li> console.log(&#8220;%s: %o&#8221;, msg, this);</li>
<li> return this;</li>
<li>};</li>
<li>$(&#8216;#some_div&#8217;).find(&#8216;li.source &gt; input:checkbox&#8217;).log(&#8220;sources to uncheck&#8221;).removeAttr(&#8220;checked&#8221;);</li>
</ol>
<h5>获取图片的宽高</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var img = $(&#8216;#imageid&#8217;);</li>
<li>var theImage = new Image();</li>
<li>theImage.src = img.attr(&#8220;src&#8221;);</li>
<li>alert(&#8220;Width:  &#8221; + theImage.width);</li>
<li>alert(&#8220;Height:  &#8221; + theImage.height);</li>
</ol>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/07/29/4797/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/07/29/4797/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/07/29/4797/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/07/29/4797/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/07/29/4797/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/tags/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4795/" title="实用jquery代码片段集合[上] (2010年07月29日)">实用jquery代码片段集合[上]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/03/29/2605/" title="基于jQuery的新闻图片 (2010年03月29日)">基于jQuery的新闻图片</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/20/4644/" title="jQuery源码分析-each函数 (2010年07月20日)">jQuery源码分析-each函数</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/07/3765/" title="简单的JQuery聚光灯效果教程 (2010年06月7日)">简单的JQuery聚光灯效果教程</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/17/1828/" title="用jQuery和CSS构建下拉菜单 (2009年06月17日)">用jQuery和CSS构建下拉菜单</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/13/4506/" title="推荐9个jquery手风琴菜单插件 (2010年07月13日)">推荐9个jquery手风琴菜单插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/11/4460/" title="推荐8个独特应用的JQuery拖放插件 (2010年07月11日)">推荐8个独特应用的JQuery拖放插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1864/" title="如何为您的博客图片添加水印效果？ (2009年06月23日)">如何为您的博客图片添加水印效果？</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/09/4451/" title="基本代码安全知识 (2010年07月9日)">基本代码安全知识</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/17/4583/" title="制作jquery文字提示插件 (2010年07月17日)">制作jquery文字提示插件</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/07/29/4797/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>实用jquery代码片段集合[上]</title>
		<link>http://www.iwanna.cn/archives/2010/07/29/4795/</link>
		<comments>http://www.iwanna.cn/archives/2010/07/29/4795/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 14:24:51 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=4795</guid>
		<description><![CDATA[加载google的jquery库

&#60;script type=&#8221;text/javascript&#8221; src=&#8221;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&#8221;&#62;&#60;/script&#62;

有利于加快加载速度（已经得到验证）。
修改图片src更新图片

$(imageobj).attr(&#8217;src&#8217;, $(imageobj).attr(&#8217;src&#8217;) + &#8216;?&#8217; + Math.random() );


（这是很实用的技巧，曾经有人问明河，为什么他已经修改了图片的src，但图片没变化呢？原因在于缓存，给图片路径后加个随机数参数即可。
加载多张图片，判断加载完成状态

var totalimages  = 10;
var loadedimages = 0;
$(&#8220;&#60;img/&#62;&#8221;).load(function() {
 ++loadedimages;
 if(loadedimages == totalimages){
 //全部图片加载完成时&#8230;..
 }
 });

双击不选中文本

var clearSelection =  function () {
 if(document.selection &#38;&#38; document.selection.empty) {
 document.selection.empty();
 } else if(window.getSelection) {
 var sel = window.getSelection();
 sel.removeAllRanges();
 }
 }

 $(element).bind(&#8216;dblclick&#8217;,function(event){
 clearSelection();
 });

对一个列表进行排序

&#60;ul&#62;
 &#60;li&#62;cloud&#60;/li&#62;
 &#60;li&#62;sun&#60;/li&#62;
 &#60;li&#62;rain&#60;/li&#62;
 &#60;li&#62;snow&#60;/li&#62;
&#60;/ul


var items = [...]]]></description>
			<content:encoded><![CDATA[<h5>加载google的<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>库</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>&lt;script type=&#8221;text/<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>&#8221; src=&#8221;http://ajax.googleapis.com/ajax/libs/<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>/1.4.2/<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>.min.js&#8221;&gt;&lt;/script&gt;</li>
</ol>
<p>有利于加快加载速度（已经得到验证）。</p>
<h5>修改图片src更新图片</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(imageobj).attr(&#8217;src&#8217;, $(imageobj).attr(&#8217;src&#8217;) + &#8216;?&#8217; + Math.random() );</li>
</ol>
<p><span id="more-4795"></span><br />
（这是很实用的技巧，曾经有人问明河，为什么他已经修改了图片的src，但图片没变化呢？原因在于缓存，给图片路径后加个随机数参数即可。</p>
<h5>加载多张图片，判断加载完成状态</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var totalimages  = 10;</li>
<li>var loadedimages = 0;</li>
<li>$(&#8220;&lt;img/&gt;&#8221;).load(function() {</li>
<li> ++loadedimages;</li>
<li> if(loadedimages == totalimages){</li>
<li> //全部图片加载完成时&#8230;..</li>
<li> }</li>
<li> });</li>
</ol>
<h5>双击不选中文本</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var clearSelection =  function () {</li>
<li> if(document.selection &amp;&amp; document.selection.empty) {</li>
<li> document.selection.empty();</li>
<li> } else if(window.getSelection) {</li>
<li> var sel = window.getSelection();</li>
<li> sel.removeAllRanges();</li>
<li> }</li>
<li> }</li>
<li></li>
<li> $(element).bind(&#8216;dblclick&#8217;,function(event){</li>
<li> clearSelection();</li>
<li> });</li>
</ol>
<h5>对一个列表进行排序</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>&lt;ul&gt;</li>
<li> &lt;li&gt;cloud&lt;/li&gt;</li>
<li> &lt;li&gt;sun&lt;/li&gt;</li>
<li> &lt;li&gt;rain&lt;/li&gt;</li>
<li> &lt;li&gt;snow&lt;/li&gt;</li>
<li>&lt;/ul</li>
</ol>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var items = $(&#8216;.to_order  li&#8217;).get();</li>
<li></li>
<li> items.sort(function(a,b){</li>
<li> var keyA = $(a).text();</li>
<li> var keyB = $(b).text();</li>
<li> if (keyA &lt; keyB) return -1;</li>
<li> if (keyA &gt; keyB) return 1;</li>
<li> return 0;</li>
<li> });</li>
<li> var ul = $(&#8216;.to_order&#8217;);</li>
<li> $.each(items, function(i, li){</li>
<li> ul.append(li);</li>
<li> });</li>
</ol>
<p>（中文无效）</p>
<h5>绑定右击事件</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(document).ready(function(){</li>
<li> $(document).bind(&#8220;contextmenu&#8221;,function(e){</li>
<li> return false;</li>
<li> });</li>
<li> });</li>
</ol>
<h5>扩展<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>的对象选择器</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$.extend($.expr[':'], {</li>
<li> //选择器名</li>
<li> moreThanAThousand : function (a){</li>
<li> return parseInt($(a).<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">html</a>()) &gt; 1000;</li>
<li> }</li>
<li> });</li>
<li> $(document).ready(function() {</li>
<li> $(&#8216;td:moreThanAThousand&#8217;).css(&#8216;background-color&#8217;, &#8216;#ff0000&#8242;);</li>
<li> });</li>
</ol>
<h5>检查对象是否存在</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>if ($(&#8220;#elementid&#8221;).length) {</li>
<li> //&#8230;&#8230;</li>
<li> }</li>
</ol>
<h5>取消一个ajax请求</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var req = $.ajax({</li>
<li> type:     &#8220;POST&#8221;,</li>
<li> url:     &#8220;someurl&#8221;,</li>
<li> data:     &#8220;id=1&#8243;,</li>
<li> success: function(){</li>
<li></li>
<li> }</li>
<li> });</li>
<li> //取消ajax请求</li>
<li> req.abort()</li>
</ol>
<h5>检查cookies是否可用</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(document).ready(function() {</li>
<li> var dt = new Date();</li>
<li> dt.setSeconds(dt.getSeconds() + 60);</li>
<li> document.cookie = &#8220;cookietest=1; expires=&#8221; + dt.toGMTString();</li>
<li> var cookiesEnabled = document.cookie.indexOf(&#8220;cookietest=&#8221;) != -1;</li>
<li> if(!cookiesEnabled){</li>
<li> //cookies不能用&#8230;&#8230;..</li>
<li> }</li>
<li> });</li>
</ol>
<h5>获取当前元素在元素集内的索引值</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(&#8220;ul &gt; li&#8221;).click(function () {</li>
<li> var index = $(this).prevAll().length;</li>
<li> });</li>
</ol>
<p>如果你用的是jquery1.4，明河推荐使用以下方法：</p>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(&#8220;ul &gt; li&#8221;).click(function () {</li>
<li> var index = $(this).index();</li>
<li> });</li>
</ol>
<h5>让一个元素相对于屏幕居中</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li><a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>.fn.center = function () {</li>
<li> this.css(&#8220;position&#8221;,&#8221;absolute&#8221;);</li>
<li> this.css(&#8220;top&#8221;, ( $(window).height() &#8211; this.height() ) / 2+$(window).scrollTop() + &#8220;px&#8221;);</li>
<li> this.css(&#8220;left&#8221;, ( $(window).width() &#8211;  this.width() ) / 2+$(window).scrollLeft() + &#8220;px&#8221;);</li>
<li> return this;</li>
<li> }</li>
<li> $(element).center();</li>
</ol>
<p>这个方法非常实用，明河严重推荐收藏</p>
<h5>获取当前页面的URL</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(document).ready(function() {</li>
<li> var pathname = window.location.pathname;</li>
<li> });</li>
</ol>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/07/29/4795/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/07/29/4795/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/07/29/4795/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/07/29/4795/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/07/29/4795/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/tags/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4797/" title="实用jquery代码片段集合[下] (2010年07月29日)">实用jquery代码片段集合[下]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/03/29/2605/" title="基于jQuery的新闻图片 (2010年03月29日)">基于jQuery的新闻图片</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/20/4644/" title="jQuery源码分析-each函数 (2010年07月20日)">jQuery源码分析-each函数</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/07/3765/" title="简单的JQuery聚光灯效果教程 (2010年06月7日)">简单的JQuery聚光灯效果教程</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/17/1828/" title="用jQuery和CSS构建下拉菜单 (2009年06月17日)">用jQuery和CSS构建下拉菜单</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/13/4506/" title="推荐9个jquery手风琴菜单插件 (2010年07月13日)">推荐9个jquery手风琴菜单插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/11/4460/" title="推荐8个独特应用的JQuery拖放插件 (2010年07月11日)">推荐8个独特应用的JQuery拖放插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1864/" title="如何为您的博客图片添加水印效果？ (2009年06月23日)">如何为您的博客图片添加水印效果？</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/09/4451/" title="基本代码安全知识 (2010年07月9日)">基本代码安全知识</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/17/4583/" title="制作jquery文字提示插件 (2010年07月17日)">制作jquery文字提示插件</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/07/29/4795/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery源码分析-each函数</title>
		<link>http://www.iwanna.cn/archives/2010/07/20/4644/</link>
		<comments>http://www.iwanna.cn/archives/2010/07/20/4644/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:25:46 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=4644</guid>
		<description><![CDATA[/*!
 * jQuery源码分析-each函数
 * jQuery版本:1.4.2
 *
 * &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
 * 函数介绍
 *
 * each函数通过jQuery.extend函数附加到jQuery对象中：
 * jQuery.extend({
 *     each: function() {}
 * });

 * 如果对jQuery.extend函数源码还不了解,可以参考《jQuery源码分析-extend函数》一文
 *
 * jQuery.each方法用于遍历一个数组或对象,并对当前遍历的元素进行处理
 * jQuery.each方法可以为处理函数增加附带的参数(带参数与不带参数的回调使用方法不完全一致)
 *
 * &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
 * 使用说明
 * each函数根据参数的类型实现的效果不完全一致：
 * 1、遍历对象(有附加参数)
 * $.each(Object, function(p1, p2) {
 *     this;    [...]]]></description>
			<content:encoded><![CDATA[<p>/*!<br />
 * <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>源码分析-each函数<br />
 * <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>版本:1.4.2<br />
 *<br />
 * &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 * 函数介绍<br />
 *<br />
 * each函数通过<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>.extend函数附加到<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>对象中：<br />
 * <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>.extend({<br />
 *     each: function() {}<br />
 * });<br />
<span id="more-4644"></span><br />
 * 如果对<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>.extend函数源码还不了解,可以参考《<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>源码分析-extend函数》一文<br />
 *<br />
 * <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>.each方法用于遍历一个数组或对象,并对当前遍历的元素进行处理<br />
 * <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>.each方法可以为处理函数增加附带的参数(带参数与不带参数的回调使用方法不完全一致)<br />
 *<br />
 * &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 * 使用说明<br />
 * each函数根据参数的类型实现的效果不完全一致：<br />
 * 1、遍历对象(有附加参数)<br />
 * $.each(Object, function(p1, p2) {<br />
 *     this;      //这里的this指向每次遍历中Object的当前属性值<br />
 *     p1; p2;    //访问附加参数<br />
 * }, ['参数1', '参数2']);<br />
 *<br />
 * 2、遍历数组(有附件参数)<br />
 * $.each(Array, function(p1, p2){<br />
 *     this;      //这里的this指向每次遍历中Array的当前元素<br />
 *     p1; p2;    //访问附加参数<br />
 * }, ['参数1', '参数2']);<br />
 *<br />
 * 3、遍历对象(没有附加参数)<br />
 * $.each(Object, function(name, value) {<br />
 *     this;     //this指向当前属性的值<br />
 *     name;     //name表示Object当前属性的名称<br />
 *     value;    //value表示Object当前属性的值<br />
 * });<br />
 *<br />
 * 4、遍历数组(没有附加参数)<br />
 * $.each(Array, function(i, value) {<br />
 *     this;     //this指向当前元素<br />
 *     i;        //i表示Array当前下标<br />
 *     value;    //value表示Array当前元素<br />
 * });<br />
 * &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 *<br />
 */<br />
//<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>.each(), $.each()<br />
//@param {Object}|{Array} object 需要遍历处理的对象或数组<br />
//@param {Function} callback 遍历处理回调函数<br />
//@param {Array} args callback回调函数的附加参数<br />
each: function(object, callback, args){</p>
<p>    //当需要遍历的是一个对象时,name变量用于记录对象的属性名<br />
    var name,    </p>
<p>    //当需要遍历的是一个数组时,i变量用于记录循环的数组下标<br />
    i = 0,    </p>
<p>    //遍历数组长度,当需要遍历的对象是一个数组时存储数组长度<br />
    //如果需要遍历的是一个对象,则length === undefined<br />
    length = object.length,    </p>
<p>    //检查第1个参数object是否是一个对象<br />
    //根据object.length排除数组类型，根据isFunction排除函数类型(因为函数也是对象)<br />
    isObj = length === undefined || <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>.isFunction(object);</p>
<p>    //回调函数具有附加参数时,执行第一个分支<br />
    //if(!!args) {<br />
    if (args) {</p>
<p>        //需要遍历的是一个对象<br />
        if (isObj) {</p>
<p>            //遍历对象属性,name是对象的属性名,再函数顶部已声明<br />
            //许多人不太习惯for(var name in object)方式,如果不进行声明,则name就会被定义为全局变量<br />
            for (name in object) {</p>
<p>                //调用callback回调函数,且回调函数的作用域表示为当前属性的值<br />
                //如:callback() {  this; //函数中的this指向当前属性值<br />
                //将each的第3个参数args作为回调函数的附加参数<br />
                if (callback.apply(object[name], args) === false) {</p>
<p>                    //如果在callback回调函数中使用return false;则不执行下一次循环<br />
                    break;<br />
                }<br />
            }<br />
        }<br />
        //需要遍历的是一个数组<br />
        else {</p>
<p>            //循环长度,循环变量i在函数顶部已定义<br />
            //循环变量的自增在循环内部执行<br />
            for (; i &amp;lt; length;) {</p>
<p>                //调用callback函数,与上面注释的callback调用一致<br />
                //此处callback函数中的this指向当前数组元素<br />
                if (callback.apply(object[i++], args) === false) {<br />
                    break;<br />
                }<br />
            }<br />
        }</p>
<p>    }<br />
    //回调函数没有附加参数时,执行第二个分支<br />
    else {</p>
<p>        //需要遍历的是一个对象<br />
        if (isObj) {</p>
<p>            //循环对象的属性名,name在函数顶部已定义<br />
            for (name in object) {</p>
<p>                //调用callback回调函数<br />
                //在不带参数的对象遍历中,作用域表示为当前属性的值<br />
                //且回调函数包含两个参数,第一个数当前属性名,第二个是当前属性值<br />
                //我觉得这句代码修改一下会更好用：if(callback.call(object, name, object[name]) === false) {<br />
                if (callback.call(object[name], name, object[name]) === false) {</p>
<p>                    //如果在callback回调函数中使用return false;则不执行下一次循环<br />
                    break;<br />
                }<br />
            }<br />
        }<br />
        //需要遍历的是一个数组<br />
        else {<br />
            //这里的for写法有点BT,解释为：<br />
            //var value = object[0];<br />
            //for(; i &amp;lt; length;) {<br />
            //    if(false === callback.call(value, i, value)) {<br />
            //        break;<br />
            //    }<br />
            //    value = object[++i];<br />
            //}<br />
            //同样,我觉得这里的代码稍加修改会更好用:<br />
            //for (; i &amp;lt; length &amp;&amp; false !== callback.call(object, i, object[i++]);) {<br />
            //}<br />
            for (var value = object[0]; i &amp;lt; length &amp;&amp; callback.call(value, i, value) !== false; value = object[++i]) {<br />
            }<br />
        }<br />
    }</p>
<p>    //这里返回遍历的对象或数组,但object没有被更改,因此一般不给$.each()赋值<br />
    //但是如果按照我在注释中所修改的写法来使用,且在callback回调函数中对this(即对object的引用)进行了修改<br />
    //则这里返回的object是被修改后的对象或数组<br />
    return object;<br />
}</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/07/20/4644/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/07/20/4644/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/07/20/4644/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/07/20/4644/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/07/20/4644/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/tags/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4797/" title="实用jquery代码片段集合[下] (2010年07月29日)">实用jquery代码片段集合[下]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4795/" title="实用jquery代码片段集合[上] (2010年07月29日)">实用jquery代码片段集合[上]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/03/29/2605/" title="基于jQuery的新闻图片 (2010年03月29日)">基于jQuery的新闻图片</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/07/3765/" title="简单的JQuery聚光灯效果教程 (2010年06月7日)">简单的JQuery聚光灯效果教程</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/17/1828/" title="用jQuery和CSS构建下拉菜单 (2009年06月17日)">用jQuery和CSS构建下拉菜单</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/13/4506/" title="推荐9个jquery手风琴菜单插件 (2010年07月13日)">推荐9个jquery手风琴菜单插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/11/4460/" title="推荐8个独特应用的JQuery拖放插件 (2010年07月11日)">推荐8个独特应用的JQuery拖放插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1864/" title="如何为您的博客图片添加水印效果？ (2009年06月23日)">如何为您的博客图片添加水印效果？</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/09/4451/" title="基本代码安全知识 (2010年07月9日)">基本代码安全知识</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/17/4583/" title="制作jquery文字提示插件 (2010年07月17日)">制作jquery文字提示插件</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/07/20/4644/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>基本代码安全知识</title>
		<link>http://www.iwanna.cn/archives/2010/07/09/4451/</link>
		<comments>http://www.iwanna.cn/archives/2010/07/09/4451/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 13:38:32 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[程序源码]]></category>
		<category><![CDATA[safe]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=4451</guid>
		<description><![CDATA[1.       防止SQL注入
a.       除了过滤单引号“ &#8217; ”，还要过滤数据库中的注释符号“ &#8211; ”。
b.       SQL语句中的字符串拼接，是很不靠谱的；实在要拼接，一定要从代码安全的角度多想想。

2.       文件上传漏洞
这是我头一次听说有这么一个漏洞。
现象：
假设我们使用的是IIS6.0及之前版本，当我们上传一个文件名为【熊猫烧香.aspx  .jpg】，那么存到服务器上的文件将会是【熊猫烧香.aspx】。
原因：
文件名【熊猫烧香.aspx .jpg】在“.aspx”和“.jpg”之间有一个蛮像空格的符号，其实是通过16进制编码器修改出来的“ \0 ”，IIS6.0及之前版本对于上传文件名的解析是从左向右的，如果在解析时遇到空 格，就认为这个文件名已经结束，于是存在服务器上的文件就是【熊猫烧香.aspx】。
解决方案：
我们一般都会对上传文件的后缀名进行检查，但是IIS的漏洞绕过了我们的检查，于是上传文件重命名就是一个不错的解决办法。我们把每次上传文件的后 缀拿出来，取个新名字，再加上原后缀，这个问题就可解决。
我在之前的开发，有过上传文件的程序，碰巧我对每个上传文件都进行了重命名，但我并不知道有这个漏洞，运气啊运气…
另外补充两点：
a.       如果文件名中包含特殊字符，比如【熊猫烧香又来了.aspx;不是吧.jpg】这是一个文件名，中间包含分号“ ;  ”，IIS6.0及之前版本在上传文件时正常，但是在解析时分号“ ; ”之后的文件名都不认。
b.       Apache服务器对上传文件的检查是从右向左的。
3.       Cookie欺骗
这个应该很简单，大家都知道从哪里可以拿到cookie，怎么伪装cookie，怎么把一台机器上的cookie移到另外一台…  Cookie很常用，特别在跨域访问时，我们常常会把用户名加密以后放在客户端。检查用户是否登录，就会去查看这个cookie，那么请别忘了在检查时加 上客户端ip一起校验，在一定程度上可以阻止cookie欺骗。
4.       XSS跨站脚本攻击
对于这种攻击，我们要对左右尖括号“&#60;、&#62;”、分号“ ; ”、单引号“ &#8217;  ”进行过滤。我们对于用户输入或者获取来自地址栏的参数值（Request.QueryString["XXX"]），不应支持HTML编码。处理的方法 有很多，&#8221;HttpUtility.UrlEncode”就是一种。
5.       其他漏洞
标签&#60;body&#62;有个属性&#8221;onload”，它会把属性中的值直接解析为javascript脚本，而不需 要&#8221;&#60;script&#62;&#60;/script&#62;”或&#8221;javascript:”。据说淘宝曾经因为不知道这个漏洞，而导致上万的用户受 到损失。

© 我想网 Akon 所有 , 2010. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：safe, Source-code, 程序源码

	您可能会感兴趣的其他文章
	
	服务器安全问题汇总 
	实用jquery代码片段集合[下] 
	实用jquery代码片段集合[上] 
	基于jQuery的新闻图片 
	一个JavaScript分页函数 
	WordPress显示相对日期时间的代码 
	web代码安全问题总结 
	PHP获取字符串编码类型 
	php 加密解密类(含公钥) 
	js中鼠标滚轮事件详解 



Feed enhanced by [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1.       防止SQL注入</strong></p>
<p>a.       除了过滤单引号“ &#8217; ”，还要过滤数据库中的注释符号“ &#8211; ”。</p>
<p>b.       SQL语句中的字符串拼接，是很不靠谱的；实在要拼接，一定要从代码安全的角度多想想。<br />
<span id="more-4451"></span><br />
<strong>2.       文件上传漏洞</strong></p>
<p>这是我头一次听说有这么一个漏洞。</p>
<p>现象：</p>
<p>假设我们使用的是IIS6.0及之前版本，当我们上传一个文件名为【熊猫烧香.aspx  .jpg】，那么存到服务器上的文件将会是【熊猫烧香.aspx】。</p>
<p>原因：</p>
<p>文件名【熊猫烧香.aspx .jpg】在“.aspx”和“.jpg”之间有一个蛮像空格的符号，其实是通过16进制编码器修改出来的“ \0 ”，IIS6.0及之前版本对于上传文件名的解析是从左向右的，如果在解析时遇到空 格，就认为这个文件名已经结束，于是存在服务器上的文件就是【熊猫烧香.aspx】。</p>
<p>解决方案：</p>
<p>我们一般都会对上传文件的后缀名进行检查，但是IIS的漏洞绕过了我们的检查，于是上传文件重命名就是一个不错的解决办法。我们把每次上传文件的后 缀拿出来，取个新名字，再加上原后缀，这个问题就可解决。</p>
<p>我在之前的开发，有过上传文件的程序，碰巧我对每个上传文件都进行了重命名，但我并不知道有这个漏洞，运气啊运气…</p>
<p>另外补充两点：</p>
<p>a.       如果文件名中包含特殊字符，比如【熊猫烧香又来了.aspx;不是吧.jpg】这是一个文件名，中间包含分号“ ;  ”，IIS6.0及之前版本在上传文件时正常，但是在解析时分号“ ; ”之后的文件名都不认。</p>
<p>b.       Apache服务器对上传文件的检查是从右向左的。</p>
<p><strong>3.       Cookie欺骗</strong></p>
<p>这个应该很简单，大家都知道从哪里可以拿到cookie，怎么伪装cookie，怎么把一台机器上的cookie移到另外一台…  Cookie很常用，特别在跨域访问时，我们常常会把用户名加密以后放在客户端。检查用户是否登录，就会去查看这个cookie，那么请别忘了在检查时加 上客户端ip一起校验，在一定程度上可以阻止cookie欺骗。</p>
<p><strong>4.       XSS跨站脚本攻击</strong></p>
<p>对于这种攻击，我们要对左右尖括号“&lt;、&gt;”、分号“ ; ”、单引号“ &#8217;  ”进行过滤。我们对于用户输入或者获取来自地址栏的参数值（Request.QueryString["XXX"]），不应支持<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a>编码。处理的方法 有很多，&#8221;HttpUtility.UrlEncode”就是一种。</p>
<p><strong>5.       其他漏洞</strong></p>
<p>标签&lt;body&gt;有个属性&#8221;onload”，它会把属性中的值直接解析为<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>脚本，而不需 要&#8221;&lt;script&gt;&lt;/script&gt;”或&#8221;<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>:”。据说淘宝曾经因为不知道这个漏洞，而导致上万的用户受 到损失。</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/07/09/4451/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/07/09/4451/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/07/09/4451/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/07/09/4451/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/07/09/4451/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/tags/safe/" title="safe" rel="tag nofollow">safe</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/07/08/4406/" title="服务器安全问题汇总 (2010年07月8日)">服务器安全问题汇总</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4797/" title="实用jquery代码片段集合[下] (2010年07月29日)">实用jquery代码片段集合[下]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4795/" title="实用jquery代码片段集合[上] (2010年07月29日)">实用jquery代码片段集合[上]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/03/29/2605/" title="基于jQuery的新闻图片 (2010年03月29日)">基于jQuery的新闻图片</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3772/" title="一个JavaScript分页函数 (2010年06月8日)">一个JavaScript分页函数</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/03/09/2542/" title="WordPress显示相对日期时间的代码 (2010年03月9日)">WordPress显示相对日期时间的代码</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/08/4404/" title="web代码安全问题总结 (2010年07月8日)">web代码安全问题总结</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/21/2041/" title="PHP获取字符串编码类型 (2009年07月21日)">PHP获取字符串编码类型</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3820/" title="php 加密解密类(含公钥) (2010年06月8日)">php 加密解密类(含公钥)</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/02/04/2492/" title="js中鼠标滚轮事件详解 (2010年02月4日)">js中鼠标滚轮事件详解</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/07/09/4451/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS实现HTML元素透明的那些事</title>
		<link>http://www.iwanna.cn/archives/2010/06/10/3858/</link>
		<comments>http://www.iwanna.cn/archives/2010/06/10/3858/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 14:28:40 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=3858</guid>
		<description><![CDATA[CSS3草案中定义了{opacity:&#60;length&#62;  &#124; inherit;}来声明元素的透明度，这已经得到了大多数现代浏览器的支持，而IE则很早通过特定的私有属性filter来 实现的，所以HTML元素的透明效果已经无处不在了。首先看看A级浏览器所支持的用CSS实现元素透明的方案：



浏览器
最低
版本
方案


Internet Explorer
4.0
filter: alpha(opacity=xx);


5.5
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=xx);


8.0
filter: "alpha(opacity=xx)";
filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=xx)";
-ms-filter: "alpha(opacity=xx)";
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=30)";


Firefox (Gecko)
0.9 (1.7)
opacity


Opera
9.0
opacity


Safari (WebKit)
1.2 (125)
opacity




实际上在IE8中，-ms-filter是filter的别名，两者区别是-ms- filter的属相值必须被单引号或双引号包围，而filter中则不是必须，而在IE8之前的版本中，filter的属性值必须不被单引号或双 引号包围。
IE中的HTML元素要实现透明，则其必须具备layout，这样的元素有仅可读的属性hasLayout， 且其值为true。具体情况如下：

body、img、table、tr、th、td等 元素的hasLayout一直为true。
type为text、button、file或select的input的hasLayout一 直为true。
设置{position:absolute}的元素的hasLayout为true
设置{float:left&#124;right}的元素的hasLayout为true
设置{display:inline-block}的元素的hasLayout为true
设置{height:xx}或{width:xx}的元素必须具体以下两个条件之一，其hasLayout才 能为true：

IE8兼容模式和IE8以前的浏览器中，在标准(strict)模式下其display的值是block， 如demo3就 不行。
元素在怪癖模式（compat mode）下。


设置了{zoom:xx}的元素在IE8的兼容模式或IE8之前的浏览器中其hasLayout为true， 但在IE8的标准模式下则不会触发hasLayout。
设置了{writing-mode:tb-rl}的元素的hasLayout为true。
元素的contentEditable的 属性值为true。
在IE8标准模式下设置了{display:block}的元素的hasLayout一直 为true，如demo8。

关于hasLayout的更多详情可以看Exploring  Internet Explorer “HasLayout” Overview和On having  layout
从上面就可以看出IE实现HTML元素的透明如此混乱，为了向下兼容和自己的私有属性让IE上实现元素透明有多种方式，比如CSS  Opacity实例中的demo1到demo8，虽然IE 团队推荐实现透明的方式是：
{
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
  opacity: .5;
}
而目前简单最好用的实现方式是如CSS  Opacity中demo4这样：
{
    filter:alpha(opacity=30);
  [...]]]></description>
			<content:encoded><![CDATA[<p>CSS3草案中定义了<a href="http://www.w3.org/TR/css3-color/#transparency"><code>{opacity:&lt;length&gt;  | inherit;}</code></a>来声明元素的透明度，这已经得到了大多数现代浏览器的支持，而IE则很早通过特定的私有属性<a href="http://msdn.microsoft.com/en-us/library/ms532967%28VS.85%29.aspx"><code>filter</code></a>来 实现的，所以<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a>元素的透明效果已经无处不在了。首先看看<a href="http://developer.yahoo.com/yui/articles/gbs/">A级浏览器</a>所支持的用<a href="http://www.iwanna.cn/archives/2010/06/10/3858/">CSS实现元素透明的方案</a>：</p>
<table border="0">
<tbody>
<tr>
<th>浏览器</th>
<th>最低<br />
版本</th>
<th>方案</th>
</tr>
<tr>
<th rowspan="3">Internet Explorer</th>
<td>4.0</td>
<td><code>filter: alpha(opacity=xx);</code></td>
</tr>
<tr>
<td>5.5</td>
<td><code>filter: progid:DXImageTransform.Microsoft.Alpha(opacity=xx);</code></td>
</tr>
<tr>
<td>8.0</td>
<td><code>filter: "alpha(opacity=xx)";<br />
filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=xx)";<br />
-ms-filter: "alpha(opacity=xx)";<br />
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=30)";</code></td>
</tr>
<tr>
<th>Firefox (Gecko)</th>
<td>0.9 (1.7)</td>
<td><code>opacity</code></td>
</tr>
<tr>
<th>Opera</th>
<td>9.0</td>
<td><code>opacity</code></td>
</tr>
<tr>
<th>Safari (WebKit)</th>
<td>1.2 (125)</td>
<td><code>opacity</code></td>
</tr>
</tbody>
</table>
<p><span id="more-3858"></span><br />
实际上在IE8中，-ms-filter是filter的别名，两者区别是<a href="http://msdn.microsoft.com/en-us/library/ms530752%28VS.85%29.aspx">-ms- filter的属相值必须被单引号或双引号包围</a>，而filter中则不是必须，而在IE8之前的版本中，filter的属性值必须不被单引号或双 引号包围。</p>
<p id="hasLayout">IE中的<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a>元素要实现透明，则其必须具备layout，这样的元素有仅可读的属性<a href="http://msdn.microsoft.com/en-us/library/ms530764%28VS.85%29.aspx">hasLayout</a>， 且其值为true。具体情况如下：</p>
<ol>
<li><code>body</code>、<code>img</code>、<code>table</code>、<code>tr</code>、<code>th</code>、<code>td</code>等 元素的<code>hasLayout</code>一直为<code>true</code>。</li>
<li><code>type</code>为<code>text</code>、<code>button</code>、<code>file</code>或<code>select</code>的<code>input</code>的<code>hasLayout</code>一 直为<code>true</code>。</li>
<li>设置<code>{position:absolute}</code>的元素的<code>hasLayout</code>为<code>true</code></li>
<li>设置<code>{float:left|right}</code>的元素的<code>hasLayout</code>为<code>true</code></li>
<li>设置<code>{display:inline-block}</code>的元素的<code>hasLayout</code>为<code>true</code></li>
<li>设置<code>{height:xx}</code>或<code>{width:xx}</code>的元素必须具体以下两个条件之一，其<code>hasLayout</code>才 能为<code>true</code>：
<ol>
<li>IE8兼容模式和IE8以前的浏览器中，在标准(strict)模式下其<code>display</code>的值是<code>block</code>， 如<a href="http://dancewithnet.com/lab/2009/css-opacity/#demo3">demo3</a>就 不行。</li>
<li>元素在怪癖模式（compat mode）下。</li>
</ol>
</li>
<li>设置了<code>{zoom:xx}</code>的元素在IE8的兼容模式或IE8之前的浏览器中其<code>hasLayout</code>为<code>true</code>， 但在IE8的标准模式下则不会触发<code>hasLayout</code>。</li>
<li>设置了<code>{writing-mode:tb-rl}</code>的元素的<code>hasLayout</code>为<code>true</code>。</li>
<li>元素的<a href="http://msdn.microsoft.com/en-us/library/ms537837%28VS.85%29.aspx"><code>contentEditable</code></a>的 属性值为<code>true</code>。</li>
<li>在IE8标准模式下设置了<code>{display:block}</code>的元素的<code>hasLayout</code>一直 为<code>true</code>，如<a href="http://dancewithnet.com/lab/2009/css-opacity/#demo8">demo8</a>。</li>
</ol>
<p>关于hasLayout的更多详情可以看<a href="http://msdn.microsoft.com/en-us/library/bb250481%28VS.85%29.aspx">Exploring  Internet Explorer “HasLayout” Overview</a>和<a href="http://www.satzansatz.de/cssd/onhavinglayout.html">On having  layout</a></p>
<p>从上面就可以看出IE实现<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a>元素的透明如此混乱，为了向下兼容和自己的私有属性让IE上实现元素透明有多种方式，比如<a href="http://dancewithnet.com/lab/2009/css-opacity/">CSS  Opacity实例中的demo1到demo8</a>，虽然<a href="http://blogs.msdn.com/ie/archive/2008/09/08/microsoft-css-vendor-extensions.aspx">IE 团队推荐实现透明的方式</a>是：</p>
<pre><code>{
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
  opacity: .5;
}</code></pre>
<p>而目前简单最好用的实现方式是<a href="http://dancewithnet.com/lab/2009/css-opacity/">如CSS  Opacity中demo4这样</a>：</p>
<pre><code>{
    filter:alpha(opacity=30);
    opacity:.3;
}</code></pre>
<p>实际上目前最流行的<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>框架的设置样式方法都是应用这种方式，并且针对IE设置了<code>{zoom:1}</code>来让 元素的<code>hasLayout</code>为<code>true</code>，但在IE8的标准模式下<code>zoom</code>并 不能触发<code>hasLayout</code>，所以利用它们设置<code>hasLayout</code>为<code>false</code>的 元素的透明度时在IE8的标准模式下是失败的，这个bug在<a href="http://developer.yahoo.com/yui/">YUI</a><ins datetime="2009-09-09T09:38:41+08:00">（我已经给YUI团队提交了这个bug，他们会在<a href="http://yuilibrary.com/projects/yui2/ticket/2528440">下个版本修复</a>，最新的 2.8.0中依旧存在，期待2.9.0吧）</ins>、<a href="http://prototypejs.org/">Prototype</a>、<a href="http://jquery.com/">jQuery</a>和<a href="http://mootools.net/">Mootools</a>的 最新版本中都存在，具体请在IE8标准模式下看<a href="http://dancewithnet.com/lab/2009/css-opacity/#demo9">demo9到demo11</a>。 同样由于在IE8中设置透明度的方式多种多样，所以利用<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>获取<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a>元素的透明度值需要考虑多种情况，YUI完美解决了这个问 题，Prototype比<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>稍微周全一点，而Mootools直接是<a href="https://mootools.lighthouseapp.com/projects/2706/tickets/707-getstyleopacity-always-returns-1">bug</a>， 具体可以<a href="http://dancewithnet.com/lab/2009/css-opacity/">在IE下看demo1到demo8</a>的 演示。从这个角度给4个框架来个排名的话，YUI第一、Prototype第二、<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>第三、Mootools垫底。</p>
<p>我简单的实现了设置和获取Opacity的函数，可以避开上面框架存在的bug，请<a href="http://dancewithnet.com/lab/2009/css-opacity/#demo12">在IE8标准模式下看 demo12</a>：</p>
<pre><code>//设置CSS opacity 属性的函数，解决IE8的问题
var setOpacity = function(el,i){
  if(window.getComputedStyle){// for non-IE
    el.style.opacity = i;
  }else if(document.documentElement.currentStyle){ // for IE
    if(!el.currentStyle.hasLayout){
      el.style.zoom = 1;
    }
    if(!el.currentStyle.hasLayout){ //在IE8中zoom不生效，所以再次设置inline-block
      el.style.display = 'inline-block';
    }
    try{
      //测试是否已有filter
      //http://msdn.microsoft.com/en-us/library/ms532847%28VS.85%29.aspx
      if(el.filters){
        if(el.filters('alpha')){
	  el.filters('alpha').opacity = i * 100;
	}else{
	  el.style.filter += 'alpha(opacity='+ i * 100 +')';
	 }
       }
    }catch(e){
      el.style.filter = 'alpha(opacity='+ i * 100 +')';
    }
  }
}

//获取CSS opacity 属性值的函数
//借鉴自http://developer.yahoel.com/yui/docs/YAHOO.util.Dom.<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">html</a>#method_getStyle
var getOpacity = function(el){
  var value;
  if(window.getComputedStyle){
    value = el.style.opacity;
    if(!value){
      value = el.ownerDocument.defaultView.getComputedStyle(el,null)['opacity'];
    }
    return value;
  }else if(document.documentElement.currentStyle){
    value = 100;
    try { // will error if no DXImageTransform
        value = el.filters['DXImageTransform.Microsoft.Alpha'].opacity;
    } catch(e) {
        try { // make sure its in the document
            value = el.filters('alpha').opacity;
        } catch(err) {
        }
    }
    return value / 100;
  }
}
</code></pre>
<p>不得不说，这些事都是IE整出来的……</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/06/10/3858/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/06/10/3858/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/06/10/3858/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/06/10/3858/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/06/10/3858/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/css/" title="CSS" rel="tag nofollow">CSS</a>, <a href="http://www.iwanna.cn/tags/css/" title="CSS" rel="tag nofollow">CSS</a>, <a href="http://www.iwanna.cn/topics/ui/html/" title="HTML" rel="tag nofollow">HTML</a>, <a href="http://www.iwanna.cn/tags/html/" title="HTML" rel="tag nofollow">HTML</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/29/894/" title="页面输出时一些常用的小技巧 (2009年04月29日)">页面输出时一些常用的小技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/21/4111/" title="前端开发常见图片格式详解 (2010年06月21日)">前端开发常见图片格式详解</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/03/886/" title="43个PSD转XHTML, CSS创建布局及导航辅导教程,解析事件背后的每一个步骤 (2009年05月3日)">43个PSD转XHTML, CSS创建布局及导航辅导教程,解析事件背后的每一个步骤</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/20/713/" title="24 个漂亮的个性化 HTML 表单技术 (2009年04月20日)">24 个漂亮的个性化 HTML 表单技术</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/18/4562/" title="13个利用CSS3+HTML5实现的令人惊叹的例子 (2010年07月18日)">13个利用CSS3+HTML5实现的令人惊叹的例子</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/16/4013/" title="10个绝妙的HTML5，CSS和Javascript示例 (2010年06月16日)">10个绝妙的HTML5，CSS和Javascript示例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/08/253/" title="100 个高质量的 XHTML/CSS 模板（中） (2009年04月8日)">100 个高质量的 XHTML/CSS 模板（中）</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/08/255/" title="100 个高质量的 XHTML/CSS 模板（下） (2009年04月8日)">100 个高质量的 XHTML/CSS 模板（下）</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/08/251/" title="100 个高质量的 XHTML/CSS 模板（上） (2009年04月8日)">100 个高质量的 XHTML/CSS 模板（上）</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/16/2019/" title="面向对象的CSS (2009年07月16日)">面向对象的CSS</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/06/10/3858/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php 加密解密类(含公钥)</title>
		<link>http://www.iwanna.cn/archives/2010/06/08/3820/</link>
		<comments>http://www.iwanna.cn/archives/2010/06/08/3820/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 14:34:40 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=3820</guid>
		<description><![CDATA[&#60;?php
class  Crypt{
protected $key = “”;    //公钥
private function keyED($txt,$encrypt_key)
{
$encrypt_key = md5($encrypt_key);
$ctr=0;
$tmp = “”;
for ($i=0;$i&#60;strlen($txt);$i++)
{
if ($ctr==strlen($encrypt_key)){
$ctr=0;
}
$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
$ctr++;
}
return $tmp;
}

public function encrypt($txt,$key=”&#8221;)
{
if(empty($key)){
$key=$this-&#62;key;
}
srand((double)microtime()*1000000);
$encrypt_key = md5(rand(0,32000));
$ctr=0;
$tmp = “”;
for ($i=0;$i&#60;strlen($txt);$i++)
{
if ($ctr==strlen($encrypt_key)){
$ctr=0;
}
$tmp.= substr($encrypt_key,$ctr,1) .
(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
$ctr++;
}
return $this-&#62;keyED($tmp,$key);
}
public function decrypt($txt,$key=”&#8221;)
{
if(empty($key)){
$key=$this-&#62;key;
}
$txt = $this-&#62;keyED($txt,$key);
$tmp = “”;
for ($i=0;$i&#60;strlen($txt);$i++)
{
$md5 = substr($txt,$i,1);
$i++;
$tmp.= (substr($txt,$i,1) ^ $md5);
}
return $tmp;
}
public function setKey($key)
{
if(empty($key)){
return null;
}
$this-&#62;key=$key;
}
public function getKey()
{
return $this-&#62;key;
}
}
$string = “http://www.52blogger.com”;
$crypt= new Crypt();
$crypt-&#62;setKey(“http://www.52blogger.com”);
$enc_text = [...]]]></description>
			<content:encoded><![CDATA[<p>&lt;?<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">php</a><br />
class  Crypt{</p>
<p>protected $key = “”;    //公钥</p>
<p>private function keyED($txt,$encrypt_key)<br />
{<br />
$encrypt_key = md5($encrypt_key);<br />
$ctr=0;<br />
$tmp = “”;<br />
for ($i=0;$i&lt;strlen($txt);$i++)<br />
{<br />
if ($ctr==strlen($encrypt_key)){<br />
$ctr=0;<br />
}<br />
$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);<br />
$ctr++;<br />
}<br />
return $tmp;<br />
}<br />
<span id="more-3820"></span><br />
public function encrypt($txt,$key=”&#8221;)<br />
{<br />
if(empty($key)){<br />
$key=$this-&gt;key;<br />
}<br />
srand((double)microtime()*1000000);<br />
$encrypt_key = md5(rand(0,32000));<br />
$ctr=0;<br />
$tmp = “”;<br />
for ($i=0;$i&lt;strlen($txt);$i++)<br />
{<br />
if ($ctr==strlen($encrypt_key)){<br />
$ctr=0;<br />
}<br />
$tmp.= substr($encrypt_key,$ctr,1) .<br />
(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));<br />
$ctr++;<br />
}<br />
return $this-&gt;keyED($tmp,$key);<br />
}</p>
<p>public function decrypt($txt,$key=”&#8221;)<br />
{<br />
if(empty($key)){<br />
$key=$this-&gt;key;<br />
}</p>
<p>$txt = $this-&gt;keyED($txt,$key);<br />
$tmp = “”;<br />
for ($i=0;$i&lt;strlen($txt);$i++)<br />
{<br />
$md5 = substr($txt,$i,1);<br />
$i++;<br />
$tmp.= (substr($txt,$i,1) ^ $md5);<br />
}<br />
return $tmp;<br />
}</p>
<p>public function setKey($key)<br />
{<br />
if(empty($key)){<br />
return null;<br />
}<br />
$this-&gt;key=$key;<br />
}</p>
<p>public function getKey()<br />
{<br />
return $this-&gt;key;<br />
}</p>
<p>}<br />
$string = “http://www.52blogger.com”;<br />
$crypt= new Crypt();<br />
$crypt-&gt;setKey(“http://www.52blogger.com”);<br />
$enc_text = $crypt-&gt;encrypt($string,$crypt-&gt;getKey());<br />
$dec_text = $crypt-&gt;decrypt($enc_text,$crypt-&gt;getKey());<br />
echo “加密前 : $string &lt;br/&gt;\n”;<br />
echo “加密后 : $enc_text &lt;br/&gt;\n”;<br />
echo “解密后 : $dec_text \n”;<br />
?&gt;</p>
<p>执行结果:</p>
<p>加密前 : http://www.52blogger.com<br />
加密后 : hSzQ’Z* kP~ y (WpVs   = 6Q3 gZbR5Qk h tZ( f=Zm<br />
解密后 : http://www.52blogger.com</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/06/08/3820/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/06/08/3820/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/06/08/3820/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/06/08/3820/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/06/08/3820/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/develope/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://www.iwanna.cn/tags/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/07/21/2041/" title="PHP获取字符串编码类型 (2009年07月21日)">PHP获取字符串编码类型</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/01/26/2468/" title="9个PHP库简介和下载 (2010年01月26日)">9个PHP库简介和下载</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/01/26/2470/" title="21个实用便利的PHP代码 (2010年01月26日)">21个实用便利的PHP代码</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/02/03/2483/" title="10个免费开源微博客程序 (2010年02月3日)">10个免费开源微博客程序</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/02/149/" title="设计模式之单例模式 (2009年04月2日)">设计模式之单例模式</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/31/2088/" title="论述PHP开发框架: What, When, Why and Which? (2009年07月31日)">论述PHP开发框架: What, When, Why and Which?</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3767/" title="腾讯PHP程序员面试题目 (2010年06月8日)">腾讯PHP程序员面试题目</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/03/171/" title="简易Wordpress模板代码帮助手册中文版 (2009年04月3日)">简易Wordpress模板代码帮助手册中文版</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3769/" title="用PHP数组对百万数据进行排重 (2010年06月8日)">用PHP数组对百万数据进行排重</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/05/1933/" title="用 PHP 读取和编写 XML DOM (2009年07月5日)">用 PHP 读取和编写 XML DOM</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/06/08/3820/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个JavaScript分页函数</title>
		<link>http://www.iwanna.cn/archives/2010/06/08/3772/</link>
		<comments>http://www.iwanna.cn/archives/2010/06/08/3772/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 01:14:37 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=3772</guid>
		<description><![CDATA[function PageList(totalnum, pagesize, curpage, url)
{
  if(curpage&#60;0)
    curpage=0;
  var maxpage = 0;
  maxpage=parseInt((totalnum+pagesize-1)/pagesize);
  maxnum = maxpage;
  if(curpage&#62;1)
  {
    document.write('&#60;a href="'+url+"1"+'"&#62;首页&#60;/a&#62;');
    document.write('&#60;a href="'+url+(curpage-1)+'"&#62;上一页&#60;/a&#62;');
  } 

  var start = 1;
  var end = 11;
  if(maxpage &#60;= 11)
  {
 [...]]]></description>
			<content:encoded><![CDATA[<pre>function PageList(totalnum, pagesize, curpage, url)
{
  if(curpage&lt;0)
    curpage=0;
  var maxpage = 0;
  maxpage=parseInt((totalnum+pagesize-1)/pagesize);
  maxnum = maxpage;
  if(curpage&gt;1)
  {
    document.write('&lt;a href="'+url+"1"+'"&gt;首页&lt;/a&gt;');
    document.write('&lt;a href="'+url+(curpage-1)+'"&gt;上一页&lt;/a&gt;');
  } 

  var start = 1;
  var end = 11;
  if(maxpage &lt;= 11)
  {
    end = maxpage;
  }
  else
  {
    if(curpage &gt; 6)
    {
      start = curpage - 5;
      end = start + 10;
    }
    if(curpage &gt; maxpage - 6)
    {
      start = maxpage - 10;
      end = maxpage;
    }
  } 

  for(var i=start; i&lt;=end; i++)
  {
    if(i==curpage)
      document.write('&lt;strong&gt;'+i+'&lt;/strong&gt;');
    else
      document.write('&lt;a href="'+url+i+'"&gt;['+i+']&lt;/a&gt;');
  } 

  if(curpage&lt;maxnum)
  {
    document.write('&lt;a href="'+url+(curpage+1)+'"&gt;下一页&lt;/a&gt;');
    document.write('&lt;a href="'+url+maxnum+'"&gt;尾页&lt;/a&gt;');
  }
}</pre>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/06/08/3772/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/06/08/3772/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/06/08/3772/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/06/08/3772/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/06/08/3772/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/02/04/2492/" title="js中鼠标滚轮事件详解 (2010年02月4日)">js中鼠标滚轮事件详解</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/12/17/2430/" title="JavaScript中的64位加密及解密 (2009年12月17日)">JavaScript中的64位加密及解密</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/29/894/" title="页面输出时一些常用的小技巧 (2009年04月29日)">页面输出时一些常用的小技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/79/" title="表单元素：40个CSS/JS风格和功能技术处理 (2009年03月31日)">表单元素：40个CSS/JS风格和功能技术处理</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/06/4383/" title="网页打开新窗口的解决方案,拒绝屏蔽 (2010年07月6日)">网页打开新窗口的解决方案,拒绝屏蔽</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/04/29/2874/" title="相见恨晚的一些 JavaScript 技巧 (2010年04月29日)">相见恨晚的一些 JavaScript 技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/09/18/2252/" title="用JS制作的网页版NES模拟器 IE8直接出局 (2009年09月18日)">用JS制作的网页版NES模拟器 IE8直接出局</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/77/" title="用css+js控制图片大小的方法 (2009年03月31日)">用css+js控制图片大小的方法</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/02/17/2516/" title="有关 JavaScript 的 10 件让人费解的事情 (2010年02月17日)">有关 JavaScript 的 10 件让人费解的事情</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/11/29/2396/" title="新 API 寻求让 JavaScript 操作本地文件 (2009年11月29日)">新 API 寻求让 JavaScript 操作本地文件</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/06/08/3772/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用参数化查询防止SQL注入漏洞</title>
		<link>http://www.iwanna.cn/archives/2010/06/03/3657/</link>
		<comments>http://www.iwanna.cn/archives/2010/06/03/3657/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 15:31:06 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=3657</guid>
		<description><![CDATA[SQL注入漏洞曾经是Web应用程序的噩梦，CMS、BBS、Blog无一不曾受其害。
SQL注入的原理
以往在Web应用程序访问数据库时一般是采取拼接字符串的形式，比如登录的时候就是根据用户名和密码去查询：
string sql = "SELECT TOP 1 * FROM [User] WHERE UserName = ‘” +  userName + “‘ AND Password = ‘” + password + “‘”;
其中userName和password两个变量的值是由用户输入的。在userName和password都合法的情况下，这自然没有问题，但是 用户输入是不可信的，一些恶意用户只要用一些技巧，就可以绕过用户名、密码登录。
假设password的值是”1′ or ‘1′ = ‘1“，userName的值随便取，比如是”abc”，那变量sql的 值就是：

"SELECT TOP 1 * FROM [User] WHERE UserName = ‘abc’ AND Password  = ‘1′ or ‘1′ = ‘1′”
由于’1′ =  ‘1′恒为真，因此只要User表中有数据，不管UserName、Password的值是否匹配，这条SQL命令准能查出记录来。就这样，登录系统就被 破解了。
以往的防御方式
以前对付这种漏洞的方式主要有三种：

字符串检测：限定内容只能由英文、数字等常规字符，如果检查到用户输入有特殊字符，直接拒绝。但缺点是，系统 中不可避免地会有些内容包含特殊字符，这时候总不能拒绝入库。
字符串替换：把危险字符替换成其他字符，缺点是危险字符可能有很多，一一枚举替换相当麻烦，也可能有漏网之 [...]]]></description>
			<content:encoded><![CDATA[<p>SQL注入漏洞曾经是Web应用程序的噩梦，CMS、BBS、Blog无一不曾受其害。</p>
<h3>SQL注入的原理</h3>
<p>以往在Web应用程序访问数据库时一般是采取<strong>拼接字符串</strong>的形式，比如登录的时候就是根据用户名和密码去查询：</p>
<p><code>string sql = "SELECT TOP 1 * FROM [User] WHERE UserName = ‘” +  userName + “‘ AND Password = ‘” + password + “‘”;</code></p>
<p>其中userName和password两个变量的值是由用户输入的。在userName和password都合法的情况下，这自然没有问题，但是 用户输入是不可信的，一些恶意用户只要用一些技巧，就可以绕过用户名、密码登录。</p>
<p>假设password的值是”<em>1′ or ‘1′ = ‘1</em>“，userName的值随便取，比如是”abc”，那变量sql的 值就是：<br />
<span id="more-3657"></span><br />
<code>"SELECT TOP 1 * FROM [User] WHERE UserName = ‘abc’ AND Password  = ‘1′ or ‘1′ = ‘1′”</code></p>
<p>由于’1′ =  ‘1′恒为真，因此只要User表中有数据，不管UserName、Password的值是否匹配，这条SQL命令准能查出记录来。就这样，登录系统就被 破解了。</p>
<h3>以往的防御方式</h3>
<p>以前对付这种漏洞的方式主要有三种：</p>
<ul>
<li><strong>字符串检测</strong>：限定内容只能由英文、数字等常规字符，如果检查到用户输入有特殊字符，直接拒绝。但缺点是，系统 中不可避免地会有些内容包含特殊字符，这时候总不能拒绝入库。</li>
<li><strong>字符串替换</strong>：把危险字符替换成其他字符，缺点是危险字符可能有很多，一一枚举替换相当麻烦，也可能有漏网之 鱼。</li>
<li><strong>存储过程</strong>：把参数传到存储过程进行处理，但并不是所有数据库都支持存储过程。如果存储过程中执行的命令也是通 过拼接字符串出来的，还是会有漏洞。</li>
</ul>
<h3>参数化查询</h3>
<p>近年来，自从参数化查询出现后，SQL注入漏洞已成明日黄花。</p>
<p>参数化查询（Parameterized Query 或 Parameterized  Statement）是访问数据库时，在需要填入数值或数据的地方，使用参数 (Parameter) 来给值。</p>
<p>在使用参数化查询的情况下，数据库服务器不会将参数的内容视为SQL指令的一部份来处理，而是在<strong>数据库完成SQL指令的编译后，才 套用参数运行</strong>，因此就算参数中含有指令，也不会被数据库运行。Access、SQL  Server、<a href="http://www.iwanna.cn/tags/mysql/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with MySQL">MySQL</a>、SQLite等常用数据库都支持参数化查询。</p>
<h4>在ASP程序中使用参数化查询</h4>
<p>ASP环境下的参数化查询主要由<strong>Connection对象</strong>和<strong>Command对象</strong>完 成。</p>
<p>Access数据库只支持匿名参数，在传入参数的位置用问号代替即可。SQL  Server数据库虽然支持匿名和非匿名的参数，但是在ASP中也仅能使用匿名参数。</p>
<p><code>var conn = Server.CreateObject("ADODB.Connection");<br />
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +  Server.MapPath("Test.mdb");<br />
conn.Open();</code></p>
<p>var cmd = Server.CreateObject(&#8220;ADODB.Command&#8221;);<br />
cmd.ActiveConnection = conn;<br />
cmd.CommandType = 1;<br />
cmd.CommandText = &#8220;SELECT TOP 1 * FROM [User] WHERE <strong>UserName = ?  AND Password = ?</strong>“;<br />
cmd.Parameters.Append(cmd.CreateParameter(”@UserName”, 200, 1, 20,  “user01″));<br />
cmd.Parameters.Append(cmd.CreateParameter(”@Password”, 200, 1, 16,  “123456″));</p>
<p>var rs = cmd.Execute();<br />
Response.Write(rs(”UserId”).value);</p>
<p>rs.Close();<br />
conn.Close();</p>
<h4>在ASP.NET程序中使用参数化查询</h4>
<p>ASP.NET环境下的查询化查询也是通过Connection对象和Command对象完成。如果数据库是SQL  Server，就可以用有名字的参数了，格式是<strong>“@”字符加上参数名</strong>。</p>
<p><code>SqlConnection conn = new  SqlConnection("server=(local)\\SQL2005;user id=sa;pwd=12345;initial  catalog=TestDb");<br />
conn.Open();</code></p>
<p>SqlCommand cmd = new SqlCommand(&#8220;SELECT TOP 1 * FROM [User] WHERE <strong>UserName  = @UserName AND Password = @Password</strong>“);<br />
cmd.Connection = conn;<br />
cmd.Parameters.AddWithValue(”UserName”, “user01″);<br />
cmd.Parameters.AddWithValue(”Password”, “123456″);</p>
<p>SqlDataReader reader = cmd.ExecuteReader();<br />
reader.Read();<br />
int userId = reader.GetInt32(0);</p>
<p>reader.Close();<br />
conn.Close();</p>
<p><a href="http://www.iwanna.cn/tags/mysql/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with MySQL">MySQL</a>的参数格式与SQL Server有点区别，是以<strong>“?”加上参数名</strong>。</p>
<p><code>MySqlConnection conn = new  MySqlConnection("server=127.0.0.1;uid=root;pwd=12345;database=test;");<br />
conn.Open();</code></p>
<p>MySqlCommand cmd = new MySqlCommand(&#8220;SELECT * FROM `User` WHERE <strong>UserName  = ?UserName AND Password = ?Password</strong> LIMIT 1″);<br />
cmd.Connection = conn;<br />
cmd.Parameters.AddWithValue(”UserName”, “user01″);<br />
cmd.Parameters.AddWithValue(”Password”, “123456″);</p>
<p>MySqlDataReader reader = cmd.ExecuteReader();<br />
reader.Read();<br />
int userId = reader.GetInt32(0);</p>
<p>reader.Close();<br />
conn.Close();</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/06/03/3657/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/06/03/3657/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/06/03/3657/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/06/03/3657/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/06/03/3657/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/develope/net/" title=".Net" rel="tag nofollow">.Net</a>, <a href="http://www.iwanna.cn/tags/net/" title=".Net" rel="tag nofollow">.Net</a>, <a href="http://www.iwanna.cn/tags/mysql/" title="MySQL" rel="tag nofollow">MySQL</a>, <a href="http://www.iwanna.cn/topics/develope/sql/mysql-sql-develope/" title="Mysql" rel="tag nofollow">Mysql</a>, <a href="http://www.iwanna.cn/topics/develope/sql/" title="Sql" rel="tag nofollow">Sql</a>, <a href="http://www.iwanna.cn/tags/sql/" title="Sql" rel="tag nofollow">Sql</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/03/30/11/" title="MySQL 搜索中的大小写敏感性 (2009年03月30日)">MySQL 搜索中的大小写敏感性</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/30/1894/" title="40+ Web前端开发必备的备忘单[上] (2009年06月30日)">40+ Web前端开发必备的备忘单[上]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/05/12/3089/" title="19条 WordPress 实用的 SQL 查询语句 (2010年05月12日)">19条 WordPress 实用的 SQL 查询语句</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/02/149/" title="设计模式之单例模式 (2009年04月2日)">设计模式之单例模式</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/22/778/" title="提高MySQL 查询效率的三个技巧 (2009年04月22日)">提高MySQL 查询效率的三个技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/08/240/" title="常用的数据库统计SQL语句(2) (2009年04月8日)">常用的数据库统计SQL语句(2)</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/08/236/" title="常用的一些数据统计SQL语句 (2009年04月8日)">常用的一些数据统计SQL语句</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/06/4378/" title="如何释放已删除的InnoDB磁盘空间 (2010年07月6日)">如何释放已删除的InnoDB磁盘空间</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/13/4523/" title="图解Linux下如何搭建C#开发环境 (2010年07月13日)">图解Linux下如何搭建C#开发环境</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/03/29/2607/" title="关于数据大容量的导入导出小结[SQL Server] (2010年03月29日)">关于数据大容量的导入导出小结[SQL Server]</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/06/03/3657/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何用 JavaScript 检测 IE8 浏览器的文档版本</title>
		<link>http://www.iwanna.cn/archives/2010/05/24/3340/</link>
		<comments>http://www.iwanna.cn/archives/2010/05/24/3340/#comments</comments>
		<pubDate>Sun, 23 May 2010 16:23:33 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=3340</guid>
		<description><![CDATA[您可以通过document.documentMode属性来判断当前的文档模式使用的是IE8浏览器的渲染版本，返回的值是5、7或8中的任意一个。
var mode = document.documentMode;
通过这个属性将会帮助您决定页面接下去的行为。这个属性在所有的文档模式中都是有效的。

© 我想网 Akon 所有 , 2010. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：Browser, Browser, JavaScript, 程序源码

	您可能会感兴趣的其他文章
	
	Javascript的IE和Firefox兼容性汇编 
	JavaScript操作Cookie，支持Firefox、IE、Netscape，暂不能支持opera 
	JavaScript判断浏览器类型及版本 
	Firefox跟IE在JavaScript中的七个不同表现 
	页面输出时一些常用的小技巧 
	跨浏览器兼容性检查完全指南 
	让IE8兼容IE7 
	解决IE6背景图片不缓存的BUG 
	解决IE6、IE7、Firefox兼容最简单的CSS Hack 
	表单元素：40个CSS/JS风格和功能技术处理 



Feed enhanced by Better Feed from  Ozh
]]></description>
			<content:encoded><![CDATA[<p>您可以通过<code>document.documentMode</code>属性来判断当前的文档模式使用的是IE8浏览器的渲染版本，返回的值是5、7或8中的任意一个。</p>
<pre><code>var mode = document.documentMode;</code></pre>
<p>通过这个属性将会帮助您决定页面接下去的行为。这个属性在所有的文档模式中都是有效的。</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/05/24/3340/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/05/24/3340/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/05/24/3340/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/05/24/3340/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/05/24/3340/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/tags/browser/" title="Browser" rel="tag nofollow">Browser</a>, <a href="http://www.iwanna.cn/topics/ui/browser-ui/" title="Browser" rel="tag nofollow">Browser</a>, <a href="http://www.iwanna.cn/tags/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/14/369/" title="Javascript的IE和Firefox兼容性汇编 (2009年04月14日)">Javascript的IE和Firefox兼容性汇编</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/04/1706/" title="JavaScript操作Cookie，支持Firefox、IE、Netscape，暂不能支持opera (2009年06月4日)">JavaScript操作Cookie，支持Firefox、IE、Netscape，暂不能支持opera</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/20/717/" title="JavaScript判断浏览器类型及版本 (2009年04月20日)">JavaScript判断浏览器类型及版本</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/04/1703/" title="Firefox跟IE在JavaScript中的七个不同表现 (2009年06月4日)">Firefox跟IE在JavaScript中的七个不同表现</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/29/894/" title="页面输出时一些常用的小技巧 (2009年04月29日)">页面输出时一些常用的小技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/02/3616/" title="跨浏览器兼容性检查完全指南 (2010年06月2日)">跨浏览器兼容性检查完全指南</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/46/" title="让IE8兼容IE7 (2009年03月31日)">让IE8兼容IE7</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/21/4116/" title="解决IE6背景图片不缓存的BUG (2010年06月21日)">解决IE6背景图片不缓存的BUG</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/15/405/" title="解决IE6、IE7、Firefox兼容最简单的CSS Hack (2009年04月15日)">解决IE6、IE7、Firefox兼容最简单的CSS Hack</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/79/" title="表单元素：40个CSS/JS风格和功能技术处理 (2009年03月31日)">表单元素：40个CSS/JS风格和功能技术处理</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/05/24/3340/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>基于jQuery的新闻图片</title>
		<link>http://www.iwanna.cn/archives/2010/03/29/2605/</link>
		<comments>http://www.iwanna.cn/archives/2010/03/29/2605/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 14:12:57 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2605</guid>
		<description><![CDATA[基于jquery的新闻图片，支持自动切换，图片序号，左右切换
/**
  *	auto		是否自动切换
  *	autoTime	自动切换时间，毫秒单位
  *	lt			是否支持左右切换
**/
function handoverImg(auto, autoTime, lt){
	var isCan = true, numHtml = '', numBottom = $("#numBottom"), lis = $("#showImgDiv li"),
	//切换动作
	handoverIO = function(){
		if(isCan){
			isCan = false;
			var numBottomLis = $("#numBottom li"), lnum = 0;
			//判断切换方向
			if(this == window){
				lnum = autoHandover();
			}else if(this.tagName == "LI"){
				lnum = this.innerHTML - 1;
			}else if(this.id == "left"){
				lnum = leftHandover();
			}else if(this.id == "right"){
				lnum = rightHandover();
			}

			for(var [...]]]></description>
			<content:encoded><![CDATA[<p>基于<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>的新闻图片，支持自动切换，图片序号，左右切换</p>
<pre>/**
  *	auto		是否自动切换
  *	autoTime	自动切换时间，毫秒单位
  *	lt			是否支持左右切换
**/
function handoverImg(auto, autoTime, lt){
	var isCan = true, numHtml = '', numBottom = $("#numBottom"), lis = $("#showImgDiv li"),
	//切换动作
	handoverIO = function(){
		if(isCan){
			isCan = false;
			var numBottomLis = $("#numBottom li"), lnum = 0;
			//判断切换方向
			if(this == window){
				lnum = autoHandover();
			}else if(this.tagName == "LI"){
				lnum = this.innerHTML - 1;
			}else if(this.id == "left"){
				lnum = leftHandover();
			}else if(this.id == "right"){
				lnum = rightHandover();
			}

			for(var i=0, ci; ci=lis[i]; i++){
				numBottomLis[i].className = "nli"
				if(i != lnum) $(ci).hide();
			}
			numBottomLis[lnum].className = "oli";
			$(lis[lnum]).fadeIn(1000, function(){isCan = true});
		}
	},
	//自动切换的LI序号
	autoHandover = function(){
		var numBottomLis = $("#numBottom li");
		for(var i=0, ci; ci=numBottomLis[i]; i++){
			if(ci.className == "oli") {
				return i == numBottomLis.length-1 ? 0 : i+1;
			}
		}
	},
	//向左切换的LI序号
	leftHandover = function(){
		var numBottomLis = $("#numBottom li");
		for(var i=0, ci; ci=numBottomLis[i]; i++){
			if(ci.className == "oli") {
				return i == numBottomLis.length-1 ? 0 : i+1;
			}
		}
	},
	//向右切换的LI序号
	rightHandover = function(){
		var numBottomLis = $("#numBottom li");
		for(var i=0, ci; ci=numBottomLis[i]; i++){
			if(ci.className == "oli") {
				return i == 0 ? numBottomLis.length-1 : i-1;
			}
		}
	};

	//生成数字标识
	for(var i=0, ci; ci=lis[i]; i++){
		if(i &gt; 0) $(ci).hide();
		numHtml += "&lt;li " + (i==0 ? "class='oli'" : "class='nli'") + "&gt;" + (i+1) + "&lt;/li&gt;";
	}
	numBottom.<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">html</a>(numHtml);

	numBottom.find("li").each(function(i){
		this.onmousemove = handoverIO;
	})
	if(lt &amp;&amp; lt == true){
		$("#left").click(handoverIO);
		$("#right").click(handoverIO);
	}
	if(auto &amp;&amp; auto == true){
		setInterval(handoverIO, autoTime ? autoTime : 1500);
	}
}</pre>
<pre>&lt;!DOCTYPE <a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a> PUBLIC "-//W3C//DTD <a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a> 4.0 Transitional//EN"&gt;
&lt;<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a>&gt;
&lt;HEAD&gt;
&lt;TITLE&gt; New Document &lt;/TITLE&gt;
&lt;META NAME="Generator" CONTENT="EditPlus"&gt;
&lt;META NAME="Author" CONTENT=""&gt;
&lt;META NAME="Keywords" CONTENT=""&gt;
&lt;META NAME="Description" CONTENT=""&gt;
&lt;style&gt;
.numB_ul{width:200px; height:20px;}
.numB_ul li{width:5px;padding-right:15px;float:left; cursor:pointer}
.oli{color:red;}
.nli{color:#000;}
&lt;/style&gt;
&lt;/HEAD&gt;

&lt;BODY&gt;
&lt;div id="left"&gt;LEFT&lt;/div&gt;
&lt;div&gt;
	&lt;ul id="numBottom"&gt;
	&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="showImgDiv" style="height:170px; overflow:hidden"&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;img src="imags/1.jpg" width="200" height="170" /&gt;&lt;/li&gt;
		&lt;li&gt;&lt;img src="imags/2.jpg" width="200" height="170" /&gt;&lt;/li&gt;
		&lt;li&gt;&lt;img src="imags/3.jpg" width="200" height="170" /&gt;&lt;/li&gt;
		&lt;li&gt;&lt;img src="imags/4.jpg" width="200" height="170" /&gt;&lt;/li&gt;
		&lt;li&gt;&lt;img src="imags/5.jpg" width="200" height="170" /&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="right"&gt;RIGHT&lt;/div&gt;
&lt;/BODY&gt;
&lt;/<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a>&gt;</pre>
<ul> 本文附件下载:</p>
<li><a href="http://dl.javaeye.com/topics/download/51bda9d7-b6b8-3104-ad65-9dfc590dbf0c" target="_blank">tupian.rar</a> (142.2 KB)</li>
</ul>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/03/29/2605/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/03/29/2605/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/03/29/2605/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/03/29/2605/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/03/29/2605/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/tags/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4797/" title="实用jquery代码片段集合[下] (2010年07月29日)">实用jquery代码片段集合[下]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4795/" title="实用jquery代码片段集合[上] (2010年07月29日)">实用jquery代码片段集合[上]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/20/4644/" title="jQuery源码分析-each函数 (2010年07月20日)">jQuery源码分析-each函数</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/07/3765/" title="简单的JQuery聚光灯效果教程 (2010年06月7日)">简单的JQuery聚光灯效果教程</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/17/1828/" title="用jQuery和CSS构建下拉菜单 (2009年06月17日)">用jQuery和CSS构建下拉菜单</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/13/4506/" title="推荐9个jquery手风琴菜单插件 (2010年07月13日)">推荐9个jquery手风琴菜单插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/11/4460/" title="推荐8个独特应用的JQuery拖放插件 (2010年07月11日)">推荐8个独特应用的JQuery拖放插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1864/" title="如何为您的博客图片添加水印效果？ (2009年06月23日)">如何为您的博客图片添加水印效果？</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/09/4451/" title="基本代码安全知识 (2010年07月9日)">基本代码安全知识</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/17/4583/" title="制作jquery文字提示插件 (2010年07月17日)">制作jquery文字提示插件</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/03/29/2605/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress显示相对日期时间的代码</title>
		<link>http://www.iwanna.cn/archives/2010/03/09/2542/</link>
		<comments>http://www.iwanna.cn/archives/2010/03/09/2542/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 01:56:23 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>
		<category><![CDATA[友情链接]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2542</guid>
		<description><![CDATA[微博风行，一些细节也倍受追捧，比如你可能希望你博客的文章发布日期或留言时间显示成”5分钟前”，”1年前”…等格式的相对日期。有两个插件可供 你选择：

WP-RelativeDate
Easy  Relative Date

或者你也可以直接使用wordpress内 置的human_time_diff()这个个函数来实现相对日期时间的显示:
相对文章日期：
&#60;?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; ?&#62; 
相对留言日期:
&#60;?php echo human_time_diff(get_comment_time('U'), current_time('timestamp')) . ' ago'; ?&#62; 
具体实现原理就不说明了，有兴趣进一步研究的朋友可以查看WordPress官方的函数指南。

© 我想网 Akon 所有 , 2010. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：Source-code, Wordpress, 友情链接, 程序源码

	您可能会感兴趣的其他文章
	
	简易Wordpress模板代码帮助手册中文版 
	最受欢迎的50个免费wordpress模板 
	排名前7位的 Wordpress 404 插件 
	掌握强大的WordPress的子主题 
	实用jquery代码片段集合[下] 
	实用jquery代码片段集合[上] 
	如何给您的Wordpress主题添加幻灯片效果 
	如何给WordPress站点添加文章投递功能 
	如何为您的博客图片添加水印效果？ 
	基本代码安全知识 



Feed enhanced by Better Feed from  Ozh
]]></description>
			<content:encoded><![CDATA[<p>微博风行，一些细节也倍受追捧，比如你可能希望你博客的文章发布日期或留言时间显示成”5分钟前”，”1年前”…等格式的相对日期。有两个插件可供 你选择：</p>
<ul>
<li><a href="http://wordpress.org/extend/plugins/wp-relativedate/">WP-RelativeDate</a></li>
<li><a href="http://wordpress.org/extend/plugins/wp-relativedate/">Easy  Relative Date</a></li>
</ul>
<p>或者你也可以直接使用<a href="http://paranimage.com/category/apps/wordpress/">wordpress</a>内 置的<strong>human_time_diff()</strong>这个个函数来实现相对日期时间的显示:</p>
<p><strong>相对文章日期：</strong></p>
<pre><code>&lt;?<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">php</a> echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; ?&gt; </code></pre>
<p><strong>相对留言日期:</strong></p>
<pre><code>&lt;?<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">php</a> echo human_time_diff(get_comment_time('U'), current_time('timestamp')) . ' ago'; ?&gt; </code></pre>
<p>具体实现原理就不说明了，有兴趣进一步研究的朋友可以查看WordPress官方的<a href="http://codex.wordpress.org/Function_Reference/human_time_diff" target="_blank">函数指南</a>。</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/03/09/2542/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/03/09/2542/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/03/09/2542/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/03/09/2542/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/03/09/2542/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/develope/php/wordpress-php-develope/" title="Wordpress" rel="tag nofollow">Wordpress</a>, <a href="http://www.iwanna.cn/tags/links/" title="友情链接" rel="tag nofollow">友情链接</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/03/171/" title="简易Wordpress模板代码帮助手册中文版 (2009年04月3日)">简易Wordpress模板代码帮助手册中文版</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/21/733/" title="最受欢迎的50个免费wordpress模板 (2009年04月21日)">最受欢迎的50个免费wordpress模板</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/05/13/3113/" title="排名前7位的 Wordpress 404 插件 (2010年05月13日)">排名前7位的 Wordpress 404 插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/29/1215/" title="掌握强大的WordPress的子主题 (2009年05月29日)">掌握强大的WordPress的子主题</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4797/" title="实用jquery代码片段集合[下] (2010年07月29日)">实用jquery代码片段集合[下]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4795/" title="实用jquery代码片段集合[上] (2010年07月29日)">实用jquery代码片段集合[上]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1186/" title="如何给您的Wordpress主题添加幻灯片效果 (2009年05月27日)">如何给您的Wordpress主题添加幻灯片效果</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/05/22/3288/" title="如何给WordPress站点添加文章投递功能 (2010年05月22日)">如何给WordPress站点添加文章投递功能</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1864/" title="如何为您的博客图片添加水印效果？ (2009年06月23日)">如何为您的博客图片添加水印效果？</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/09/4451/" title="基本代码安全知识 (2010年07月9日)">基本代码安全知识</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/03/09/2542/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>15个来自从Google Code代码库的工具与素材</title>
		<link>http://www.iwanna.cn/archives/2010/02/09/2499/</link>
		<comments>http://www.iwanna.cn/archives/2010/02/09/2499/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 15:00:09 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[程序源码]]></category>
		<category><![CDATA[素材分享]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2499</guid>
		<description><![CDATA[Google 代码库是一个类似 SourceForge 的开源社区，大量开发者在那里上传自己的代码或素材同他人分享，Google 代码库于   2006 年启动，至今已积累了大量的好东西，本文从 Google 代码库搜集到 15 个非常出色的工具与素材，它们都基于 GPL， BSD，   MIT 或 Creative Common 协议，可以免费使用。 		

1. Twotiny

这是一套由 Paul Jarvis 设计的微图标系列，这些图标拥有各种尺 寸，提供分层 PSD 文件，非常适合做 Web 设计。
2. Minify

多数 CMS 系统都包含内置的代码精简工具，用来过滤生成的页面代码中的空格，注释，以最大程度地加快页面加载速度。该工具可以对 PHP  文件进行精简，对 JavaScript 和 CSS 进行压缩。
3. Cleanstickyfooter

该项目由 Trevor Sheridan 创建，旨在不借助 CSS Hack 或 CSS z-index 技术实现让 Web 页面的页脚部分自动附着在指定对象下方。
4. Sexy [...]]]></description>
			<content:encoded><![CDATA[<p>Google 代码库是一个类似 SourceForge 的开源社区，大量开发者在那里上传自己的代码或素材同他人分享，Google 代码库于   2006 年启动，至今已积累了大量的好东西，本文从 Google 代码库搜集到 15 个非常出色的工具与素材，它们都基于 GPL， BSD，   MIT 或 Creative Common 协议，可以免费使用。 		<a href="http://sixrevisions.com/resources/15-fantastic-finds-on-the-google-code-repository/"><img src="http://images.sixrevisions.com/2010/02/17-01_google_repository_finds_lead_img.jpg" alt="15 Fantastic Finds on the Google Code Repository" width="550" height="200" /></a><br />
<span id="more-2499"></span><br />
1. <a href="http://code.google.com/p/twotiny/">Twotiny</a><br />
<a href="http://code.google.com/p/twotiny/"><img src="http://images.sixrevisions.com/2010/02/17-02_twotiny.png" alt="Twotiny" width="550" height="250" /></a></p>
<p>这是一套由 Paul Jarvis 设计的<a href="http://twothirty.com/">微图标</a>系列，这些图标拥有各种尺 寸，提供分层 PSD 文件，非常适合做 Web 设计。<br />
2. <a href="http://code.google.com/p/minify/">Minify</a><br />
<a href="http://code.google.com/p/minify/"><img src="http://images.sixrevisions.com/2010/02/17-03_minify.png" alt="Minify" width="550" height="250" /></a></p>
<p>多数 CMS 系统都包含内置的代码精简工具，用来过滤生成的页面代码中的空格，注释，以最大程度地加快页面加载速度。该工具可以对 <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>  文件进行精简，对 <a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a> 和 CSS 进行压缩。<br />
3. <a href="http://code.google.com/p/cleanstickyfooter/">Cleanstickyfooter</a><br />
<a href="http://code.google.com/p/cleanstickyfooter/"><img src="http://images.sixrevisions.com/2010/02/17-04_cssstickyfooter.jpg" alt="Cleanstickyfooter" width="550" height="250" /></a></p>
<p>该项目由 <a href="http://www.trevorsheridan.com/">Trevor Sheridan</a> 创建，旨在不借助 CSS Hack 或 CSS z-index 技术实现让 Web 页面的页脚部分自动附着在指定对象下方。<br />
4. <a href="http://code.google.com/p/sexybuttons/">Sexy Buttons</a><br />
<a href="http://code.google.com/p/sexybuttons/"><img src="http://images.sixrevisions.com/2010/02/17-05_sexybuttons.png" alt="Sexy Buttons" width="550" height="250" /></a></p>
<p>这个 ZIP 压缩包包含了 1500 个各种颜色，各种尺寸的图标，还提供相应的 CSS/<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a> 框架来实现 Web 按钮，支持所有主流浏览器。<br />
5. <a href="http://code.google.com/p/php-email-address-validation/">php-email-address-validation</a><br />
这是 <a href="http://www.addedbytes.com/">AddedBytes.com</a> 的 Dave Child 从  2004 年就开始的一个项目，实现高级 <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a> email 地址验证。<br />
6. <a href="http://code.google.com/p/hartija/">Hartija – CSS Print   Framework</a><br />
<a href="http://code.google.com/p/hartija/"><img src="http://images.sixrevisions.com/2010/02/17-06_hartija.png" alt="Hartija - CSS Print Framework" width="550" height="250" /></a></p>
<p>作为 Web 设计师，我们经常忘记一件事，就是用于打印的 CSS 设计。Hartija 针对页面打印设计了一个干净，巧妙的模式。<br />
7. <a href="http://code.google.com/p/a-slideshow/">a-slideshow</a><br />
<a href="http://code.google.com/p/a-slideshow/"><img src="http://images.sixrevisions.com/2010/02/17-07_aslideshow.jpg" alt="a-slideshow" width="550" height="250" /></a></p>
<p>这是为 <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a> 1.3 以上版本设计的幻灯插件，这里有个<a href="http://slideshow.hohli.com/docs/demo02.html">演示</a>。<br />
8. <a href="http://code.google.com/p/jquery-largephotobox/">LargePhotoBox</a><br />
<a href="http://code.google.com/p/jquery-largephotobox/"><img src="http://images.sixrevisions.com/2010/02/17-08_largephotobox.jpg" alt="LargePhotoBox" width="550" height="250" /></a></p>
<p>这是一个 <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>  插件，用一种很巧妙的方式显示大型图片，点击缩略图，大图很完美地适应浏览器窗口，用鼠标拖动，可以在大图的各个部分浏览。这里有个<a href="http://www.interag.net/largephotobox/">演示</a>。<br />
9. <a href="http://code.google.com/p/php-akismet-contact/">php-akismet-contact</a><br />
这个工具使用 WordPress 的 Akismet 反垃圾回复功能，实现 <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a> 表单的反垃圾功能。<br />
10. <a href="http://code.google.com/p/lovely-css/">lovely-css</a><br />
<a href="http://code.google.com/p/lovely-css/"><img src="http://images.sixrevisions.com/2010/02/17-09_lovely-css.png" alt="lovely-css" width="550" height="250" /></a></p>
<p>这个由 <a href="http://www.ohmylovely.com/">Constantinos  Demetriadis</a> 创建的项目是一个 CSS 框架，基于 960.gs，还拥有一个插件可以扩充该框架。1.0 版基于 MIT 协议，这里有个<a href="http://ohmylovely.com/css-framework/example.html">演示</a>。<br />
11. <a href="http://code.google.com/p/css3-mediaqueries-js/">css3-mediaqueries-js</a><br />
该工具借助 <a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a> 在所有主流浏览器实现 CSS3 Media Queries 功能，包括 IE。CSS3 Media  Queries 根据用户的视窗尺寸调整 CSS ，使你的设计可以被各种浏览器友好访问。<br />
12. <a href="http://code.google.com/p/wp-constructor/">wp-constructor:   WordPress Constructor Theme</a><br />
<a href="http://code.google.com/p/wp-constructor/"><img src="http://images.sixrevisions.com/2010/02/17-10_wp-constructor.jpg" alt="wp-constructor: WordPress Constructor Theme" width="550" height="250" /></a></p>
<p>这个 WordPress 主题由 <a href="http://anton.shevchuk.name/">Anton Shevchuk</a> 设计，是一个用于 WordPress 2.7+ 的通用主题。使用这个主题，用户可以快速实现个性化博客设计，该项目每天的下载频率超过 1000  次。<br />
13. <a href="http://code.google.com/p/mysql-db-php-class/wiki/Documentation">mysql-db-php-class</a><br />
这是一个 <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a> 类，实现 <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a> 同 <a href="http://www.iwanna.cn/tags/mysql/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with MySQL">MySQL</a> 的沟通，非常灵活。<br />
14. <a href="http://code.google.com/p/jquery-twit/">jquery-twit</a><br />
<a href="http://code.google.com/p/jquery-twit/"><img src="http://images.sixrevisions.com/2010/02/17-11_jquery-twit.png" alt="jquery-twit" width="550" height="250" /></a></p>
<p>这个 <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a> 插件可以实现在个人的博客中，显示 Twitter 用户资料。这里有个<a href="http://www.mudaimemo.com/p/twit/">演示</a>。<br />
15. <a href="http://code.google.com/p/peertracker/">peertracker</a><br />
如果你想创建第二个海盗港湾，这个2010年1月20日刚刚发布的项目可以帮你实现。</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/02/09/2499/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/02/09/2499/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/02/09/2499/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/02/09/2499/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/02/09/2499/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a>, <a href="http://www.iwanna.cn/topics/material/" title="素材分享" rel="tag nofollow">素材分享</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4797/" title="实用jquery代码片段集合[下] (2010年07月29日)">实用jquery代码片段集合[下]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4795/" title="实用jquery代码片段集合[上] (2010年07月29日)">实用jquery代码片段集合[上]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/09/4451/" title="基本代码安全知识 (2010年07月9日)">基本代码安全知识</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/03/29/2605/" title="基于jQuery的新闻图片 (2010年03月29日)">基于jQuery的新闻图片</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3772/" title="一个JavaScript分页函数 (2010年06月8日)">一个JavaScript分页函数</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/03/09/2542/" title="WordPress显示相对日期时间的代码 (2010年03月9日)">WordPress显示相对日期时间的代码</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/21/2041/" title="PHP获取字符串编码类型 (2009年07月21日)">PHP获取字符串编码类型</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3820/" title="php 加密解密类(含公钥) (2010年06月8日)">php 加密解密类(含公钥)</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/02/04/2492/" title="js中鼠标滚轮事件详解 (2010年02月4日)">js中鼠标滚轮事件详解</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/20/4644/" title="jQuery源码分析-each函数 (2010年07月20日)">jQuery源码分析-each函数</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/02/09/2499/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>js中鼠标滚轮事件详解</title>
		<link>http://www.iwanna.cn/archives/2010/02/04/2492/</link>
		<comments>http://www.iwanna.cn/archives/2010/02/04/2492/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 04:29:53 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2492</guid>
		<description><![CDATA[之前js 仿Photoshop鼠标滚轮控制输入框取值中已使用js对鼠标滚轮事件进行控制，滚轮事件其中考虑浏览器兼 容性问题
附加事件
其中经我测试，IE/Opera属于同一类型，使用attachEvent即可添加滚轮事 件。
/*IE注册事件*/
if(document.attachEvent){
document.attachEvent(&#8216;onmousewheel&#8217;,scrollFunc);
}
Firefox 使用addEventListener添加滚轮事件
/*Firefox注册事件*/
if(document.addEventListener){
document.addEventListener(&#8216;DOMMouseScroll&#8217;,scrollFunc,false);
}
Safari与Chrome属于同一类型，可使用HTML DOM方式添加事件
window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome
其 中除Firefox外其余均可使用HTML DOM方式添加事件，因此添加事件使用以下方式
/*注册事件*/
if(document.addEventListener){
document.addEventListener(&#8216;DOMMouseScroll&#8217;,scrollFunc,false);
}//W3C
window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome
detail 与wheelDelta
判断滚轮向上或向下在浏览器中也要考虑兼容性，现在五大浏览器（IE、Opera、Safari、 Firefox、Chrome）中Firefox 使用detail，其余四类使用wheelDelta；两者只在取值上不一致，代 表含义一致，detail与wheelDelta只各取两个值，detail只取±3，wheelDelta只取±120，其 中正数表示为向上，负数表示向下。
&#60;p&#62;&#60;label for=&#8221;wheelDelta&#8221;&#62;  滚动值:&#60;/label&#62;(IE/Opera)&#60;input type=&#8221;text&#8221; id=&#8221;wheelDelta&#8221;  /&#62;&#60;/p&#62;
&#60;p&#62;&#60;label for=&#8221;detail&#8221;&#62;  滚动值:(Firefox)&#60;/label&#62;&#60;input type=&#8221;text&#8221; id=&#8221;detail&#8221;  /&#62;&#60;/p&#62;
&#60;script type=&#8221;text/javascript&#8221;&#62;
var  oTxt=document.getElementById(&#8220;txt&#8221;);
/***********************
* 函数：判断滚轮滚动方向
* 作者：walkingp
* 参数：event
* 返回：滚轮方向  1：向上 -1：向下
*************************/
var  scrollFunc=function(e){
var direct=0;
e=e &#124;&#124;  window.event;
var t1=document.getElementById(&#8220;wheelDelta&#8221;);
var t2=document.getElementById(&#8220;detail&#8221;);
if(e.wheelDelta){//IE/Opera/Chrome
t1.value=e.wheelDelta;
}else if(e.detail){//Firefox
t2.value=e.detail;
}
ScrollText(direct);
}
/*注册事件*/
if(document.addEventListener){
document.addEventListener(&#8216;DOMMouseScroll&#8217;,scrollFunc,false);
}//W3C
window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome/Safari
&#60;/script&#62;
预览效果http://www.51obj.cn/demo/js/wheelDelta_detail.html
（部 分图片见原文：http://www.51obj.cn/?p=637）
（以上内容部分内容参考了http://adomas.org/javascript-mouse-wheel/ ）

© 我想网 Akon 所有 , 2010. &#124;
永久链接 &#124;
没有评论 [...]]]></description>
			<content:encoded><![CDATA[<p>之前js 仿Photoshop鼠标滚轮控制输入框取值中已使用js对鼠标滚轮事件进行控制，滚轮事件其中考虑浏览器兼 容性问题</p>
<p>附加事件</p>
<p>其中经我测试，IE/Opera属于同一类型，使用attachEvent即可添加滚轮事 件。</p>
<p>/*IE注册事件*/<br />
if(document.attachEvent){<br />
document.attachEvent(&#8216;onmousewheel&#8217;,scrollFunc);<br />
}</p>
<p>Firefox 使用addEventListener添加滚轮事件</p>
<p>/*Firefox注册事件*/<br />
if(document.addEventListener){<br />
document.addEventListener(&#8216;DOMMouseScroll&#8217;,scrollFunc,false);<br />
}</p>
<p>Safari与Chrome属于同一类型，可使用<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a> DOM方式添加事件</p>
<p>window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome</p>
<p>其 中除Firefox外其余均可使用<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a> DOM方式添加事件，因此添加事件使用以下方式</p>
<p>/*注册事件*/<br />
if(document.addEventListener){<br />
document.addEventListener(&#8216;DOMMouseScroll&#8217;,scrollFunc,false);<br />
}//W3C<br />
window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome</p>
<p>detail 与wheelDelta</p>
<p>判断滚轮向上或向下在浏览器中也要考虑兼容性，现在五大浏览器（IE、Opera、Safari、 Firefox、Chrome）中Firefox 使用detail，其余四类使用wheelDelta；两者只在取值上不一致，代 表含义一致，detail与wheelDelta只各取两个值，detail只取±3，wheelDelta只取±120，其 中正数表示为向上，负数表示向下。</p>
<p>&lt;p&gt;&lt;label for=&#8221;wheelDelta&#8221;&gt;  滚动值:&lt;/label&gt;(IE/Opera)&lt;input type=&#8221;text&#8221; id=&#8221;wheelDelta&#8221;  /&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;label for=&#8221;detail&#8221;&gt;  滚动值:(Firefox)&lt;/label&gt;&lt;input type=&#8221;text&#8221; id=&#8221;detail&#8221;  /&gt;&lt;/p&gt;<br />
&lt;script type=&#8221;text/<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>&#8221;&gt;<br />
var  oTxt=document.getElementById(&#8220;txt&#8221;);<br />
/***********************<br />
* 函数：判断滚轮滚动方向<br />
* 作者：walkingp<br />
* 参数：event<br />
* 返回：滚轮方向  1：向上 -1：向下<br />
*************************/<br />
var  scrollFunc=function(e){<br />
var direct=0;<br />
e=e ||  window.event;</p>
<p>var t1=document.getElementById(&#8220;wheelDelta&#8221;);<br />
var t2=document.getElementById(&#8220;detail&#8221;);<br />
if(e.wheelDelta){//IE/Opera/Chrome<br />
t1.value=e.wheelDelta;<br />
}else if(e.detail){//Firefox<br />
t2.value=e.detail;<br />
}<br />
ScrollText(direct);<br />
}<br />
/*注册事件*/<br />
if(document.addEventListener){<br />
document.addEventListener(&#8216;DOMMouseScroll&#8217;,scrollFunc,false);<br />
}//W3C<br />
window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome/Safari<br />
&lt;/script&gt;</p>
<p>预览效果<a href="http://www.51obj.cn/demo/js/wheelDelta_detail.html" target="_blank">http://www.51obj.cn/demo/js/wheelDelta_detail.html</a></p>
<p>（部 分图片见原文：<a href="http://www.51obj.cn/?p=637" target="_blank">http://www.51obj.cn/?p=637</a>）<br />
（以上内容部分内容参考了<a href="http://adomas.org/javascript-mouse-wheel/" target="_blank">http://adomas.org/javascript-mouse-wheel/</a> ）<img src="http://www1.feedsky.com/t1/329360769/cssrain/feedsky/s.gif?r=http://www.cssrain.cn/default.asp?id=1431" border="0" alt="" width="0" height="0" /></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/02/04/2492/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/02/04/2492/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/02/04/2492/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/02/04/2492/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/02/04/2492/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3772/" title="一个JavaScript分页函数 (2010年06月8日)">一个JavaScript分页函数</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/12/17/2430/" title="JavaScript中的64位加密及解密 (2009年12月17日)">JavaScript中的64位加密及解密</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/29/894/" title="页面输出时一些常用的小技巧 (2009年04月29日)">页面输出时一些常用的小技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/79/" title="表单元素：40个CSS/JS风格和功能技术处理 (2009年03月31日)">表单元素：40个CSS/JS风格和功能技术处理</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/06/4383/" title="网页打开新窗口的解决方案,拒绝屏蔽 (2010年07月6日)">网页打开新窗口的解决方案,拒绝屏蔽</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/04/29/2874/" title="相见恨晚的一些 JavaScript 技巧 (2010年04月29日)">相见恨晚的一些 JavaScript 技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/09/18/2252/" title="用JS制作的网页版NES模拟器 IE8直接出局 (2009年09月18日)">用JS制作的网页版NES模拟器 IE8直接出局</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/77/" title="用css+js控制图片大小的方法 (2009年03月31日)">用css+js控制图片大小的方法</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/02/17/2516/" title="有关 JavaScript 的 10 件让人费解的事情 (2010年02月17日)">有关 JavaScript 的 10 件让人费解的事情</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/11/29/2396/" title="新 API 寻求让 JavaScript 操作本地文件 (2009年11月29日)">新 API 寻求让 JavaScript 操作本地文件</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/02/04/2492/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10个免费开源微博客程序</title>
		<link>http://www.iwanna.cn/archives/2010/02/03/2483/</link>
		<comments>http://www.iwanna.cn/archives/2010/02/03/2483/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 06:59:22 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[程序开发]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2483</guid>
		<description><![CDATA[随着Twitter的红火以及新浪微博的流行，微博客已经渐渐取代了博客和SNS，成为最流行的互联网应用之一。前 不久康盛创想又对外开放了康盛微博CTT Beta版，使的很多站长都想搭建一个微博平台，而康盛微博程序提供下载还需要一段时间，所以 在这里我整理了10个免费微博开源程序。

1、Jaiku
Jaiku是一个基于Python的微博客平台，2007年被Google收购，不过之后并没有对其成功运营，只好在2009年宣布对其停止维护， 稍后Google就将Jaiku完全开源，并切换到AppEngine上运行，目前Jaiku完全开源并提供用户免费下载，大家可以到Jaiku源代码项 目地址。
查 看演示 代码下 载
2、Laconica / StatusNet
Laconica /  StatusNet是一个基于PHP和MySQL的开源微型博客系统，也是一个Twitter克隆，可以实现Microblog的常用功能，国外不少微博 客系统都是通过这个开源系统架设的。Laconica得到大量应用系统的支持，包括Twitterfeed、Hellotxt和Gravity等，成熟且 稳定。
最 新版本代码下载 StatusNet官方网址
3、Sweetter
Sweetter是一个开源的微博客项目，具有一定的投票机制，基于Python。
查 看演示 代码下载
4、Jisko
Jisko的界面和Twitter很像，能够自动通过AJAX更新，也是基于PHP和MySQL的，这个系统可能是西班牙人开发的，使用SVN到这 里下载其源代码。
查看演示 代 码下载
5、Yonkly
Yonkly是基于Asp.Net的开源微博客，除了开放源码的版本，它还有一个用于托管的高级独立版本。
6、PageCookery
是国内的一款开源代码，也是基于PHP和MySQL，支持和叽歪的同步，大家可以到PageCookery主站去下载代 码。
7、Asaph
也是一款PHP+Mysql的，其下载代码下载地址：http://www.phoboslab.org/projects/asaph
8、Floopo
Floopo是基于PHP和MySQL的免费的微博客系统，它的功能非常类似Twitter，并且提供了强大的后台管理系统。
9、TypePad Motion
TypePad  Motion是一个多媒体微博客，除了文字内容，您还可以分享图片（GIF/JPE/PNG）、视频（YouTube/Vimeo）和音频（MP3），附 属媒体文件均可以在线播放。
TypePad Motion基于TypePad的API，不论任人通过TypePad  Motion架设的网站，其数据都是统一存贮在TypePad的数据库。
软件主页： http://www.typepad.com/go/motion/
下载地址： http://developer.typepad.com/motion/create-motion.html
10、Sharetronix
Sharetronix是一款基于PHP和MySQL的免费的微博客系统。
查看演示 代 码下载

© 我想网 Akon 所有 , 2010. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：PHP, PHP, Python, Python, Source-code, Website, Website, 程序开发, 程序源码

	您可能会感兴趣的其他文章
	
	国外十大开源的PHP应用服务 
	国外PHP开发者放弃PHP而改用Python 
	国内开源的PHP应用程序 
	PHP获取字符串编码类型 [...]]]></description>
			<content:encoded><![CDATA[<p>随着Twitter的红火以及新浪微博的流行，微博客已经渐渐取代了博客和SNS，成为最流行的互联网应用之一。前 不久康盛创想又对外开放了康盛微博CTT Beta版，使的很多站长都想搭建一个微博平台，而康盛微博程序提供下载还需要一段时间，所以 在这里我整理了10个免费微博开源程序。<br />
<span id="more-2483"></span><br />
1、Jaiku</p>
<p>Jaiku是一个基于Python的微博客平台，2007年被Google收购，不过之后并没有对其成功运营，只好在2009年宣布对其停止维护， 稍后Google就将Jaiku完全开源，并切换到AppEngine上运行，目前Jaiku完全开源并提供用户免费下载，大家可以到Jaiku源代码项 目地址。</p>
<p><a title="jaiku" href="http://www.jaiku.com/" target="_blank"><strong>查 看演示</strong></a> <a title="jaiku代码下载" href="http://code.google.com/p/jaikuengine/" target="_blank"><strong>代码下 载</strong></a></p>
<p>2、Laconica / StatusNet</p>
<p>Laconica /  StatusNet是一个基于<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>和<a href="http://www.iwanna.cn/tags/mysql/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with MySQL">MySQL</a>的开源微型博客系统，也是一个Twitter克隆，可以实现Microblog的常用功能，国外不少微博 客系统都是通过这个开源系统架设的。Laconica得到大量应用系统的支持，包括Twitterfeed、Hellotxt和Gravity等，成熟且 稳定。</p>
<p><a href="http://status.net/statusnet-0.8.2.tar.gz" target="_blank"><strong>最 新版本代码下载</strong></a> <a title="statusnet" href="http://status.net/" target="_blank"><strong>StatusNet官方网址</strong></a></p>
<p>3、Sweetter</p>
<p>Sweetter是一个开源的微博客项目，具有一定的投票机制，基于Python。</p>
<p><a title="sweetter" href="http://sweetter.net/" target="_blank"><strong>查 看演示</strong></a> <a title="sweetter下载" href="https://launchpad.net/sweetter" target="_blank"><strong>代码下载</strong></a></p>
<p>4、Jisko</p>
<p>Jisko的界面和Twitter很像，能够自动通过AJAX更新，也是基于<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>和<a href="http://www.iwanna.cn/tags/mysql/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with MySQL">MySQL</a>的，这个系统可能是西班牙人开发的，使用SVN到这 里下载其源代码。</p>
<p><a title="jisko" href="http://jisko.net/public?page-4" target="_blank"><strong>查看演示</strong></a><strong> </strong><a title="jisko下载" href="http://dev.jisko.org/v2" target="_blank"><strong>代 码下载</strong></a></p>
<p>5、<a href="http://yonkly.codeplex.com/" target="_blank">Yonkly</a></p>
<p>Yonkly是基于Asp.Net的开源微博客，除了开放源码的版本，它还有一个用于托管的高级独立版本。</p>
<p>6、PageCookery</p>
<p>是国内的一款开源代码，也是基于<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>和<a href="http://www.iwanna.cn/tags/mysql/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with MySQL">MySQL</a>，支持和叽歪的同步，大家可以到<a title="pagecookery" href="http://www.pagecookery.com/" target="_blank">PageCookery主站</a>去下载代 码。</p>
<p>7、Asaph</p>
<p>也是一款<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>+<a href="http://www.iwanna.cn/tags/mysql/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with MySQL">Mysql</a>的，其下载代码下载地址：<a href="http://www.phoboslab.org/projects/asaph" target="_blank">http://www.phoboslab.org/projects/asaph</a></p>
<p>8、<a href="http://www.floopo.com/" target="_blank">Floopo</a></p>
<p>Floopo是基于<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>和<a href="http://www.iwanna.cn/tags/mysql/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with MySQL">MySQL</a>的免费的微博客系统，它的功能非常类似Twitter，并且提供了强大的后台管理系统。</p>
<p>9、TypePad Motion</p>
<p>TypePad  Motion是一个多媒体微博客，除了文字内容，您还可以分享图片（GIF/JPE/PNG）、视频（YouTube/Vimeo）和音频（MP3），附 属媒体文件均可以在线播放。</p>
<p>TypePad Motion基于TypePad的API，不论任人通过TypePad  Motion架设的网站，其数据都是统一存贮在TypePad的数据库。</p>
<p>软件主页： <a href="http://www.typepad.com/go/motion/" target="_blank">http://www.typepad.com/go/motion/</a><br />
下载地址： <a href="http://developer.typepad.com/motion/create-motion.html" target="_blank">http://developer.typepad.com/motion/create-motion.html</a></p>
<p>10、Sharetronix</p>
<p>Sharetronix是一款基于<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>和<a href="http://www.iwanna.cn/tags/mysql/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with MySQL">MySQL</a>的免费的微博客系统。</p>
<p><a title="sharetronix" href="http://demo.sharetronix.net/" target="_blank"><strong>查看演示</strong></a> <a title="sharetronix下载" href="http://sharetronix.com/opensource/download" target="_blank"><strong>代 码下载</strong></a></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/02/03/2483/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/02/03/2483/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/02/03/2483/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/02/03/2483/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/02/03/2483/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/develope/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://www.iwanna.cn/tags/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://www.iwanna.cn/topics/develope/python/" title="Python" rel="tag nofollow">Python</a>, <a href="http://www.iwanna.cn/tags/python/" title="Python" rel="tag nofollow">Python</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/surf/website/" title="Website" rel="tag nofollow">Website</a>, <a href="http://www.iwanna.cn/tags/website/" title="Website" rel="tag nofollow">Website</a>, <a href="http://www.iwanna.cn/topics/develope/" title="程序开发" rel="tag nofollow">程序开发</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/07/22/2049/" title="国外十大开源的PHP应用服务 (2009年07月22日)">国外十大开源的PHP应用服务</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/11/3900/" title="国外PHP开发者放弃PHP而改用Python (2010年06月11日)">国外PHP开发者放弃PHP而改用Python</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/22/2051/" title="国内开源的PHP应用程序 (2009年07月22日)">国内开源的PHP应用程序</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/21/2041/" title="PHP获取字符串编码类型 (2009年07月21日)">PHP获取字符串编码类型</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3820/" title="php 加密解密类(含公钥) (2010年06月8日)">php 加密解密类(含公钥)</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/01/26/2468/" title="9个PHP库简介和下载 (2010年01月26日)">9个PHP库简介和下载</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/01/26/2470/" title="21个实用便利的PHP代码 (2010年01月26日)">21个实用便利的PHP代码</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/09/18/2254/" title="高效互联网营销的18种技巧 (2009年09月18日)">高效互联网营销的18种技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/29/4248/" title="雅虎发布网站性能监测工具：从用户角度衡量 (2010年06月29日)">雅虎发布网站性能监测工具：从用户角度衡量</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/05/27/3401/" title="陈光锋[访谈]：地方新站如何做运营推广 (2010年05月27日)">陈光锋[访谈]：地方新站如何做运营推广</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/02/03/2483/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>21个实用便利的PHP代码</title>
		<link>http://www.iwanna.cn/archives/2010/01/26/2470/</link>
		<comments>http://www.iwanna.cn/archives/2010/01/26/2470/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 05:15:25 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2470</guid>
		<description><![CDATA[1. PHP可阅读随机字符串
此代码将创建一个可阅读的字符串，使其更接近词典中的单词，实用且具有密码验证功能。
/**************
*@length - length of random string (must be a multiple of 2)
**************/
function readable_random_string($length = 6){
    $conso=array("b","c","d","f","g","h","j","k","l",
    "m","n","p","r","s","t","v","w","x","y","z");
    $vocal=array("a","e","i","o","u");
    $password="";
    srand ((double)microtime()*1000000);
    $max = $length/2;
    for($i=1; $i&#60;=$max; $i++)
    {
   [...]]]></description>
			<content:encoded><![CDATA[<h3>1. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>可阅读随机字符串</h3>
<p>此代码将创建一个可阅读的字符串，使其更接近词典中的单词，实用且具有密码验证功能。</p>
<pre><code>/**************
*@length - length of random string (must be a multiple of 2)
**************/
function readable_random_string($length = 6){
    $conso=array("b","c","d","f","g","h","j","k","l",
    "m","n","p","r","s","t","v","w","x","y","z");
    $vocal=array("a","e","i","o","u");
    $password="";
    srand ((double)microtime()*1000000);
    $max = $length/2;
    for($i=1; $i&lt;=$max; $i++)
    {
    $password.=$conso[rand(0,19)];
    $password.=$vocal[rand(0,4)];
    }
    return $password;
}</code></pre>
<p><span id="more-2470"></span></p>
<h3>2. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>生成一个随机字符串</h3>
<p>如果不需要可阅读的字符串，使用此函数替代，即可创建一个随机字符串，作为用户的随机密码等。</p>
<pre><code>/*************
*@l - length of random string
*/
function generate_rand($l){
  $c= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  srand((double)microtime()*1000000);
  for($i=0; $i&lt;$l; $i++) {
      $rand.= $c[rand()%strlen($c)];
  }
  return $rand;
 }</code></pre>
<h3>3. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>编码电子邮件地址</h3>
<p>使用此代码，可以将任何电子邮件地址编码为 <a href="http://paranimage.com/category/dede/html/">html</a> 字符实体，以防止被垃圾邮件程序收集。</p>
<pre><code>function encode_email($email='info@domain.com', $linkText='Contact Us', $attrs ='class="emailencoder"' )
{
    // remplazar aroba y puntos
    $email = str_replace('@', '&amp;#64;', $email);
    $email = str_replace('.', '&amp;#46;', $email);
    $email = str_split($email, 5);  

    $linkText = str_replace('@', '&amp;#64;', $linkText);
    $linkText = str_replace('.', '&amp;#46;', $linkText);
    $linkText = str_split($linkText, 5);  

    $part1 = '&lt;a href="ma';
    $part2 = 'ilto&amp;#58;';
    $part3 = '" '. $attrs .' &gt;';
    $part4 = '&lt;/a&gt;';  

    $encoded = '&lt;script type="text/<a href="http://paranimage.com/category/dede/javascript/">javascript</a>"&gt;';
    $encoded .= "document.write('$part1');";
    $encoded .= "document.write('$part2');";
    foreach($email as $e)
    {
            $encoded .= "document.write('$e');";
    }
    $encoded .= "document.write('$part3');";
    foreach($linkText as $l)
    {
            $encoded .= "document.write('$l');";
    }
    $encoded .= "document.write('$part4');";
    $encoded .= '&lt;/script&gt;';  

    return $encoded;
}</code></pre>
<h3>4. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>验证邮件地址</h3>
<p>电子邮件验证也许是中最常用的网页表单验证，此代码除了验证电子邮件地址，也可以选择检查邮件域所属 DNS 中的 MX 记录，使邮件验证功能更加强大。</p>
<pre><code>function is_valid_email($email, $test_mx = false)
{
    if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
        if($test_mx)
        {
            list($username, $domain) = split("@", $email);
            return getmxrr($domain, $mxrecords);
        }
        else
            return true;
    else
        return false;
}</code></pre>
<h3>5. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>列出目录内容</h3>
<pre><code>function list_files($dir)
{
    if(is_dir($dir))
    {
        if($handle = opendir($dir))
        {
            while(($file = readdir($handle)) !== false)
            {
                if($file != "." &amp;&amp; $file != ".." &amp;&amp; $file != "Thumbs.db")
                {
                    echo '&lt;a target="_blank" href="'.$dir.$file.'"&gt;'.$file.'&lt;/a&gt;&lt;br&gt;'."\n";
                }
            }
            closedir($handle);
        }
    }
}</code></pre>
<h3>6. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>销毁目录</h3>
<p>删除一个目录，包括它的内容。</p>
<pre><code>/*****
*@dir - Directory to destroy
*@virtual[optional]- whether a virtual directory
*/
function destroyDir($dir, $virtual = false)
{
    $ds = DIRECTORY_SEPARATOR;
    $dir = $virtual ? realpath($dir) : $dir;
    $dir = substr($dir, -1) == $ds ? substr($dir, 0, -1) : $dir;
    if (is_dir($dir) &amp;&amp; $handle = opendir($dir))
    {
        while ($file = readdir($handle))
        {
            if ($file == '.' || $file == '..')
            {
                continue;
            }
            elseif (is_dir($dir.$ds.$file))
            {
                destroyDir($dir.$ds.$file);
            }
            else
            {
                unlink($dir.$ds.$file);
            }
        }
        closedir($handle);
        rmdir($dir);
        return true;
    }
    else
    {
        return false;
    }
}</code></pre>
<h3>7. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>解析 JSON 数据</h3>
<p>与大多数流行的 Web 服务如 <a href="http://paranimage.com/category/apps/twitter/">twitter</a> 通过开放 API 来提供数据一样，它总是能够知道如何解析 API 数据的各种传送格式，包括 JSON，XML 等等。</p>
<pre><code>$json_string='{"id":1,"name":"foo","email":"foo@foobar.com","interest":["<a href="http://paranimage.com/category/apps/wordpress/">wordpress</a>","<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">php</a>"]} ';
$obj=json_decode($json_string);
echo $obj-&gt;name; //prints foo
echo $obj-&gt;interest[1]; //prints <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">php</a></code></pre>
<h3>8. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>解析 XML 数据</h3>
<pre><code>//xml string
$xml_string="&lt;?xml version='1.0'?&gt;
&lt;users&gt;
   &lt;user id='398'&gt;
      &lt;name&gt;Foo&lt;/name&gt;
      &lt;email&gt;foo@bar.com&lt;/name&gt;
   &lt;/user&gt;
   &lt;user id='867'&gt;
      &lt;name&gt;Foobar&lt;/name&gt;
      &lt;email&gt;foobar@foo.com&lt;/name&gt;
   &lt;/user&gt;
&lt;/users&gt;";  

//load the xml string using simplexml
$xml = simplexml_load_string($xml_string);  

//loop through the each node of user
foreach ($xml-&gt;user as $user)
{
   //access attribute
   echo $user['id'], '  ';
   //subnodes are accessed by -&gt; operator
   echo $user-&gt;name, '  ';
   echo $user-&gt;email, '&lt;br /&gt;';
}</code></pre>
<h3>9. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>创建日志缩略名</h3>
<p>创建用户友好的日志缩略名。</p>
<pre><code>function create_slug($string){
    $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
    return $slug;
}</code></pre>
<h3>10. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>获取客户端真实 IP 地址</h3>
<p>该函数将获取用户的真实 IP 地址，即便他使用代理服务器。</p>
<pre><code>function getRealIpAddr()
{
    if (!emptyempty($_SERVER['HTTP_CLIENT_IP']))
    {
        $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR']))
    //to check ip is pass from proxy
    {
        $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}</code></pre>
<h3>11. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>强制性文件下载</h3>
<p>为用户提供强制性的文件下载功能。</p>
<pre><code>/********************
*@file - path to file
*/
function force_download($file)
{
    if ((isset($file))&amp;&amp;(file_exists($file))) {
       header("Content-length: ".filesize($file));
       header('Content-Type: application/octet-stream');
       header('Content-Disposition: attachment; filename="' . $file . '"');
       readfile("$file");
    } else {
       echo "No file selected";
    }
}</code></pre>
<h3>12. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>创建标签云</h3>
<pre><code>function getCloud( $data = array(), $minFontSize = 12, $maxFontSize = 30 )
{
    $minimumCount = min( array_values( $data ) );
    $maximumCount = max( array_values( $data ) );
    $spread       = $maximumCount - $minimumCount;
    $cloudHTML    = '';
    $cloudTags    = array();  

    $spread == 0 &amp;&amp; $spread = 1;  

    foreach( $data as $tag =&gt; $count )
    {
        $size = $minFontSize + ( $count - $minimumCount )
            * ( $maxFontSize - $minFontSize ) / $spread;
        $cloudTags[] = '&lt;a style="font-size: ' . floor( $size ) . 'px'
        . '" href="#" title="\'' . $tag  .
        '\' returned a count of ' . $count . '"&gt;'
        . htmlspecialchars( stripslashes( $tag ) ) . '&lt;/a&gt;';
    }  

    return join( "\n", $cloudTags ) . "\n";
}
/**************************
****   Sample usage    ***/
$arr = Array('Actionscript' =&gt; 35, 'Adobe' =&gt; 22, 'Array' =&gt; 44, 'Background' =&gt; 43,
    'Blur' =&gt; 18, 'Canvas' =&gt; 33, 'Class' =&gt; 15, 'Color Palette' =&gt; 11, 'Crop' =&gt; 42,
    'Delimiter' =&gt; 13, 'Depth' =&gt; 34, 'Design' =&gt; 8, 'Encode' =&gt; 12, 'Encryption' =&gt; 30,
    'Extract' =&gt; 28, 'Filters' =&gt; 42);
echo getCloud($arr, 12, 36);</code></pre>
<h3>13. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>寻找两个字符串的相似性</h3>
<p><a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a> 提供了一个极少使用的 similar_text 函数，但此函数非常有用，用于比较两个字符串并返回相似程度的百分比。</p>
<pre><code>similar_text($string1, $string2, $percent);
//$percent will have the percentage of similarity</code></pre>
<h3>14. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>在应用程序中使用 Gravatar 通用头像</h3>
<p>随着 WordPress 越来越普及，Gravatar 也随之流行。由于 Gravatar 提供了易于使用的 API，将其纳入应用程序也变得十分方便。</p>
<pre><code>/******************
*@email - Email address to show gravatar for
*@size - size of gravatar
*@default - URL of default gravatar to use
*@rating - rating of Gravatar(G, PG, R, X)
*/
function show_gravatar($email, $size, $default, $rating)
{
    echo '&lt;img src="http://www.gravatar.com/avatar.<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">php</a>?gravatar_id='.md5($email).
        '&amp;default='.$default.'&amp;size='.$size.'&amp;rating='.$rating.'" width="'.$size.'px"
        height="'.$size.'px" /&gt;';
}</code></pre>
<h3>15. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>在字符断点处截断文字</h3>
<p>所谓断字 (word break)，即一个单词可在转行时断开的地方。这一函数将在断字处截断字符串。</p>
<pre><code>// Original <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a> code by Chirp Internet: www.chirp.com.au
// Please acknowledge use of this code by including this header.
function myTruncate($string, $limit, $break=".", $pad="...") {
    // return with no change if string is shorter than $limit
    if(strlen($string) &lt;= $limit)
        return $string;   

    // is $break present between $limit and the end of the string?
    if(false !== ($breakpoint = strpos($string, $break, $limit))) {
        if($breakpoint &lt; strlen($string) - 1) {
            $string = substr($string, 0, $breakpoint) . $pad;
        }
    }
    return $string;
}
/***** Example ****/
$short_string=myTruncate($long_string, 100, ' ');</code></pre>
<h3>16. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>文件 Zip 压缩</h3>
<pre><code>/* creates a compressed zip file */
function create_zip($files = array(),$destination = '',$overwrite = false) {
    //if the zip file already exists and overwrite is false, return false
    if(file_exists($destination) &amp;&amp; !$overwrite) { return false; }
    //vars
    $valid_files = array();
    //if files were passed in...
    if(is_array($files)) {
        //cycle through each file
        foreach($files as $file) {
            //make sure the file exists
            if(file_exists($file)) {
                $valid_files[] = $file;
            }
        }
    }
    //if we have good files...
    if(count($valid_files)) {
        //create the archive
        $zip = new ZipArchive();
        if($zip-&gt;open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
            return false;
        }
        //add the files
        foreach($valid_files as $file) {
            $zip-&gt;addFile($file,$file);
        }
        //debug
        //echo 'The zip archive contains ',$zip-&gt;numFiles,' files with a status of ',$zip-&gt;status;  

        //close the zip -- done!
        $zip-&gt;close();  

        //check to make sure the file exists
        return file_exists($destination);
    }
    else
    {
        return false;
    }
}
/***** Example Usage ***/
$files=array('file1.jpg', 'file2.jpg', 'file3.gif');
create_zip($files, 'myzipfile.zip', true);</code></pre>
<h3>17. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>解压缩 Zip 文件</h3>
<pre><code>/**********************
*@file - path to zip file
*@destination - destination directory for unzipped files
*/
function unzip_file($file, $destination){
    // create object
    $zip = new ZipArchive() ;
    // open archive
    if ($zip-&gt;open($file) !== TRUE) {
        die (’Could not open archive’);
    }
    // extract contents to destination directory
    $zip-&gt;extractTo($destination);
    // close archive
    $zip-&gt;close();
    echo 'Archive extracted to directory';
}</code></pre>
<h3>18. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>为 URL 地址预设 http 字符串</h3>
<p>有时需要接受一些表单中的网址输入，但用户很少添加 http:// 字段，此代码将为网址添加该字段。</p>
<pre><code>if (!preg_match("/^(http|ftp):/", $_POST['url'])) {
   $_POST['url'] = 'http://'.$_POST['url'];
}</code></pre>
<h3>19. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>将网址字符串转换成超级链接</h3>
<p>该函数将 URL 和 E-mail 地址字符串转换为可点击的超级链接。</p>
<pre><code>function makeClickableLinks($text) {
 $text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&amp;//=]+)',
 '&lt;a href="\1"&gt;\1&lt;/a&gt;', $text);
 $text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&amp;//=]+)',
 '\1&lt;a href="http://\2"&gt;\2&lt;/a&gt;', $text);
 $text = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})',
 '&lt;a href="mailto:\1"&gt;\1&lt;/a&gt;', $text);  

return $text;
}</code></pre>
<h3>20. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>调整图像尺寸</h3>
<p>创建图像缩略图需要许多时间，此代码将有助于了解缩略图的逻辑。</p>
<pre><code>/**********************
*@filename - path to the image
*@tmpname - temporary path to thumbnail
*@xmax - max width
*@ymax - max height
*/
function resize_image($filename, $tmpname, $xmax, $ymax)
{
    $ext = explode(".", $filename);
    $ext = $ext[count($ext)-1];  

    if($ext == "jpg" || $ext == "jpeg")
        $im = imagecreatefromjpeg($tmpname);
    elseif($ext == "png")
        $im = imagecreatefrompng($tmpname);
    elseif($ext == "gif")
        $im = imagecreatefromgif($tmpname);  

    $x = imagesx($im);
    $y = imagesy($im);  

    if($x &lt;= $xmax &amp;&amp; $y &lt;= $ymax)
        return $im;  

    if($x &gt;= $y) {
        $newx = $xmax;
        $newy = $newx * $y / $x;
    }
    else {
        $newy = $ymax;
        $newx = $x / $y * $newy;
    }  

    $im2 = imagecreatetruecolor($newx, $newy);
    imagecopyresized($im2, $im, 0, 0, 0, 0, floor($newx), floor($newy), $x, $y);
    return $im2;
}</code></pre>
<h3>21. <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>检测 <a href="http://paranimage.com/tag/ajax/">ajax</a> 请求</h3>
<p>大多数的 <a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a> 框架如 <a href="http://paranimage.com/tag/jquery/">jquery</a>，Mootools 等，在发出 Ajax 请求时，都会发送额外的 HTTP_X_REQUESTED_WITH 头部信息，头当他们一个ajax请求，因此你可以在服务器端侦测到 Ajax 请求。</p>
<pre><code>if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) &amp;&amp; strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
    //If AJAX Request Then
}else{
//something else
}</code></pre>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/01/26/2470/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/01/26/2470/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/01/26/2470/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/01/26/2470/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/01/26/2470/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/develope/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://www.iwanna.cn/tags/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/07/21/2041/" title="PHP获取字符串编码类型 (2009年07月21日)">PHP获取字符串编码类型</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3820/" title="php 加密解密类(含公钥) (2010年06月8日)">php 加密解密类(含公钥)</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/01/26/2468/" title="9个PHP库简介和下载 (2010年01月26日)">9个PHP库简介和下载</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/02/03/2483/" title="10个免费开源微博客程序 (2010年02月3日)">10个免费开源微博客程序</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/02/149/" title="设计模式之单例模式 (2009年04月2日)">设计模式之单例模式</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/31/2088/" title="论述PHP开发框架: What, When, Why and Which? (2009年07月31日)">论述PHP开发框架: What, When, Why and Which?</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3767/" title="腾讯PHP程序员面试题目 (2010年06月8日)">腾讯PHP程序员面试题目</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/03/171/" title="简易Wordpress模板代码帮助手册中文版 (2009年04月3日)">简易Wordpress模板代码帮助手册中文版</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3769/" title="用PHP数组对百万数据进行排重 (2010年06月8日)">用PHP数组对百万数据进行排重</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/05/1933/" title="用 PHP 读取和编写 XML DOM (2009年07月5日)">用 PHP 读取和编写 XML DOM</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/01/26/2470/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>9个PHP库简介和下载</title>
		<link>http://www.iwanna.cn/archives/2010/01/26/2468/</link>
		<comments>http://www.iwanna.cn/archives/2010/01/26/2468/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 04:51:25 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2468</guid>
		<description><![CDATA[9个非常有用的PHP类库，相信一定可以为你的WEB开发提供更好和更为快速的方法。
1. ReCAPTCHA
The reCAPTCHA 库让你可以为网站创建高级的 CAPTCHA 系统，这个系统其实是用来生成验证信息的，甚至包括语音验证。当然还有 reCAPTCHA 服务可以使用，其提供易用的免费 API，值得在你的网站试试。
下载 ReCAPTCHA &#124; 获得 API Key &#124; 文档

2. Akismet
Akismet 是个供小站点使用的免费服务，用来修改规范将加入数据库的评论（防止恶意评论）。这个库一直在改善。
详细参考 Akismet 介绍
3. Services_JSON
JSON 是人类能容易理解的信息传递格式。不过如果你并未使用 5.2.0 以后版本的 PHP（从那以后 PHP 有了 JSON 官方支持），那么就应该试试这个库。
查看 Services_JSON
4. Smarty
Smarty就是鼎鼎大名的官方模版库了。它提供了不少有用的功能。其实使用 PHP 的人都该瞧瞧。
下载 Smarty &#124; 官方文档
5. pChart
pChart 是极其有名的数据图形库。它能为数据展示提供各种美丽的图表。其实使用 PHP 的人都一定会碰到使用它的情况。
下载 pChart &#124; 文档&#124; 查看演示
6. SimplePie
SimplePie 让你轻松提取内容（好比 RSS feeds）。它能和多种语言交互，也能处理各种格式的 feed。
下载 SimplePie &#124; 查看文档&#124; 为独特的 RSS Feeds [...]]]></description>
			<content:encoded><![CDATA[<p>9个非常有用的<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>类库，相信一定可以为你的WEB<a href="http://paranimage.com/category/dede/">开发</a>提供更好和更为快速的方法。</p>
<h3>1. ReCAPTCHA</h3>
<p><a href="http://recaptcha.net/plugins/php/" target="_blank">The reCAPTCHA</a> 库让你可以为网站创建高级的 CAPTCHA 系统，这个系统其实是用来生成验证信息的，甚至包括语音验证。当然还有 reCAPTCHA 服务可以使用，其提供易用的免费 API，值得在你的网站试试。</p>
<p><a href="http://code.google.com/p/recaptcha/downloads/list?q=label:phplib-Latest" target="_blank">下载 ReCAPTCHA</a> | <a href="http://recaptcha.net/api/getkey?app=php" target="_blank">获得 API Key</a> | <a href="http://recaptcha.net/plugins/php/" target="_blank">文档</a><br />
<span id="more-2468"></span></p>
<h3>2. Akismet</h3>
<p><a href="http://akismet.com/" target="_blank">Akismet</a> 是个供小站点使用的免费服务，用来修改规范将加入数据库的评论（防止恶意评论）。这个库一直在改善。</p>
<p><a href="http://net.tutsplus.com/tutorials/tools-and-tips/the-best-ways-to-fight-spam/" target="_blank">详细参考 Akismet 介绍</a></p>
<h3>3. Services_JSON</h3>
<p>JSON 是人类能容易理解的信息传递格式。不过如果你并未使用 5.2.0 以后版本的 <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>（从那以后 <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a> 有了 JSON 官方支持），那么就应该试试这个库。</p>
<p><a href="http://pear.php.net/package/Services_JSON" target="_blank">查看 Services_JSON</a></p>
<h3>4. Smarty</h3>
<p><a href="http://smarty.net/" target="_blank">Smarty</a>就是鼎鼎大名的官方模版库了。它提供了不少有用的功能。其实使用 <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a> 的人都该瞧瞧。</p>
<p><a href="http://smarty.net/download.php" target="_blank">下载 Smarty</a> | <a href="http://smarty.net/docs.php" target="_blank">官方文档</a></p>
<h3>5. pChart</h3>
<p><a href="http://pchart.sourceforge.net/index.php" target="_blank">pChart</a> 是极其有名的数据图形库。它能为数据展示提供各种美丽的图表。其实使用 <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a> 的人都一定会碰到使用它的情况。</p>
<p><a href="http://pchart.sourceforge.net/download.php" target="_blank">下载 pChart</a> | <a href="http://pchart.sourceforge.net/documentation.php" target="_blank">文档</a>| <a href="http://pchart.sourceforge.net/demo.php" target="_blank">查看演示</a></p>
<h3>6. SimplePie</h3>
<p><a href="http://simplepie.org/" target="_blank">SimplePie</a> 让你轻松提取内容（好比 RSS feeds）。它能和多种语言交互，也能处理各种格式的 feed。</p>
<p><a href="http://simplepie.org/downloads/" target="_blank">下载 SimplePie</a> | <a href="http://simplepie.org/wiki/" target="_blank">查看文档</a>| <a href="http://net.tutsplus.com/videos/screencasts/extending-simplepie-to-parse-unique-rss-feeds/" target="_blank">为独特的 RSS Feeds 拓展 SimplePie </a></p>
<h3>7. XML-RPC <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a> Library</h3>
<p>有时你需要使用 XML-RPC 技术去和其他网站交互，那么试试这个 <a href="http://phpxmlrpc.sourceforge.net/" target="_blank">XML-RPC PHP</a> 库吧。</p>
<p><a href="http://phpxmlrpc.sourceforge.net/#download" target="_blank">下载 XML-RPC PHP</a> | <a href="http://phpxmlrpc.sourceforge.net/#interest" target="_blank">查看文档</a></p>
<h3>8. Amazon S3</h3>
<p>Amazon 有名的云计算平台叫做 “S3″。这里就有<a href="http://undesigned.org.za/2007/10/22/amazon-s3-php-class" target="_blank">Amazon S3 库</a> 让你不用任何附加工具就可以使用云，上传大量数据文件。</p>
<p><a href="http://amazon-s3-php-class.googlecode.com/files/s3-php5-curl_0.3.9.tar.gz" target="_blank">下载 Amazon S3 PHP Class</a></p>
<h3>9. PHPMailer</h3>
<p>大多数 web 应用都在使用 <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a> 的 mail() 函数。PHPMailer 让你更加灵活地处理 Email 的发出，不但支持%E</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/01/26/2468/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/01/26/2468/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/01/26/2468/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/01/26/2468/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/01/26/2468/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/develope/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://www.iwanna.cn/tags/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/07/21/2041/" title="PHP获取字符串编码类型 (2009年07月21日)">PHP获取字符串编码类型</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3820/" title="php 加密解密类(含公钥) (2010年06月8日)">php 加密解密类(含公钥)</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/01/26/2470/" title="21个实用便利的PHP代码 (2010年01月26日)">21个实用便利的PHP代码</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/02/03/2483/" title="10个免费开源微博客程序 (2010年02月3日)">10个免费开源微博客程序</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/02/149/" title="设计模式之单例模式 (2009年04月2日)">设计模式之单例模式</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/31/2088/" title="论述PHP开发框架: What, When, Why and Which? (2009年07月31日)">论述PHP开发框架: What, When, Why and Which?</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3767/" title="腾讯PHP程序员面试题目 (2010年06月8日)">腾讯PHP程序员面试题目</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/03/171/" title="简易Wordpress模板代码帮助手册中文版 (2009年04月3日)">简易Wordpress模板代码帮助手册中文版</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3769/" title="用PHP数组对百万数据进行排重 (2010年06月8日)">用PHP数组对百万数据进行排重</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/05/1933/" title="用 PHP 读取和编写 XML DOM (2009年07月5日)">用 PHP 读取和编写 XML DOM</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/01/26/2468/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript中的64位加密及解密</title>
		<link>http://www.iwanna.cn/archives/2009/12/17/2430/</link>
		<comments>http://www.iwanna.cn/archives/2009/12/17/2430/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 05:00:59 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2430</guid>
		<description><![CDATA[JavaScript中的64位加密及解密的两个方法。

function base64Encode(text){
if (/([^\u0000-\u00ff])/.test(text)){
throw new Error(&#8220;Can&#8217;t base64 encode non-ASCII characters.&#8221;);
}
var digits = &#8220;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&#8221;,
i = 0,
cur, prev, byteNum,
result=[];
while(i &#60; text.length){
cur = text.charCodeAt(i);
byteNum = i % 3;
switch(byteNum){
case 0: //first byte
result.push(digits.charAt(cur &#62;&#62; 2));
break;
case 1: //second byte
result.push(digits.charAt((prev &#38; 3) &#60;&#60; 4 &#124; (cur &#62;&#62; 4)));
break;
case 2: //third byte
result.push(digits.charAt((prev &#38; 0&#215;0f) &#60;&#60; 2 &#124; (cur &#62;&#62; 6)));
result.push(digits.charAt(cur &#38; 0&#215;3f));
break;
}
prev = cur;
i++;
}
if [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>中的64位加密及解密的两个方法。<br />
<span id="more-2430"></span><br />
function base64Encode(text){</p>
<p>if (/([^\u0000-\u00ff])/.test(text)){<br />
throw new Error(&#8220;Can&#8217;t base64 encode non-ASCII characters.&#8221;);<br />
}</p>
<p>var digits = &#8220;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&#8221;,<br />
i = 0,<br />
cur, prev, byteNum,<br />
result=[];</p>
<p>while(i &lt; text.length){</p>
<p>cur = text.charCodeAt(i);<br />
byteNum = i % 3;</p>
<p>switch(byteNum){<br />
case 0: //first byte<br />
result.push(digits.charAt(cur &gt;&gt; 2));<br />
break;</p>
<p>case 1: //second byte<br />
result.push(digits.charAt((prev &amp; 3) &lt;&lt; 4 | (cur &gt;&gt; 4)));<br />
break;</p>
<p>case 2: //third byte<br />
result.push(digits.charAt((prev &amp; 0&#215;0f) &lt;&lt; 2 | (cur &gt;&gt; 6)));<br />
result.push(digits.charAt(cur &amp; 0&#215;3f));<br />
break;<br />
}</p>
<p>prev = cur;<br />
i++;<br />
}</p>
<p>if (byteNum == 0){<br />
result.push(digits.charAt((prev &amp; 3) &lt;&lt; 4));<br />
result.push(&#8220;==&#8221;);<br />
} else if (byteNum == 1){<br />
result.push(digits.charAt((prev &amp; 0&#215;0f) &lt;&lt; 2));<br />
result.push(&#8220;=&#8221;);<br />
}</p>
<p>return result.join(&#8220;&#8221;);<br />
}</p>
<p>function base64Decode(text){</p>
<p>text = text.replace(/\s/g,&#8221;");</p>
<p>if(!(/^[a-z0-9\+\/\s]+\={0,2}$/i.test(text)) || text.length % 4 &gt; 0){<br />
throw new Error(&#8220;Not a base64-encoded string.&#8221;);<br />
}</p>
<p>//local variables<br />
var digits = &#8220;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&#8221;,<br />
cur, prev, digitNum,<br />
i=0,<br />
result = [];</p>
<p>text = text.replace(/=/g, &#8220;&#8221;);</p>
<p>while(i &lt; text.length){</p>
<p>cur = digits.indexOf(text.charAt(i));<br />
digitNum = i % 4;</p>
<p>switch(digitNum){</p>
<p>//case 0: first digit &#8211; do nothing, not enough info to work with</p>
<p>case 1: //second digit<br />
result.push(String.fromCharCode(prev &lt;&lt; 2 | cur &gt;&gt; 4));<br />
break;</p>
<p>case 2: //third digit<br />
result.push(String.fromCharCode((prev &amp; 0&#215;0f) &lt;&lt; 4 | cur &gt;&gt; 2));<br />
break;</p>
<p>case 3: //fourth digit<br />
result.push(String.fromCharCode((prev &amp; 3) &lt;&lt; 6 | cur));<br />
break;<br />
}</p>
<p>prev = cur;<br />
i++;<br />
}</p>
<p>return result.join(&#8220;&#8221;);<br />
}</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/12/17/2430/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/12/17/2430/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/12/17/2430/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/12/17/2430/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/12/17/2430/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3772/" title="一个JavaScript分页函数 (2010年06月8日)">一个JavaScript分页函数</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/02/04/2492/" title="js中鼠标滚轮事件详解 (2010年02月4日)">js中鼠标滚轮事件详解</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/29/894/" title="页面输出时一些常用的小技巧 (2009年04月29日)">页面输出时一些常用的小技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/79/" title="表单元素：40个CSS/JS风格和功能技术处理 (2009年03月31日)">表单元素：40个CSS/JS风格和功能技术处理</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/06/4383/" title="网页打开新窗口的解决方案,拒绝屏蔽 (2010年07月6日)">网页打开新窗口的解决方案,拒绝屏蔽</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/04/29/2874/" title="相见恨晚的一些 JavaScript 技巧 (2010年04月29日)">相见恨晚的一些 JavaScript 技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/09/18/2252/" title="用JS制作的网页版NES模拟器 IE8直接出局 (2009年09月18日)">用JS制作的网页版NES模拟器 IE8直接出局</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/77/" title="用css+js控制图片大小的方法 (2009年03月31日)">用css+js控制图片大小的方法</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/02/17/2516/" title="有关 JavaScript 的 10 件让人费解的事情 (2010年02月17日)">有关 JavaScript 的 10 件让人费解的事情</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/11/29/2396/" title="新 API 寻求让 JavaScript 操作本地文件 (2009年11月29日)">新 API 寻求让 JavaScript 操作本地文件</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/12/17/2430/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeIgniter实现多文件上传</title>
		<link>http://www.iwanna.cn/archives/2009/09/13/2241/</link>
		<comments>http://www.iwanna.cn/archives/2009/09/13/2241/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 14:05:46 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[CodeIgniter]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2241</guid>
		<description><![CDATA[方法一：

You either need to give each file input a unique name (featured_image_0, featured_image_1) etc, and process each one in a loop, or overload the Uploader class to handle file upload arrays.
Copying this from an earlier post I made:
So, yeah, I was failing to pass $config from my constructor to CI_Upload’s constructor…

I also updated it so [...]]]></description>
			<content:encoded><![CDATA[<p>方法一：</p>
<div>
<p>You either need to give each file input a unique name (featured_image_0, featured_image_1) etc, and process each one in a loop, or overload the Uploader class to handle file upload arrays.</p>
<p>Copying this from an earlier post I made:</p>
<p>So, yeah, I was failing to pass $config from my constructor to CI_Upload’s constructor…<br />
<span id="more-2241"></span><br />
I also updated it so the API remains the same, just call $this-&gt;upload-&gt;do_upload(), not -&gt;do_multi_upload()</p>
<div><code><span style="color: #000000;"> <span style="color: #0000bb;">&lt;?<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">php</a></p>
<p></span><span style="color: #007700;">class </span><span style="color: #0000bb;">MY_Upload </span><span style="color: #007700;">extends </span><span style="color: #0000bb;">CI_Upload {</p>
<p></span><span style="color: #007700;">function </span><span style="color: #0000bb;">MY_Upload</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$props </span><span style="color: #007700;">= array())<br />
</span><span style="color: #0000bb;">{<br />
parent</span><span style="color: #007700;">::</span><span style="color: #0000bb;">CI_Upload</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$props</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">}</p>
<p></span><span style="color: #007700;">function </span><span style="color: #0000bb;">do_upload</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$field </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'userfile'</span><span style="color: #007700;">)<br />
</span><span style="color: #0000bb;">{<br />
$success </span><span style="color: #007700;">= </span><span style="color: #0000bb;">FALSE</span><span style="color: #007700;">;<br />
if (isset(</span><span style="color: #0000bb;">$_FILES[$field]</span><span style="color: #007700;">) and </span><span style="color: #0000bb;">is_array</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$_FILES[$field][</span><span style="color: #dd0000;">'error'</span><span style="color: #0000bb;">]</span><span style="color: #007700;">))<br />
</span><span style="color: #0000bb;">{<br />
</span><span style="color: #ff8000;">// Create a pseudo file field for each file in our array<br />
</span><span style="color: #007700;">for (</span><span style="color: #0000bb;">$i </span><span style="color: #007700;">= </span><span style="color: #0000bb;">0</span><span style="color: #007700;">; </span><span style="color: #0000bb;">$i </span><span style="color: #007700;">&lt; </span><span style="color: #0000bb;">count</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$_FILES[$field][</span><span style="color: #dd0000;">'error'</span><span style="color: #0000bb;">]</span><span style="color: #007700;">); </span><span style="color: #0000bb;">$i</span><span style="color: #007700;">++)<br />
</span><span style="color: #0000bb;">{<br />
</span><span style="color: #ff8000;">// Give it a name not likely to already exist!<br />
</span><span style="color: #0000bb;">$pseudo_field_name </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'_psuedo_'</span><span style="color: #007700;">. </span><span style="color: #0000bb;">$field </span><span style="color: #007700;">.</span><span style="color: #dd0000;">'_'</span><span style="color: #007700;">. </span><span style="color: #0000bb;">$i</span><span style="color: #007700;">;<br />
</span><span style="color: #ff8000;">// Mimick the file<br />
</span><span style="color: #0000bb;">$_FILES[$pseudo_field_name] </span><span style="color: #007700;">= array(<br />
</span><span style="color: #dd0000;">'name' </span><span style="color: #007700;">=&gt; </span><span style="color: #0000bb;">$_FILES[$field][</span><span style="color: #dd0000;">'name'</span><span style="color: #0000bb;">][$i]</span><span style="color: #007700;">,<br />
</span><span style="color: #dd0000;">'size' </span><span style="color: #007700;">=&gt; </span><span style="color: #0000bb;">$_FILES[$field][</span><span style="color: #dd0000;">'size'</span><span style="color: #0000bb;">][$i]</span><span style="color: #007700;">,<br />
</span><span style="color: #dd0000;">'type' </span><span style="color: #007700;">=&gt; </span><span style="color: #0000bb;">$_FILES[$field][</span><span style="color: #dd0000;">'type'</span><span style="color: #0000bb;">][$i]</span><span style="color: #007700;">,<br />
</span><span style="color: #dd0000;">'tmp_name' </span><span style="color: #007700;">=&gt; </span><span style="color: #0000bb;">$_FILES[$field][</span><span style="color: #dd0000;">'tmp_name'</span><span style="color: #0000bb;">][$i]</span><span style="color: #007700;">,<br />
</span><span style="color: #dd0000;">'error' </span><span style="color: #007700;">=&gt; </span><span style="color: #0000bb;">$_FILES[$field][</span><span style="color: #dd0000;">'error'</span><span style="color: #0000bb;">][$i]<br />
</span><span style="color: #007700;">);<br />
</span><span style="color: #ff8000;">// Let do_upload work it's magic on our pseudo file field<br />
</span><span style="color: #0000bb;">$success </span><span style="color: #007700;">= </span><span style="color: #0000bb;">parent</span><span style="color: #007700;">::</span><span style="color: #0000bb;">do_upload</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$pseudo_field_name</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">}<br />
}<br />
</span><span style="color: #007700;">else<br />
</span><span style="color: #ff8000;">// Works just like do_upload since it's not an array of files<br />
</span><span style="color: #0000bb;">{<br />
$success </span><span style="color: #007700;">= </span><span style="color: #0000bb;">parent</span><span style="color: #007700;">::</span><span style="color: #0000bb;">do_upload</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$field</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">}<br />
</span><span style="color: #007700;">return </span><span style="color: #0000bb;">$success</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">}</p>
<p>}</p>
<p></span> </span> </code></div>
<p>A few caveats that should be addressed: The $this-&gt;upload-&gt;data() method will only return data of the last file to be uploaded, not all files uploaded. If one of the fields errors, there is no way to know which individual one was erroneous. Not impossible problems to solve, but the code above has yet to address either of them. I’ll work on rounding it out if I get some time, or need to do it myself.</p>
<p>For now, it might be good to just have unique names for x number of upload fields, then process each one individually.</p>
<p>Here’s my controller:</p>
<div><code><span style="color: #000000;"> <span style="color: #0000bb;">&lt;?<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">php</a></p>
<p></span><span style="color: #007700;">class </span><span style="color: #0000bb;">Upload </span><span style="color: #007700;">extends </span><span style="color: #0000bb;">Controller {</p>
<p></span><span style="color: #007700;">function </span><span style="color: #0000bb;">Upload</span><span style="color: #007700;">()<br />
</span><span style="color: #0000bb;">{<br />
parent</span><span style="color: #007700;">::</span><span style="color: #0000bb;">Controller</span><span style="color: #007700;">();<br />
</span><span style="color: #0000bb;">}</p>
<p></span><span style="color: #007700;">function </span><span style="color: #0000bb;">index</span><span style="color: #007700;">()<br />
</span><span style="color: #0000bb;">{<br />
$data </span><span style="color: #007700;">= array(<br />
</span><span style="color: #dd0000;">'error' </span><span style="color: #007700;">=&gt; array(),<br />
</span><span style="color: #dd0000;">'upload_data' </span><span style="color: #007700;">=&gt; array(),<br />
);</p>
<p></span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">load</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">helper</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'form'</span><span style="color: #007700;">);</p>
<p></span><span style="color: #0000bb;">$config[</span><span style="color: #dd0000;">'upload_path'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'uploads'</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$config[</span><span style="color: #dd0000;">'allowed_types'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'gif|jpg|png'</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$config[</span><span style="color: #dd0000;">'max_size'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'2048'</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$config[</span><span style="color: #dd0000;">'max_width'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'1024'</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$config[</span><span style="color: #dd0000;">'max_height'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'768'</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">load</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">library</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'upload'</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$config</span><span style="color: #007700;">);</p>
<p>if ( !</p>
<p></span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">upload</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">do_upload</span><span style="color: #007700;">())<br />
</span><span style="color: #0000bb;">{<br />
$data[</span><span style="color: #dd0000;">'error'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= array(</span><span style="color: #dd0000;">'error' </span><span style="color: #007700;">=&gt; </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">upload</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">display_errors</span><span style="color: #007700;">());<br />
</span><span style="color: #0000bb;">}<br />
</span><span style="color: #007700;">else<br />
</span><span style="color: #0000bb;">{<br />
$data[</span><span style="color: #dd0000;">'upload_data'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">upload</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">data</span><span style="color: #007700;">();<br />
</span><span style="color: #0000bb;">}</p>
<p>$this</p>
<p></span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">load</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'sandbox/upload'</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$data</span><span style="color: #007700;">);</p>
<p></span><span style="color: #0000bb;">}</p>
<p>}</p>
<p></span> </span> </code></div>
<p>And my view:</p>
<div><code><span style="color: #000000;"> <span style="color: #007700;">&lt;!</span><span style="color: #0000bb;">DOCTYPE <a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">html</a> PUBLIC </span><span style="color: #dd0000;">"-//W3C//DTD XHTML 1.0 Strict//EN"<br />
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"</span><span style="color: #007700;">&gt;<br />
&lt;</span><span style="color: #0000bb;"><a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">html</a> </span><span style="color: #007700;">&gt;<br />
&lt;</span><span style="color: #0000bb;">head</span><span style="color: #007700;">&gt;<br />
&lt;</span><span style="color: #0000bb;">title</span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">Multi Upload Test</span><span style="color: #007700;">&lt;/</span><span style="color: #0000bb;">title</span><span style="color: #007700;">&gt;<br />
&lt;</span><span style="color: #0000bb;">meta http</span><span style="color: #007700;">-</span><span style="color: #0000bb;">equiv</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"Content-Type" </span><span style="color: #0000bb;">content</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"text/<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">html</a>; charset=utf-8" </span><span style="color: #007700;">/&gt;<br />
&lt;/</span><span style="color: #0000bb;">head</span><span style="color: #007700;">&gt;<br />
&lt;</span><span style="color: #0000bb;">body</span><span style="color: #007700;">&gt;</p>
<p></span><span style="color: #0000bb;">&lt;? </span><span style="color: #007700;">foreach (</span><span style="color: #0000bb;">$error </span><span style="color: #007700;">as </span><span style="color: #0000bb;">$msg</span><span style="color: #007700;">) : </span><span style="color: #0000bb;">?&gt;<br />
</span><span style="color: #007700;">&lt;</span><span style="color: #0000bb;">div style</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"color: red; display: block; margin: 12px 0"</span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">&lt;?</span><span style="color: #007700;">= </span><span style="color: #0000bb;">$msg ?&gt;</span><span style="color: #007700;">&lt;/</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;<br />
</span><span style="color: #0000bb;">&lt;? </span><span style="color: #007700;">endforeach; </span><span style="color: #0000bb;">?&gt;</p>
<p>&lt;?</p>
<p></span><span style="color: #007700;">if (</span><span style="color: #0000bb;">count</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$upload_data</span><span style="color: #007700;">)) : </span><span style="color: #0000bb;">?&gt;<br />
</span><span style="color: #007700;">&lt;</span><span style="color: #0000bb;">ul</span><span style="color: #007700;">&gt;<br />
</span><span style="color: #0000bb;">&lt;?<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">php</a> </span><span style="color: #007700;">foreach(</span><span style="color: #0000bb;">$upload_data </span><span style="color: #007700;">as </span><span style="color: #0000bb;">$item </span><span style="color: #007700;">=&gt; </span><span style="color: #0000bb;">$value</span><span style="color: #007700;">):</span><span style="color: #0000bb;">?&gt;<br />
</span><span style="color: #007700;">&lt;</span><span style="color: #0000bb;">li</span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">&lt;?<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">php</a> </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$item</span><span style="color: #007700;">;</span><span style="color: #0000bb;">?&gt;</span><span style="color: #007700;">: </span><span style="color: #0000bb;">&lt;?<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">php</a> </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$value</span><span style="color: #007700;">;</span><span style="color: #0000bb;">?&gt;</span><span style="color: #007700;">&lt;/</span><span style="color: #0000bb;">li</span><span style="color: #007700;">&gt;<br />
</span><span style="color: #0000bb;">&lt;?<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">php</a> </span><span style="color: #007700;">endforeach; </span><span style="color: #0000bb;">?&gt;<br />
</span><span style="color: #007700;">&lt;/</span><span style="color: #0000bb;">ul</span><span style="color: #007700;">&gt;<br />
</span><span style="color: #0000bb;">&lt;? </span><span style="color: #007700;">endif; </span><span style="color: #0000bb;">?&gt;</p>
<p></span><span style="color: #007700;">&lt;</span><span style="color: #0000bb;">h1</span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">Single File Upload</span><span style="color: #007700;">&lt;/</span><span style="color: #0000bb;">h1</span><span style="color: #007700;">&gt;</p>
<p></span><span style="color: #0000bb;">&lt;?</span><span style="color: #007700;">= </span><span style="color: #0000bb;">form_open_multipart</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'sandbox/upload'</span><span style="color: #007700;">) </span><span style="color: #0000bb;">?&gt;<br />
</span><span style="color: #007700;">&lt;</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">&lt;?</span><span style="color: #007700;">= </span><span style="color: #0000bb;">form_upload</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'userfile'</span><span style="color: #007700;">) </span><span style="color: #0000bb;">?&gt;</span><span style="color: #007700;">&lt;/</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;<br />
&lt;</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;&lt;</span><span style="color: #0000bb;">button type</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"submit"</span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">Upload</span><span style="color: #007700;">!&lt;/</span><span style="color: #0000bb;">button</span><span style="color: #007700;">&gt;&lt;/</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;<br />
&lt;/</span><span style="color: #0000bb;">form</span><span style="color: #007700;">&gt;</p>
<p>&lt;</p>
<p></span><span style="color: #0000bb;">h1</span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">Multiple File Upload</span><span style="color: #007700;">&lt;/</span><span style="color: #0000bb;">h1</span><span style="color: #007700;">&gt;</p>
<p></span><span style="color: #0000bb;">&lt;?</span><span style="color: #007700;">= </span><span style="color: #0000bb;">form_open_multipart</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'sandbox/upload'</span><span style="color: #007700;">) </span><span style="color: #0000bb;">?&gt;<br />
</span><span style="color: #007700;">&lt;</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">&lt;?</span><span style="color: #007700;">= </span><span style="color: #0000bb;">form_upload</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'userfile[]'</span><span style="color: #007700;">) </span><span style="color: #0000bb;">?&gt;</span><span style="color: #007700;">&lt;/</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;<br />
&lt;</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">&lt;?</span><span style="color: #007700;">= </span><span style="color: #0000bb;">form_upload</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'userfile[]'</span><span style="color: #007700;">) </span><span style="color: #0000bb;">?&gt;</span><span style="color: #007700;">&lt;/</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;<br />
&lt;</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">&lt;?</span><span style="color: #007700;">= </span><span style="color: #0000bb;">form_upload</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'userfile[]'</span><span style="color: #007700;">) </span><span style="color: #0000bb;">?&gt;</span><span style="color: #007700;">&lt;/</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;<br />
&lt;</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;&lt;</span><span style="color: #0000bb;">button type</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"submit"</span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">Upload</span><span style="color: #007700;">!&lt;/</span><span style="color: #0000bb;">button</span><span style="color: #007700;">&gt;&lt;/</span><span style="color: #0000bb;">div</span><span style="color: #007700;">&gt;<br />
&lt;/</span><span style="color: #0000bb;">form</span><span style="color: #007700;">&gt;</p>
<p>&lt;/</p>
<p></span><span style="color: #0000bb;">body</span><span style="color: #007700;">&gt;<br />
&lt;/</span><span style="color: #0000bb;"><a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">html</a></span><span style="color: #007700;">&gt; </span> </span> </code></div>
</div>
<fieldset>
<legend> Signature </legend>
<p>Check out the <a href="http://williamsconcepts.com/ci/codeigniter/libraries/template/">Template Library</a><br />
Oh yeah, I <a href="http://www.twitter.com/wconcepts">tweet</a>, too (regarding CodeIgniter on occassion).</p>
</fieldset>
<p>方法二：</p>
<div><code><span style="color: #000000;"> <span style="color: #0000bb;">public </span><span style="color: #007700;">function </span><span style="color: #0000bb;">upload</span><span style="color: #007700;">()<br />
</span><span style="color: #0000bb;">{<br />
</span><span style="color: #ff8000;">// setup the config<br />
</span><span style="color: #0000bb;">$config[</span><span style="color: #dd0000;">'upload_path'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= </span><span style="color: #dd0000;">"/Projects/{$this-&gt;config-&gt;item('common_path')}/assets/images/series/featured/"</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$config[</span><span style="color: #dd0000;">'allowed_types'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'gif|jpg|png'</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$config[</span><span style="color: #dd0000;">'overwrite'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= </span><span style="color: #0000bb;">TRUE</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$config[</span><span style="color: #dd0000;">'remove_spaces'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= </span><span style="color: #0000bb;">TRUE</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">load</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">library</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'upload'</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$config</span><span style="color: #007700;">);</p>
<p></span><span style="color: #0000bb;">$image_types </span><span style="color: #007700;">= array(</span><span style="color: #dd0000;">"image/jpeg"</span><span style="color: #007700;">, </span><span style="color: #dd0000;">"image/gif"</span><span style="color: #007700;">, </span><span style="color: #dd0000;">"image/x-png"</span><span style="color: #007700;">, </span><span style="color: #dd0000;">"image/png"</span><span style="color: #007700;">);</p>
<p></span><span style="color: #0000bb;">$images </span><span style="color: #007700;">= array();<br />
</span><span style="color: #ff8000;">// $imagesarray = array();<br />
</span><span style="color: #0000bb;">$series </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">input</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">post</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'featured_series'</span><span style="color: #007700;">);<br />
</span><span style="color: #ff8000;">// we are saving the featured series...<br />
</span><span style="color: #007700;">for(</span><span style="color: #0000bb;">$i </span><span style="color: #007700;">=</span><span style="color: #0000bb;">0</span><span style="color: #007700;">; </span><span style="color: #0000bb;">$i </span><span style="color: #007700;">&lt;= </span><span style="color: #0000bb;">count</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$_FILES</span><span style="color: #007700;">); </span><span style="color: #0000bb;">$i</span><span style="color: #007700;">++)<br />
</span><span style="color: #0000bb;">{<br />
</span><span style="color: #007700;">if(</span><span style="color: #0000bb;">in_array</span><span style="color: #007700;">(</span><span style="color: #0000bb;">strtolower</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$_FILES[</span><span style="color: #dd0000;">'featured_image_'</span><span style="color: #007700;">.</span><span style="color: #0000bb;">$i][</span><span style="color: #dd0000;">'type'</span><span style="color: #0000bb;">]</span><span style="color: #007700;">), </span><span style="color: #0000bb;">$image_types</span><span style="color: #007700;">))<br />
</span><span style="color: #0000bb;">{<br />
</span><span style="color: #ff8000;">// get the extension<br />
</span><span style="color: #0000bb;">$extension </span><span style="color: #007700;">= </span><span style="color: #0000bb;">split</span><span style="color: #007700;">(</span><span style="color: #dd0000;">"[/\\.]"</span><span style="color: #007700;">, </span><span style="color: #0000bb;">strtolower</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$_FILES[</span><span style="color: #dd0000;">'featured_image_'</span><span style="color: #007700;">.</span><span style="color: #0000bb;">$i][</span><span style="color: #dd0000;">'name'</span><span style="color: #0000bb;">]</span><span style="color: #007700;">));<br />
</span><span style="color: #0000bb;">$extension </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$extension[</span><span style="color: #007700;">(</span><span style="color: #0000bb;">count</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$extension</span><span style="color: #007700;">)) - </span><span style="color: #0000bb;">1]</span><span style="color: #007700;">;</p>
<p></span><span style="color: #ff8000;">// get the new filename...<br />
</span><span style="color: #0000bb;">$category </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">category_model</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getCatbyID</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$series[$i]</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">$_FILES[</span><span style="color: #dd0000;">'featured_image_'</span><span style="color: #007700;">.</span><span style="color: #0000bb;">$i][</span><span style="color: #dd0000;">'name'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= </span><span style="color: #0000bb;">url_title</span><span style="color: #007700;">(</span><span style="color: #0000bb;">strtolower</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$category[</span><span style="color: #dd0000;">'name'</span><span style="color: #0000bb;">]</span><span style="color: #007700;">), </span><span style="color: #dd0000;">'dash'</span><span style="color: #007700;">) . </span><span style="color: #dd0000;">'.' </span><span style="color: #007700;">. </span><span style="color: #0000bb;">$extension</span><span style="color: #007700;">;<br />
if(!</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">upload</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">do_upload</span><span style="color: #007700;">(</span><span style="color: #dd0000;">"featured_image_{$i}"</span><span style="color: #007700;">))<br />
</span><span style="color: #0000bb;">{<br />
$error </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">upload</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">display_errors</span><span style="color: #007700;">();<br />
</span><span style="color: #0000bb;">dump</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$error</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">} </span><span style="color: #007700;">else </span><span style="color: #0000bb;">{<br />
$data </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">upload</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">data</span><span style="color: #007700;">();<br />
</span><span style="color: #0000bb;">dump</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$data</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">}<br />
}<br />
}<br />
} </span> </span> </code></div>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/09/13/2241/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/09/13/2241/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/09/13/2241/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/09/13/2241/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/09/13/2241/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/tags/codeigniter/" title="CodeIgniter" rel="tag nofollow">CodeIgniter</a>, <a href="http://www.iwanna.cn/topics/develope/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/09/13/2238/" title="让CodeIgniter支持$_GET【很巧妙】 (2009年09月13日)">让CodeIgniter支持$_GET【很巧妙】</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/09/13/2241/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP获取字符串编码类型</title>
		<link>http://www.iwanna.cn/archives/2009/07/21/2041/</link>
		<comments>http://www.iwanna.cn/archives/2009/07/21/2041/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 08:48:29 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2041</guid>
		<description><![CDATA[mb_convert_encoding函数就是那个可以自动识别原字符串编码的函数，但在使用中，发现GBK中的某些汉字被它转成了乱码。
后来又在手册上找到了is_utf8函数，这样，再结合iconv函数，我的问题就解决了。下面帖出这个函数：
function is_utf8($string) {
return preg_match(&#8216;%^(?:
[\x09\x0A\x0D\x20-\x7E]            # ASCII
&#124; [\xC2-\xDF][\x80-\xBF]            # non-overlong 2-byte
&#124;  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
&#124; [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
&#124;  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
&#124;  \xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3
&#124; [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
&#124;  \xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16
)*$%xs&#8217;, $string);
} // function is_utf8
如果想深入研究，建议看下PHP手册上的“Multibyte String Functions”这一部分的内容。

© 我想网 Akon 所有 , 2009. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：PHP, PHP, Source-code, 程序源码

	您可能会感兴趣的其他文章
	
	php 加密解密类(含公钥) 
	9个PHP库简介和下载 
	21个实用便利的PHP代码 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">mb_convert_encoding</span>函数就是那个可以自动识别原字符串编码的函数，但在使用中，发现GBK中的某些汉字被它转成了乱码。</p>
<p>后来又在手册上找到了<span style="color: #0000ff;">is_utf8</span>函数，这样，再结合iconv函数，我的问题就解决了。下面帖出这个函数：</p>
<p>function is_utf8($string) {<br />
return preg_match(&#8216;%^(?:<br />
[\x09\x0A\x0D\x20-\x7E]            # ASCII<br />
| [\xC2-\xDF][\x80-\xBF]            # non-overlong 2-byte<br />
|  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs<br />
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte<br />
|  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates<br />
|  \xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3<br />
| [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15<br />
|  \xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16<br />
)*$%xs&#8217;, $string);<br />
} // function is_utf8</p>
<p>如果想深入研究，建议看下<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with PHP">PHP</a>手册上的“<span style="color: #0000ff;">Multibyte String Functions</span>”这一部分的内容。</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/07/21/2041/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/07/21/2041/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/07/21/2041/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/07/21/2041/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/07/21/2041/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/develope/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://www.iwanna.cn/tags/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://www.iwanna.cn/tags/source-code/" title="Source-code" rel="tag nofollow">Source-code</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3820/" title="php 加密解密类(含公钥) (2010年06月8日)">php 加密解密类(含公钥)</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/01/26/2468/" title="9个PHP库简介和下载 (2010年01月26日)">9个PHP库简介和下载</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/01/26/2470/" title="21个实用便利的PHP代码 (2010年01月26日)">21个实用便利的PHP代码</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/02/03/2483/" title="10个免费开源微博客程序 (2010年02月3日)">10个免费开源微博客程序</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/02/149/" title="设计模式之单例模式 (2009年04月2日)">设计模式之单例模式</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/31/2088/" title="论述PHP开发框架: What, When, Why and Which? (2009年07月31日)">论述PHP开发框架: What, When, Why and Which?</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3767/" title="腾讯PHP程序员面试题目 (2010年06月8日)">腾讯PHP程序员面试题目</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/03/171/" title="简易Wordpress模板代码帮助手册中文版 (2009年04月3日)">简易Wordpress模板代码帮助手册中文版</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/08/3769/" title="用PHP数组对百万数据进行排重 (2010年06月8日)">用PHP数组对百万数据进行排重</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/05/1933/" title="用 PHP 读取和编写 XML DOM (2009年07月5日)">用 PHP 读取和编写 XML DOM</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/07/21/2041/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS图片大小控制的几种方法</title>
		<link>http://www.iwanna.cn/archives/2009/06/03/1701/</link>
		<comments>http://www.iwanna.cn/archives/2009/06/03/1701/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 14:48:43 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[程序源码]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=1701</guid>
		<description><![CDATA[“width:expression(document.body.clientWidth&#62;600?"600px":"auto"); ”

“width:expression(this.width&#62;590?"590px":this.width); ”

© 我想网 Akon 所有 , 2009. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：CSS, CSS, 程序源码

	您可能会感兴趣的其他文章
	
	页面输出时一些常用的小技巧 
	面向对象的CSS 
	针对IE8正式版的CSS hack 
	跨浏览器的CSS固定定位{position:fixed} 
	跨浏览器兼容的 CSS 编码准则和技巧 
	解密CSS Sprites：技巧、工具和教程 
	解决IE6、IE7、Firefox兼容最简单的CSS Hack 
	表单元素：40个CSS/JS风格和功能技术处理 
	网页布局中易犯的10个CSS小错误 
	网站头部右上角的导航实现 



Feed enhanced by Better Feed from  Ozh
]]></description>
			<content:encoded><![CDATA[<pre>“width:expression(document.body.clientWidth&gt;600?"600px":"auto"); ”

“width:expression(this.width&gt;590?"590px":this.width); ”</pre>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/06/03/1701/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/06/03/1701/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/06/03/1701/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/06/03/1701/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/06/03/1701/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/css/" title="CSS" rel="tag nofollow">CSS</a>, <a href="http://www.iwanna.cn/tags/css/" title="CSS" rel="tag nofollow">CSS</a>, <a href="http://www.iwanna.cn/topics/resource/" title="程序源码" rel="tag nofollow">程序源码</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/29/894/" title="页面输出时一些常用的小技巧 (2009年04月29日)">页面输出时一些常用的小技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/16/2019/" title="面向对象的CSS (2009年07月16日)">面向对象的CSS</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/07/981/" title="针对IE8正式版的CSS hack (2009年05月7日)">针对IE8正式版的CSS hack</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/01/920/" title="跨浏览器的CSS固定定位{position:fixed} (2009年05月1日)">跨浏览器的CSS固定定位{position:fixed}</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/09/3823/" title="跨浏览器兼容的 CSS 编码准则和技巧 (2010年06月9日)">跨浏览器兼容的 CSS 编码准则和技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/30/915/" title="解密CSS Sprites：技巧、工具和教程 (2009年04月30日)">解密CSS Sprites：技巧、工具和教程</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/15/405/" title="解决IE6、IE7、Firefox兼容最简单的CSS Hack (2009年04月15日)">解决IE6、IE7、Firefox兼容最简单的CSS Hack</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/79/" title="表单元素：40个CSS/JS风格和功能技术处理 (2009年03月31日)">表单元素：40个CSS/JS风格和功能技术处理</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/10/14/2309/" title="网页布局中易犯的10个CSS小错误 (2009年10月14日)">网页布局中易犯的10个CSS小错误</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1688/" title="网站头部右上角的导航实现 (2009年06月3日)">网站头部右上角的导航实现</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/06/03/1701/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
