<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[废墟]]></title> 
<link>http://anerg.com/index.php</link> 
<description><![CDATA[颓废的蛰伏，等待涅槃的辉煌]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[废墟]]></copyright>
<item>
<link>http://anerg.com/read.php?67</link>
<title><![CDATA[rsync主动同步代码]]></title> 
<author>废墟 &lt;a@anerg.cn&gt;</author>
<category><![CDATA[LINUX]]></category>
<pubDate>Mon, 16 Jan 2012 02:13:18 +0000</pubDate> 
<guid>http://anerg.com/read.php?67</guid> 
<description>
<![CDATA[ 
	目前项目是由多台机器在提供的，他们的代码都一致，但是我又不想写crontab去定时同步代码，因为万一服务器之间连接稍有故障，负载就会飙升。而且我的代码更新并不会太频繁，所以设计了以下方案：<br/>1.拿一台机器当工作机<br/>2.需要同步代码的前端机器都搭建rsync服务端<br/>3.我同步代码到工作机，执行一个shell脚本，代码同步到前端机<br/><br/>rsync的服务器配置如下<br/>建立一个/etc/rsyncd.conf文件，内容<br/><div class="code">uid = root<br/>gid = root<br/>use chroot = no<br/>max connections = 4<br/>strict modes =yes<br/>port = 873<br/>pid file = /var/run/rsyncd.pid<br/>lock file = /var/run/rsyncd.lock<br/>log file = /var/log/rsyncd.log<br/><br/>&#91;app&#93;<br/>path = /data/www/xs8.cn/app.xs8.cn/<br/>comment = app.xs8.cn<br/>ignore errors<br/>read only = no<br/>list = yes<br/>secrets file = /etc/rsync.pas<br/>hosts allow = 10.0.0.100<br/>hosts deny = 0.0.0.0/0<br/><br/>&#91;www&#93;<br/>path = /data/www/xs8.cn/www.xs8.cn/<br/>comment = www.xs8.cn<br/>ignore errors<br/>read only = no<br/>list = yes<br/>secrets file = /etc/rsync.pas<br/>hosts allow = 10.0.0.100<br/>hosts deny = 0.0.0.0/0</div><br/>新建一个/etc/rsync.pas文件，内容为“用户名:密码”<br/><div class="code">xs8:xs8rsync</div><br/>可以看到，我的其中一台前端需要提供app和www这两个二级域名的服务<br/>启动前端机的rsync服务/usr/bin/rsync --daemon --config=/etc/rsyncd.conf 可以把这句写进/etc/rc.local<br/><br/>然后在工作机上建立与前端机相同的rsync.pas文件<br/>在来个同步脚本sync_app<br/><div class="code">/usr/bin/rsync -vzrtopg --progress --password-file=/etc/rsync.pas --exclude-from=/data/www/xs8.cn/app.xs8.cn/exclude.txt /data/www/xs8.cn/app.xs8.cn/ xs8@10.0.0.11::app<br/>/usr/bin/rsync -vzrtopg --progress --password-file=/etc/rsync.pas --exclude-from=/data/www/xs8.cn/app.xs8.cn/exclude.txt /data/www/xs8.cn/app.xs8.cn/ xs8@10.0.0.12::app<br/></div><br/>给予执行权限chmod +x /opt/sbin/sync_app<br/><br/>你可以看到我排除了一些文件不进行同步，这个exclude文件内容如下<br/><div class="code">exclude.txt<br/>application/cache<br/>application/logs</div><br/>从需要同步的目录算起，下面哪些不需要同步，写上就行，一行一个文件或者目录<br/><br/>这样，当我更改代码以后，先上传到我的工作机，然后执行/opt/sbin/sync_app就会将代码发布到所有前端提供服务的机器上了
]]>
</description>
</item><item>
<link>http://anerg.com/read.php?66</link>
<title><![CDATA[处理统一资源文件的cdn地址]]></title> 
<author>废墟 &lt;a@anerg.cn&gt;</author>
<category><![CDATA[PHP]]></category>
<pubDate>Mon, 16 Jan 2012 01:53:35 +0000</pubDate> 
<guid>http://anerg.com/read.php?66</guid> 
<description>
<![CDATA[ 
	在项目开发中，我们常常会使用到cdn，但是呢，浏览器针对单个域名只能同时发起2个请求，这就造成了空有大量带宽，但是处理时间却还是很长。<br/>为了解决这个问题，常常会对cdn域名建立多个二级域名，来解决浏览器同域名限制2个并发的问题。<br/><br/>这里我使用的ci框架<br/><div class="code" style="overflow: auto;"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">if&nbsp;(!</span><span style="color: #0000BB">defined</span><span style="color: #007700">(</span><span style="color: #DD0000">'BASEPATH'</span><span style="color: #007700">))<br />&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="color: #DD0000">'No&nbsp;direct&nbsp;script&nbsp;access&nbsp;allowed'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">//如果未定义站点cdn二级路径名称，则自行定义之<br /></span><span style="color: #007700">if&nbsp;(!</span><span style="color: #0000BB">defined</span><span style="color: #007700">(</span><span style="color: #DD0000">'SITE_CDN_NAME'</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">define</span><span style="color: #007700">(</span><span style="color: #DD0000">'SITE_CDN_NAME'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'app'</span><span style="color: #007700">);<br />}<br /></span><span style="color: #FF8000">//如果未定义站点cdn域名，则自行定义之<br /></span><span style="color: #007700">if&nbsp;(!</span><span style="color: #0000BB">defined</span><span style="color: #007700">(</span><span style="color: #DD0000">'SITE_CDN_DOMAIN'</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">define</span><span style="color: #007700">(</span><span style="color: #DD0000">'SITE_CDN_DOMAIN'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'.xs8xs8.cn'</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #FF8000">/**<br />&nbsp;*&nbsp;获取CDN相关资源地址<br />&nbsp;*/<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">cdn</span><span style="color: #007700">{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">expires</span><span style="color: #007700">(</span><span style="color: #0000BB">$min</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$expires&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$min</span><span style="color: #007700">*</span><span style="color: #0000BB">60</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Pragma:&nbsp;public"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Cache-Control:&nbsp;maxage="&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$expires</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Expires:&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">gmdate</span><span style="color: #007700">(</span><span style="color: #DD0000">"D,&nbsp;d&nbsp;M&nbsp;Y&nbsp;H:i:s"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">TIMESTAMP&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">$expires</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">"&nbsp;GMT"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获取资源文件CDN路径<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;例如：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://book.xs8.cn/static/js/jquery.js<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;传递参数时需传递jquery.js<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;string&nbsp;$filename<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;bool&nbsp;$global&nbsp;是否获取共用文件<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;string<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">get_resources</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$path_parts&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">pathinfo</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$ext&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">strtolower</span><span style="color: #007700">(</span><span style="color: #0000BB">$path_parts</span><span style="color: #007700">[</span><span style="color: #DD0000">'extension'</span><span style="color: #007700">]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">in_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$ext</span><span style="color: #007700">,&nbsp;array(</span><span style="color: #DD0000">'js'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'css'</span><span style="color: #007700">)))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$method&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'get_cdn_'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$ext</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">$method</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(</span><span style="color: #0000BB">in_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$ext</span><span style="color: #007700">,&nbsp;array(</span><span style="color: #DD0000">'jpg'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'jpeg'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'gif'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'png'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'bmp'</span><span style="color: #007700">)))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_cdn_img</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(</span><span style="color: #0000BB">in_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$ext</span><span style="color: #007700">,&nbsp;array(</span><span style="color: #DD0000">'swf'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'flv'</span><span style="color: #007700">)))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_cdn_flash</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">SITE_URL&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$path</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">get_cdn_pre_config</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$site_cdn_name&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$global&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #0000BB">false&nbsp;</span><span style="color: #007700">?&nbsp;</span><span style="color: #0000BB">SITE_CDN_NAME&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">'www'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$url_pre&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">sprintf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%u"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">crc32</span><span style="color: #007700">(</span><span style="color: #0000BB">md5</span><span style="color: #007700">(</span><span style="color: #0000BB">strtolower</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">))))&nbsp;%&nbsp;</span><span style="color: #0000BB">4&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;&nbsp;</span><span style="color: #FF8000">//若要生成s1和s2则代码改为:%2+1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;array(</span><span style="color: #DD0000">'site_cdn_name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$site_cdn_name</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'url_pre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$url_pre</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">get_cdn_js</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cdn_config&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_cdn_pre_config</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'http://s'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$cdn_config</span><span style="color: #007700">[</span><span style="color: #DD0000">'url_pre'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">SITE_CDN_DOMAIN&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$cdn_config</span><span style="color: #007700">[</span><span style="color: #DD0000">'site_cdn_name'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'/js/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$filename</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$url</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">get_cdn_css</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cdn_config&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_cdn_pre_config</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'http://s'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$cdn_config</span><span style="color: #007700">[</span><span style="color: #DD0000">'url_pre'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">SITE_CDN_DOMAIN&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$cdn_config</span><span style="color: #007700">[</span><span style="color: #DD0000">'site_cdn_name'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'/css/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$filename</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$url</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">get_cdn_img</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cdn_config&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_cdn_pre_config</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'http://s'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$cdn_config</span><span style="color: #007700">[</span><span style="color: #DD0000">'url_pre'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">SITE_CDN_DOMAIN&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$cdn_config</span><span style="color: #007700">[</span><span style="color: #DD0000">'site_cdn_name'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'/images/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$filename</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$url</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">get_cdn_flash</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cdn_config&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_cdn_pre_config</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$global</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'http://s'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$cdn_config</span><span style="color: #007700">[</span><span style="color: #DD0000">'url_pre'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">SITE_CDN_DOMAIN&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$cdn_config</span><span style="color: #007700">[</span><span style="color: #DD0000">'site_cdn_name'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'/flash/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$filename</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$url</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</span>
</span>
</code></div>
]]>
</description>
</item><item>
<link>http://anerg.com/read.php?65</link>
<title><![CDATA[监控php后台脚本的shell]]></title> 
<author>废墟 &lt;a@anerg.cn&gt;</author>
<category><![CDATA[LINUX]]></category>
<pubDate>Mon, 16 Jan 2012 01:45:11 +0000</pubDate> 
<guid>http://anerg.com/read.php?65</guid> 
<description>
<![CDATA[ 
	因为项目需要有脚本不停的处理队列信息，所以需要监控脚本是否停止了，如果停止则需要再次启动。于是写了个脚本<br/><div class="code">#! /bin/bash<br/>cd /data/www/xs8.cn/app.xs8.cn/shell/ #脚本所在目录<br/>F=(CHANGE_USER_TICKET.php CHANGE_USER_LEVEL.php USER_COST.php) #需要监控的脚本文件名<br/>L=(log_ticket log_level log_cost) #脚本对应的日志文件<br/>for((i=0;i&lt;$&#123;#F&#91;@&#93;&#125;;i++));do<br/>&nbsp;&nbsp;n=`ps aux&#124;grep $&#123;F&#91;$i&#93;&#125;&#124;grep -v grep&#124;wc -l`;<br/>&nbsp;&nbsp;if(($n &lt; 1));then<br/>&nbsp;&nbsp;&nbsp;&nbsp;nohup /usr/bin/php $&#123;F&#91;$i&#93;&#125; &gt;&gt; $&#123;L&#91;$i&#93;&#125; 2&gt;&amp;1 &amp;<br/>&nbsp;&nbsp;fi<br/>done;</div><br/>然后将其写入crontab，每10分钟执行<br/><div class="code">*/10 * * * * /bin/bash /opt/sbin/check_shell.sh &gt; /dev/null 2&gt;&amp;1</div>
]]>
</description>
</item><item>
<link>http://anerg.com/read.php?64</link>
<title><![CDATA[用于ajax跨域提交post或者get请求的代理程序]]></title> 
<author>废墟 &lt;a@anerg.cn&gt;</author>
<category><![CDATA[PHP]]></category>
<pubDate>Mon, 14 Nov 2011 04:44:08 +0000</pubDate> 
<guid>http://anerg.com/read.php?64</guid> 
<description>
<![CDATA[ 
	局限性：1.服务器必须配置有cURL 2.增加一次服务器的请求<br/><br/>代码如下:<br/><div class="code" style="overflow: auto;"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">/**<br />&nbsp;*&nbsp;AJAX代理程序，用于跨域提交请求<br />&nbsp;*&nbsp;用于发送post或get请求<br />&nbsp;*&nbsp;只能被ajax请求所访问，直接访问将被忽略<br />&nbsp;*&nbsp;<br />&nbsp;*&nbsp;@author&nbsp;废墟&nbsp;&lt;r.anerg@gmail.com&gt;<br />&nbsp;*&nbsp;@link&nbsp;http://anerg.com<br />&nbsp;*/<br /></span><span style="color: #0000BB">ini_set</span><span style="color: #007700">(</span><span style="color: #DD0000">"display_error"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">error_reporting</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">date_default_timezone_set</span><span style="color: #007700">(</span><span style="color: #DD0000">'Asia/Shanghai'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">define</span><span style="color: #007700">(</span><span style="color: #DD0000">'BASEPATH'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">dirname</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">));<br /><br />class&nbsp;</span><span style="color: #0000BB">ajaxproxy&nbsp;</span><span style="color: #007700">{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">__construct</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">ob_start</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Expires:&nbsp;-1"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Cache-Control:&nbsp;no-store,&nbsp;private,&nbsp;post-check=0,&nbsp;pre-check=0,&nbsp;max-age=0"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">FALSE</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Pragma:&nbsp;no-cache"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Content-type:&nbsp;text/html;&nbsp;charset=utf-8"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">get_magic_quotes_gpc</span><span style="color: #007700">())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$in&nbsp;</span><span style="color: #007700">=&nbsp;array(&amp;&nbsp;</span><span style="color: #0000BB">$_GET</span><span style="color: #007700">,&nbsp;&amp;&nbsp;</span><span style="color: #0000BB">$_POST</span><span style="color: #007700">,&nbsp;&amp;&nbsp;</span><span style="color: #0000BB">$_COOKIE</span><span style="color: #007700">,&nbsp;&amp;&nbsp;</span><span style="color: #0000BB">$_REQUEST</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(list(</span><span style="color: #0000BB">$k</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">)&nbsp;=&nbsp;</span><span style="color: #0000BB">each</span><span style="color: #007700">(</span><span style="color: #0000BB">$in</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">$v&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$key&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$val</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #0000BB">is_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$val</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$in</span><span style="color: #007700">[</span><span style="color: #0000BB">$k</span><span style="color: #007700">][</span><span style="color: #0000BB">$key</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">stripslashes</span><span style="color: #007700">(</span><span style="color: #0000BB">$val</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$in</span><span style="color: #007700">[]&nbsp;=&nbsp;&amp;&nbsp;</span><span style="color: #0000BB">$in</span><span style="color: #007700">[</span><span style="color: #0000BB">$k</span><span style="color: #007700">][</span><span style="color: #0000BB">$key</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unset(</span><span style="color: #0000BB">$in</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">run</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_X_REQUESTED_WITH'</span><span style="color: #007700">]&nbsp;===&nbsp;</span><span style="color: #DD0000">'XMLHttpRequest'</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$request_url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">build_url</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$request_url&nbsp;</span><span style="color: #007700">!==&nbsp;</span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$rs&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_curl</span><span style="color: #007700">(</span><span style="color: #0000BB">$request_url</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$_POST</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$rs&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">log</span><span style="color: #007700">(</span><span style="color: #0000BB">$request_url</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'AJAX_PROXY'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$out&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">'error'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;-</span><span style="color: #0000BB">2000</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'msg'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'系统连接超时！'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">json_encode</span><span style="color: #007700">(</span><span style="color: #0000BB">$out</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">$rs</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">build_url</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$app&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">trim</span><span style="color: #007700">(</span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'app'</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$act&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">trim</span><span style="color: #007700">(</span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'act'</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(empty(</span><span style="color: #0000BB">$app</span><span style="color: #007700">)&nbsp;||&nbsp;empty(</span><span style="color: #0000BB">$act</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">FALSE</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$args&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$_GET</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unset(</span><span style="color: #0000BB">$args</span><span style="color: #007700">[</span><span style="color: #DD0000">'app'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">$args</span><span style="color: #007700">[</span><span style="color: #DD0000">'act'</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$uri&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!empty(</span><span style="color: #0000BB">$args</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$uri&nbsp;</span><span style="color: #007700">.=&nbsp;</span><span style="color: #DD0000">'?'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">$args&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$k&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tmp</span><span style="color: #007700">[]&nbsp;=&nbsp;</span><span style="color: #0000BB">$k&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'='&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$uri&nbsp;</span><span style="color: #007700">.=&nbsp;</span><span style="color: #0000BB">join</span><span style="color: #007700">(</span><span style="color: #DD0000">'&amp;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$tmp</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$request_url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'http://'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$app&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'.xs8.cn/ajax/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$act&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$uri</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$request_url</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">_curl</span><span style="color: #007700">(</span><span style="color: #0000BB">$url</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$post_data&nbsp;</span><span style="color: #007700">=&nbsp;array(),&nbsp;</span><span style="color: #0000BB">$second&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">5</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$ch&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">curl_init</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_URL</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$url</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_HEADER</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_TIMEOUT</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$second</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_COOKIE</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_COOKIE'</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!empty(</span><span style="color: #0000BB">$post_data</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_POST</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_POSTFIELDS</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">http_build_query</span><span style="color: #007700">(</span><span style="color: #0000BB">$post_data</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_RETURNTRANSFER</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$content&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">curl_exec</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_close</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$content</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">log</span><span style="color: #007700">(</span><span style="color: #0000BB">$log_data</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$log_file</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$data&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">date</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d&nbsp;H:i:s"</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">"&nbsp;--&gt;&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">trim</span><span style="color: #007700">(</span><span style="color: #0000BB">$log_data</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">"n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$file&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">dirname</span><span style="color: #007700">(</span><span style="color: #0000BB">BASEPATH</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">'/application/logs/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$log_file&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'_'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">date</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">error_log</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$file</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /></span><span style="color: #0000BB">$obj&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">ajaxproxy</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">run</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
]]>
</description>
</item><item>
<link>http://anerg.com/read.php?63</link>
<title><![CDATA[nginx的配置文件]]></title> 
<author>废墟 &lt;a@anerg.cn&gt;</author>
<category><![CDATA[LINUX]]></category>
<pubDate>Sun, 09 Oct 2011 04:56:47 +0000</pubDate> 
<guid>http://anerg.com/read.php?63</guid> 
<description>
<![CDATA[ 
	记录一下，省得每次都到处找。<br/><br/>几个关键地方都有注释，基本看得懂了<br/><br/>nginx.conf<br/><br/><div class="code">user&nbsp;&nbsp;nobody nobody;<br/>worker_processes&nbsp;&nbsp;4; #根据cpu个数来确定<br/><br/>#error_log&nbsp;&nbsp;logs/error.log;<br/>#error_log&nbsp;&nbsp;logs/error.log&nbsp;&nbsp;notice;<br/>#error_log&nbsp;&nbsp;logs/error.log&nbsp;&nbsp;info;<br/><br/>pid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logs/nginx.pid;<br/><br/>worker_rlimit_nofile 65535;<br/>events &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;use epoll;<br/>&nbsp;&nbsp;&nbsp;&nbsp;worker_connections&nbsp;&nbsp;65535;<br/>&#125;<br/><br/><br/>http &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mime.types;<br/>&nbsp;&nbsp;&nbsp;&nbsp;default_type&nbsp;&nbsp;application/octet-stream;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;#log_format&nbsp;&nbsp;main&nbsp;&nbsp;&#039;$remote_addr - $remote_user &#91;$time_local&#93; &quot;$request&quot; &#039;<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;$status $body_bytes_sent &quot;$http_referer&quot; &#039;<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;&quot;$http_user_agent&quot; &quot;$http_x_forwarded_for&quot;&#039;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;#access_log&nbsp;&nbsp;logs/access.log&nbsp;&nbsp;main;<br/>&nbsp;&nbsp;&nbsp;&nbsp;access_log&nbsp;&nbsp;off;<br/>&nbsp;&nbsp;&nbsp;&nbsp;server_names_hash_bucket_size&nbsp;&nbsp;128;<br/>&nbsp;&nbsp;&nbsp;&nbsp;client_header_buffer_size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32k;<br/>&nbsp;&nbsp;&nbsp;&nbsp;large_client_header_buffers&nbsp;&nbsp;&nbsp;&nbsp;4 32k;<br/>&nbsp;&nbsp;&nbsp;&nbsp;client_max_body_size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8m;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;sendfile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on;<br/>&nbsp;&nbsp;&nbsp;&nbsp;tcp_nopush&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;keepalive_timeout&nbsp;&nbsp;60;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;tcp_nodelay on;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_connect_timeout 300;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_send_timeout&nbsp;&nbsp;&nbsp;&nbsp;300;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_read_timeout&nbsp;&nbsp;&nbsp;&nbsp;300;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_buffer_size&nbsp;&nbsp;&nbsp;&nbsp; 64k;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 64k;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_busy_buffers_size&nbsp;&nbsp;&nbsp;&nbsp;128k;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_temp_file_write_size 128k;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_intercept_errors&nbsp;&nbsp;&nbsp;&nbsp; on; #php文件不存在也返回404，无此参数会返回空白页 <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;gzip on;<br/>&nbsp;&nbsp;&nbsp;&nbsp;gzip_static&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on; #启用此参数nginx编译时需要--with-http_gzip_static_module，用于cdn。否则cdn不能缓存<br/>&nbsp;&nbsp;&nbsp;&nbsp;gzip_disable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;MSIE &#91;1-6&#93;&#92;.&#124;Baiduspider&quot;; #IE6不支持压缩，另外百度蜘蛛比较2，不会自解压<br/>&nbsp;&nbsp;&nbsp;&nbsp;gzip_proxied&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; any; #当nginx作为反向代理时，无条件压缩<br/>&nbsp;&nbsp;&nbsp;&nbsp;gzip_min_length&nbsp;&nbsp;&nbsp;&nbsp;1k;<br/>&nbsp;&nbsp;&nbsp;&nbsp;gzip_buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 16k;<br/>&nbsp;&nbsp;&nbsp;&nbsp;gzip_http_version&nbsp;&nbsp;1.1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;gzip_comp_level&nbsp;&nbsp;&nbsp;&nbsp;6;<br/>&nbsp;&nbsp;&nbsp;&nbsp;gzip_types&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;<br/>&nbsp;&nbsp;&nbsp;&nbsp;gzip_vary on;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;server &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;&nbsp;xs8.cn www.xs8.cn;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($host != &#039;www.xs8.cn&#039;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/(.*)$ http://www.xs8.cn/$1 permanent;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#以下仅用于CI框架<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!-f $request_filename) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/(.*)$ /index.php?$1 last;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index index.html index.htm index.php;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;/data/www/xs8.cn;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location ~ .*&#92;.(php&#124;php5)?$ &#123;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include fcgi.conf;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location ~ .*&#92;.(gif&#124;jpg&#124;jpeg&#124;png&#124;bmp&#124;swf&#124;flv)$ &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#valid_referers none blocked server_names; #防盗链时打开注释<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#if ($invalid_referer) &#123;return 403;&#125; #防盗链时打开注释<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expires&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30d;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location ~ .*&#92;.(js&#124;css)?$ &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expires&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1h;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error_page&nbsp;&nbsp;&nbsp;&nbsp;404&nbsp;&nbsp;&nbsp;&nbsp;http://www.xs8.cn/;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;access_log&nbsp;&nbsp;&nbsp;&nbsp;off;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&#125;<br/></div><br/><br/>fcgi.conf<br/><div class="code">fastcgi_pass&nbsp;&nbsp;127.0.0.1:9000;<br/>fastcgi_index index.php;<br/><br/>if ($request_filename ~* (.*)&#92;.php) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;set $php_url $1;<br/>&#125;<br/>if (!-e $php_url.php) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return 403;<br/>&#125;<br/><br/>fastcgi_param&nbsp;&nbsp;GATEWAY_INTERFACE&nbsp;&nbsp;CGI/1.1;<br/>fastcgi_param&nbsp;&nbsp;SERVER_SOFTWARE&nbsp;&nbsp;&nbsp;&nbsp;nginx;<br/><br/>fastcgi_param&nbsp;&nbsp;QUERY_STRING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $query_string;<br/>fastcgi_param&nbsp;&nbsp;REQUEST_METHOD&nbsp;&nbsp;&nbsp;&nbsp; $request_method;<br/>fastcgi_param&nbsp;&nbsp;CONTENT_TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $content_type;<br/>fastcgi_param&nbsp;&nbsp;CONTENT_LENGTH&nbsp;&nbsp;&nbsp;&nbsp; $content_length;<br/><br/>fastcgi_param&nbsp;&nbsp;SCRIPT_FILENAME&nbsp;&nbsp;&nbsp;&nbsp;$document_root$fastcgi_script_name;<br/>fastcgi_param&nbsp;&nbsp;SCRIPT_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$fastcgi_script_name;<br/>fastcgi_param&nbsp;&nbsp;REQUEST_URI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$request_uri;<br/>fastcgi_param&nbsp;&nbsp;DOCUMENT_URI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $document_uri;<br/>fastcgi_param&nbsp;&nbsp;DOCUMENT_ROOT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$document_root;<br/>fastcgi_param&nbsp;&nbsp;SERVER_PROTOCOL&nbsp;&nbsp;&nbsp;&nbsp;$server_protocol;<br/><br/>fastcgi_param&nbsp;&nbsp;REMOTE_ADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$remote_addr;<br/>fastcgi_param&nbsp;&nbsp;REMOTE_PORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$remote_port;<br/>fastcgi_param&nbsp;&nbsp;SERVER_ADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$server_addr;<br/>fastcgi_param&nbsp;&nbsp;SERVER_PORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$server_port;<br/>fastcgi_param&nbsp;&nbsp;SERVER_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$server_name;<br/><br/># PHP only, required if PHP was built with --enable-force-cgi-redirect<br/>fastcgi_param&nbsp;&nbsp;REDIRECT_STATUS&nbsp;&nbsp;&nbsp;&nbsp;200;<br/></div><br/><br/>nginx启动、停止、重载脚本<br/>/etc/init.d/nginx<br/><div class="code">#!/bin/bash<br/># nginx Startup script for the Nginx HTTP Server<br/># this script create it by jackbillow at 2007.10.15.<br/># it is v.0.0.2 version.<br/># if you find any errors on this scripts,please contact jackbillow.<br/># and send mail to jackbillow at gmail dot com.<br/>#<br/># chkconfig: - 85 15<br/># description: Nginx is a high-performance web and proxy server.<br/>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;It has a lot of features, but it&#039;s not for everyone.<br/># processname: nginx<br/># pidfile: /var/run/nginx.pid<br/># config: /usr/local/nginx/conf/nginx.conf<br/><br/>nginxd=/usr/local/nginx/sbin/nginx<br/>nginx_config=/usr/local/nginx/conf/nginx.conf<br/>nginx_pid=/usr/local/nginx/logs/nginx.pid<br/><br/>RETVAL=0<br/>prog=&quot;nginx&quot;<br/><br/># Source function library.<br/>. /etc/rc.d/init.d/functions<br/><br/># Source networking configuration.<br/>. /etc/sysconfig/network<br/><br/># Check that networking is up.<br/>&#91; $&#123;NETWORKING&#125; = &quot;no&quot; &#93; &amp;&amp; exit 0<br/><br/>&#91; -x $nginxd &#93; &#124;&#124; exit 0<br/><br/><br/># Start nginx daemons functions.<br/>start() &#123;<br/><br/>if &#91; -e $nginx_pid &#93;;then<br/>&nbsp;&nbsp; echo &quot;nginx already running....&quot;<br/>&nbsp;&nbsp; exit 1<br/>fi<br/><br/>&nbsp;&nbsp; echo -n $&quot;Starting $prog: &quot;<br/>&nbsp;&nbsp; daemon $nginxd -c $&#123;nginx_config&#125;<br/>&nbsp;&nbsp; RETVAL=$?<br/>&nbsp;&nbsp; echo<br/>&nbsp;&nbsp; &#91; $RETVAL = 0 &#93; &amp;&amp; touch $nginx_pid<br/>&nbsp;&nbsp; return $RETVAL<br/><br/>&#125;<br/><br/><br/># Stop nginx daemons functions.<br/>stop() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -n $&quot;Stopping $prog: &quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;killproc $nginxd<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETVAL=$?<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91; $RETVAL = 0 &#93; &amp;&amp; rm -f $nginx_pid<br/>&#125;<br/><br/><br/># reload nginx service functions.<br/>reload() &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;echo -n $&quot;Reloading $prog: &quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;#kill -HUP `cat $&#123;nginx_pid&#125;`<br/>&nbsp;&nbsp;&nbsp;&nbsp;killproc $nginxd -HUP<br/>&nbsp;&nbsp;&nbsp;&nbsp;RETVAL=$?<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo<br/><br/>&#125;<br/><br/># See how we were called.<br/>case &quot;$1&quot; in<br/>start)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/><br/>stop)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stop<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/><br/>reload)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reload<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/><br/>restart)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stop<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/><br/>status)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status $prog<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETVAL=$?<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>*)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $&quot;Usage: $prog &#123;start&#124;stop&#124;restart&#124;reload&#124;status&#124;help&#125;&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br/>esac<br/><br/>exit $RETVAL</div><br/>安装自启动<br/><div class="code">chmod +x /etc/init.d/nginx<br/>/sbin/chkconfig nginx on<br/>/sbin/chkconfig –list nginx</div><br/>用法<br/><div class="code">service nginx start<br/>service nginx stop<br/>service nginx restart<br/>service nginx reload<br/>/etc/init.d/nginx start<br/>/etc/init.d/nginx stop<br/>/etc/init.d/nginx restart<br/>/etc/init.d/nginx reload</div>
]]>
</description>
</item><item>
<link>http://anerg.com/read.php?62</link>
<title><![CDATA[PHP的TokyoTyrant扩展接口API文档(PECL)[转]]]></title> 
<author>废墟 &lt;a@anerg.cn&gt;</author>
<category><![CDATA[PHP]]></category>
<pubDate>Fri, 23 Sep 2011 05:35:53 +0000</pubDate> 
<guid>http://anerg.com/read.php?62</guid> 
<description>
<![CDATA[ 
	TCT支持的追加参数:<br/>mode: <br/>bnum: 桶数组元素个数,如果不大于0,使用默认值, 默认值是131071, 建议值是所有存储的记录条数的0.5-4倍.<br/>apow: 和一个key关联的记录数,如果是负值, 使用默认值, 默认值为4, 意为2的4次方.<br/>fpow: FreeBlockPool是一块在bucket后的内存空间, 每个元素指向一个内存空洞, 包括了空洞的位置和尺寸信息, fpow指定了这块空间元素数量的最大值.<br/>opts: 通过位或运算指定以下选项:<br/>&nbsp;&nbsp;&nbsp;&nbsp;TDBTLARGE: 数据库大小是否可以在64位时大于2GB.<br/>&nbsp;&nbsp;&nbsp;&nbsp;TDBTDEFLATE: 指定记录通过Deflate压缩.<br/>&nbsp;&nbsp;&nbsp;&nbsp;TDBTBZIP: 指定记录通过BZIP2压缩.<br/>&nbsp;&nbsp;&nbsp;&nbsp;TDBTTCBS: 指定记录通过TCBS压缩.<br/>rcnum: 指定最大缓存的记录数, 如果不大于0, 缓存失效, 没有默认值.<br/>lcnum: 指定最大缓存的叶子节点数量, 默认值4096.<br/>ncnum: 指定最大缓存的非叶子节点数量, 默认值512.<br/>xmsiz: 指定映射的额外内存大小, 默认67108864.<br/>dfunit: 指定内存碎片整理的单位步数.<br/>idx: 指定表的索引.<br/>###################################################<br/>###################################################<br/>TokyoTyrant_PHP支持链式操作,类似jQuery的方式, 可以$conn->put()->add()->list()的方式一直调用.<br/>##################################################<br/>TokyoTyrant类中的接口<br/>##################################################<br/>TokyoTyant::add(string $key, number $increment[, int $type = 0]):<br/>增加int或double值，返回值是增长之后该key对应的新值,如果key不存在则创建一个新的并以increment参数作为初始值, type取值为TokyoTyrant::RDBREC_INT或TokyoTyrant::RDBREC_DBL, 分别代表将increment参数的值作为int, double处理.<br/>TokyoTyrant::connect(string $host, [, int $port = TokyoTyrant::RDBDEF_PORT[, array $options]]:<br/>连接远程数据库.<br/>$options可以包括timeout(超时时间, 默认5.0), reconnect(默认True), persistent(默认True)<br/>返回当前连接对象, 如果失败抛出TokyoTyrantException<br/>TokyoTyrant::connectUri(string $uri):<br/>通过Uri连接到数据库.<br/>uri: tcp://localhost:1978/<br/>返回当前连接对象或在失败时抛出TokyoTyrantException.<br/>TokyoTyrant::_construct([string $host[, int $port = TokyoTyrant::RDBDEF_PORT[, array $options]]]):<br/>构建一个新的TokyoTyrant对象.参数与connect意义相同.<br/>连接数据库失败时抛出TokyoTyrantException.<br/>TokyoTyrant::copy(string $path): <br/>创建一个当前数据库的拷贝. path参数指定要拷贝到的路径, 用户必须要有文件的写权限.<br/>TokyoTyrant::ext(string $name, int $options, string $key, string $value):<br/>执行一个远程脚本扩展.指的就是启动ttserver时通过-ext指定的lua脚本文件中定义的函数.<br/>name: 要执行的函数名称.<br/>options: TokyoTyrant::RDBXO_LCKREC用于记录锁定, TokyoTyrant::RDBXO_LCKGLB用于全局锁定.<br/>key: 要传递给函数的key.<br/>value: 要传递给函数的value.<br/>返回脚本函数执行的结果.<br/>TokyoTyrant::fwmKeys(string $prefix, int $max_recs):<br/>通过key前缀匹配获取指定条数的记录.<br/>prefix: 用以匹配的key前缀.<br/>max_recs: 返回的记录条数.<br/>以数组形式返回匹配到的key.<br/>TokyoTyrant::get(mixed $keys):<br/>用于获取一个或多个值, 接受一个字符串或一个字符串数组的key.<br/>根据接受参数不同, 返回单个的字符串或数组. 发生错误是抛出TokyoTyrantException, 如果key没有找到, 返回空字符串, 在传递了数组参数时仅仅所有key都存在才会返回, 不会因为一个key找不到而返回错误.<br/>TokyoTyrant::getIterator(void):<br/>获取一个迭代器, 用于迭代所有的key/value, 返回的是一个TokyoTyrantIterator对象如果失败抛出TokyoTyrantException.<br/>经测试没有迭代, 也没有报错.<br/>TokyoTyrant::num(void):<br/>获取数据库内的记录总条数.<br/>TokyoTyrant::out(mixed $keys):<br/>通过参数指定的一个或多个key移除记录.<br/>keys: 一个字符串或字符串数组<br/>返回当前TokyoTyrant对象或在失败时抛出TokyoTyrant异常.<br/>TokyoTyrant::put(mixed $keys[, string $value]):<br/>将一个或多个key-value对插入到数据库中, 如果keys是字符串, 第二个参数就是对应的value, 如果第一个参数是数组, 第二个参数无效, 是数组的时候, 数组自身维护key-value, 如果key存在, 则替换.<br/>返回当前连接对象TokyoTyrant或者在失败时抛出TokyoTyrantException.<br/>TokyoTyrant::putCat(mixed $keys[, string $value]):<br/>如果keys是数组, 将value追加到已经存在的key原值之后, 第二个参数只有在keys是字符串时有效, 如果记录不存在, 创建新的记录.<br/>返回当前连接对象TokyoTyrant或者在失败时抛出TokyoTyrantException.<br/>TokyoTyrant::putKeep(mixed $keys[, string $value]):<br/>向数据库插入一个或多个key-value对, 如果keys是字符串, 第二个参数就是它对应的value, 如果第一个参数是数组, 第二个参数失效. 如果key已经存在, 这个方法抛出一个异常标示该记录已经存在.<br/>返回当前连接对象TokyoTyrant或者在失败时抛出TokyoTyrantException.<br/>TokyoTyrant::putNr(mixed $keys[, string $value]):<br/>向数据库插入一个或多个key-value, 这个方法不会等待服务端的响应.<br/>返回当前连接对象TokyoTyrant或者在失败时抛出TokyoTyrantException.<br/>TokyoTyrant::putShl(string $key, string $value, int $width):<br/>连接一条记录并自左端开始截掉$width个字符.<br/>返回当前连接对象TokyoTyrant或者在失败时抛出TokyoTyrantException.<br/>TokyoTyrant::restore(string $log_dir, int $timestamp[, bool $check_consistency = true]):<br/>通过update log还原数据库(这个方法不能在32位平台下使用).<br/>log_dir: update log的路径<br/>timestamp: 从什么时候开始还原, 微秒级的时间戳<br/>checkconsistency: 默认true, 是否检测一致性.<br/>返回当前连接对象TokyoTyrant或者在失败时抛出TokyoTyrantException.<br/>TokyoTyrant::setMaster(string $host, int $port, int $timestamp[, bool $check_consistency = true]):<br/>指ttserver的双机模式下的从机的设置(此方法在32位平台下不能使用).<br/>$host: 从机地址.<br/>$port: 从机端口.<br/>$timestamp: 开始的时间戳.<br/>$checkconsistency: 默认true, 是否检测一致性.<br/>返回当前连接对象TokyoTyrant或者在失败时抛出TokyoTyrantException.<br/>TokyoTyrant::size(string $key):<br/>获取指定key对应的value的大小.<br/>返回对应value的大小或在失败时抛出一个TokyoTyrantException.<br/>TokyoTyrant::stat(void):<br/>返回远程数据库的统计数据, 返回值是数组形式.<br/>TokyoTyrant::sync(void):<br/>在物理设备上同步数据库. 不懂具体含义.<br/>TokyoTyrant::tune(float $timeout[, int $options = TokyoTyrant::RDBT_RECON]): <br/>调整数据库连接参数.<br/>timeout: 默认5.0.<br/>options: 基于位的参数调整, 可以是0或TokyoTyrant::RDBT_RECON, 建议不要修改第二个参数.<br/>返回当前连接对象TokyoTyrant或者在失败时抛出TokyoTyrantException.<br/>TokyoTyrant::vanish(void):<br/>将远程数据库清空.<br/>返回当前连接对象TokyoTyrant或者在失败时抛出TokyoTyrantException.<br/>##################################################################<br/>TokyoTyrantTable类的接口, 该类继承自TokyoTyrant.<br/>##################################################################<br/>TokyoTyrantTable::add(string $key, mixed $increment[, string $type]):<br/>该方法table database不支持. 详细解释见TokyoTyrant::add.<br/>TokyoTyrantTable::genUid(void):<br/>生成在当前table database内唯一的id, TableDatabase行引用使用一个数字主键.<br/>返回唯一主键或在发生错误时抛出TokyoTyrantException.<br/>TokyoTyrantTable::get(mixed $keys):<br/>根据keys是一个整数还是一个整数数组获取数据库中的一行或多行.<br/>TokyoTyrantTable::getIterator(void):<br/>获取一个可以迭代整个数据库的迭代器.<br/>返回当前连接对象TokyoTyrantTable或在错误时抛出TokyoTyrantException.<br/>经测试会抛出没有定义该方法异常.<br/>TokyoTyrantTable::getQuery(void):<br/>获取一个TykyoTyrantQuery查询对象用以在数据库上执行搜索.<br/>TokyoTyrantTable::out(mixed $keys):<br/>从数据库删除指定key对应的记录, keys可以是单个整数或整数数组.<br/>TokyoTyrantTable::put(string $key, array $columns):<br/>向数据库插入新的行, key是该行的主键, 如果传NULL将会自动生成一个唯一id, value是一个数组包含通过key-value组织的行的内容.<br/>返回该数据插入后的主键或在错误时抛出TokyoTyrantException.<br/>TokyoTyrantTable::putCat(string $key, array $columns):<br/>同put, 差别在于对已经存在的key, 会将对应列的值追加到原值之后.<br/>返回该数据插入后的主键或在错误时抛出TokyoTyrantException.<br/>TokyoTyrantTable::putKeep(string $key, array $columns);<br/>和TokyoTyrant中的同名方法类似, 只不过参数类型不同.<br/>TokyoTyrantTable::putNr(string $key[, string $value]): <br/>Table database不支持该方法.<br/>TokyoTyrantTable::putKeep(string $key, string $value, int $width);<br/>Table database不支持该方法.<br/>TokyoTyrantTable::setIndex(string $column, int $type):<br/>给指定列设置索引, 索引类型可以是TokyoTyrant::RDBIT_*系列的常量, 传入一个TokyoTyrant::RDBIT_VOID移除所有的索引.<br/>所有索引类型包括: <br/>TokyoTyrant::RDBIT_LEXICAL: 0, 文本索引.<br/>TokyoTyrant::RDBIT_DECIMAL: 1, 数字索引.<br/>TokyoTyrant::RDBIT_TOKEN: 2, 标记倒排索引.<br/>TokyoTyrant::RDBIT_QGRAM: 3, QGram倒排索引.<br/>TokyoTyrant::RDBIT_OPT: 9998, 对索引优化.<br/>TokyoTyrant::RDBIT_VOID: 9999, 移除索引.<br/>TokyoTyrant::RDBIT_KEEP: 16777216, 保持已有索引.<br/>##########################################################<br/>TokyoTyrantQuery类中的接口<br/>##########################################################<br/>TokyoTyrantQuery::addCond(string $name, int $op, string $expr):<br/>增加一个查询条件. <br/>name: 条件对应的列名.<br/>op: 操作符, 是TokyoTyrant::RDBQC_*系列的常量.<br/>expr: 表达式, 指通过op进行比较的另一个运算数.<br/>op可以接受的参数有:<br/>TokyoTyrant::RDBQC_STREQ: 0, 字符串相等判断.<br/>TokyoTyrant::RDBQC_STRINC: 1, 字符串包含判断.<br/>TokyoTyrant::RDBQC_STRBW: 2, 字符串以xx开始判断.<br/>TokyoTyrant::RDBQC_STREW: 3, 字符串以xx结尾判断.<br/>TokyoTyrant::RDBQC_STRAND: 4, $expr包含所有的右逗号(或空格)隔开部分全部都包含在目标中.<br/>TokyoTyrant::RDBQC_STROR: 5, $expr包含所有的右逗号(或空格)隔开部分的其中至少一个包含在目标中.<br/>TokyoTyrant::RDBQC_STROREQ: 6, $expr包含所有的右逗号(或空格)隔开部分的其中某部分与目标完全相同.<br/>TokyoTyrant::RDBQC_STRRX: 7, 正则表达式匹配.<br/>TokyoTyrant::RDBQC_NUMEQ: 8, 数字等于.<br/>TokyoTyrant::RDBQC_NUMGT: 9, 数字大于.<br/>TokyoTyrant::RDBQC_NUMGE: 10, 数字大于等于.<br/>TokyoTyrant::RDBQC_NUMLT: 11, 数字小于.<br/>TokyoTyrant::RDBQC_NUMLE: 12, 数字小于等于.<br/>TokyoTyrant::RDBQC_NUMBT: 13, 数字范围(between), 范围涉及两个值, 在$expr中用,隔开.<br/>TokyoTyrant::RDBQC_NUMOREQ: 14, 和给定的任意一个值相等即匹配, 多个值之间在$expr中用,隔开.<br/>TokyoTyrant::RDBQC_NEGATE: 16777216, 与给定条件不相等的.<br/>TokyoTyrant::RDBQC_NOIDX: 33554432, 无索引标记, 没有查到具体用法.<br/>TokyoTyrantQuery::__construct(TokyoTyrantTable $table):<br/>通过活动的数据库连接构建一个查询对象.<br/>TokyoTyrantQuery::count(void):<br/>返回当前查询对象中所有条件过滤后的记录数量或在发生错误时抛出TokyoTyrantException.<br/>TokyoTyrantQuery::current(void):<br/>返回当前元素.主要用来作为php中的迭代接口.<br/>TokyoTyrantQuery::hint(void):<br/>获取类似于关系数据库中执行计划的文本.<br/>TokyoTyrantQuery::key(void):<br/>返回当前key, 主要用做php的迭代接口.<br/>TokyoTyrantQuery::metaSearch(array $queries, int $type):<br/>在同一个数据库执行多个查询返回匹配记录集, 当前对象总是搜索中最左边的对象.<br/>type表明的是查询的关系.参数值可以是: <br/>TokyoTyrant::RDBMS_UNION: 0, 并集.<br/>TokyoTyrant::RDBMS_ISECT: 1, 交集.<br/>TokyoTyrant::RDBMS_DIFF: 2, 差集.<br/>TokyoTyrantQuery::next(void):<br/>返回结果集中下一条记录. 主要用做php中的迭代接口.<br/>TokyoTyrantQuery::out(void):<br/>移除query匹配的所有记录, 和search工作原理一样, 不过不是返回结果而石山出他们.<br/>TokyoTyrantQuery::rewind(void):<br/>重置结果集并执行查询(如果没有执行过), 主要用做php的迭代接口.<br/>TokyoTyrantQuery::search(void):<br/>在表数据库上执行查询, 返回包含匹配记录的数组, 在返回的数组中, 第一级元素以主键作为key, 第二级是行数据.<br/>TokyoTyrantQuery::setLimit([int $max[, int $skip]]):<br/>设置查询返回的最大记录数以及从哪里开始.<br/>TokyoTyrantQuery::valid(void):<br/>检查当前项的合法性, 主要用作php迭代的接口. 
]]>
</description>
</item><item>
<link>http://anerg.com/read.php?61</link>
<title><![CDATA[Jquery通用表单验证类]]></title> 
<author>废墟 &lt;a@anerg.cn&gt;</author>
<category><![CDATA[HTLM&amp;CSS&amp;JS]]></category>
<pubDate>Mon, 19 Sep 2011 02:42:02 +0000</pubDate> 
<guid>http://anerg.com/read.php?61</guid> 
<description>
<![CDATA[ 
	好吧，最近写js写的蛋疼，其实我是一枚php程序猿啊。。其实说白了，有点抄袭CI里面的表单验证类的意思，因为用法很像<br/><div class="code">/**<br/> * 通用js验证类<br/> * by 废墟<br/> * http://anerg.com<br/> */<br/>var Validator = &#123;<br/>&nbsp;&nbsp;label:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;username&#039;:&#039;帐号&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;password&#039;:&#039;密码&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;passconf&#039;:&#039;密码确认&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;email&#039;:&#039;Email&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;vcode&#039;:&#039;验证码&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;author&#039;:&#039;笔名&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;truename&#039;:&#039;真实姓名&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;qq&#039;:&#039;QQ&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;idcard&#039;:&#039;身份证号码&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;tel&#039;:&#039;电话&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;zipcode&#039;:&#039;邮编&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;address&#039;:&#039;联系地址&#039;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;trim:function(item) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this.Value = $.trim(this.Value);<br/>&nbsp;&nbsp;&nbsp;&nbsp;item.val(this.Value);<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;require:function(item) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(this.Value == &#039;&#039;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &#039;这是必填项，麻烦您啦^_^&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;min_length:function(item, len) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(this.getStrActualLen(this.Value) &lt; len) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &#039;太短啦。必须超过&#039;+len+&#039;个字符&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;max_length:function(item, len) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(this.getStrActualLen(this.Value) &gt; len) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &#039;太长啦。不能超过&#039;+len+&#039;个字符&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;matches:function(item, filed) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var v = $(&quot;input&#91;name=&#039;&quot;+filed+&quot;&#039;&#93;:visible&quot;).val();<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(v != this.Value) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &#039;两次输入的&#039;+this.label&#91;filed&#93;+&#039;不一致 :(&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;email:function(item) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var re = /^(&#91;a-zA-Z0-9&#93;+&#91;_&#124;&#92;-&#124;&#92;.&#93;?)*&#91;a-zA-Z0-9&#93;+@(&#91;a-zA-Z0-9&#93;+&#91;_&#124;&#92;-&#124;&#92;.&#93;?)*&#91;a-zA-Z0-9&#93;+&#92;.&#91;a-zA-Z&#93;&#123;2,3&#125;$/;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!re.test(this.Value)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &quot;格式不正确呀，请检查一下&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;qq:function(item) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var re = /^&#91;0-9&#93;&#123;5,11&#125;$/;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!re.test(this.Value)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &quot;格式不正确呀，请检查一下&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;vcode:function(item) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var re = /^&#92;d&#123;4&#125;$/;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!re.test(this.Value)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &quot;验证码错误&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;idcard:function(item) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var re = /^(&#92;d&#123;15&#125;$&#124;^&#92;d&#123;18&#125;$&#124;^&#92;d&#123;17&#125;(&#92;d&#124;X&#124;x))$/;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!re.test(this.Value)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &quot;格式不正确呀，请检查一下&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;checkusername:function(item) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var _stat = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var _this = this;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$.ajax(&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;async:false,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type:&#039;POST&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:&#039;/ajax/checkusername&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data:&quot;username=&quot;+this.Value,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataType:&#039;text&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success:function(rs) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(rs == 1) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &#039;呃，已经被别人用了&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_stat = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else if(rs == 9) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &#039;换一个吧。Sorry :(&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_stat = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_stat = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return _stat;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;userexists:function(item) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var _stat = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var _this = this;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$.ajax(&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;async:false,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type:&#039;POST&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:&#039;/ajax/checkusername&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data:&quot;username=&quot;+this.Value,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataType:&#039;text&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success:function(rs) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(rs == 1 &#124;&#124; rs == 9) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_stat = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &#039;帐号不存在&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_stat = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return _stat;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;checkauthor:function(item) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var _stat = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var _this = this;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$.ajax(&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;async:false,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type:&#039;POST&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:&#039;/ajax/checkauthor&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data:&quot;author=&quot;+this.Value,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataType:&#039;text&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success:function(rs) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(rs == 1) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &#039;呃，已经被别人用了&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_stat = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else if(rs == 9) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_this.ErrorMessage&#91;item.attr(&#039;name&#039;)&#93; = &#039;换一个吧。Sorry :(&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_stat = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_stat = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return _stat;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;Items:&#91;&#93;,<br/>&nbsp;&nbsp;ErrorMessage:&#91;&#93;,<br/>&nbsp;&nbsp;Value:&#039;&#039;,<br/>&nbsp;&nbsp;Validate:function(theItem) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(typeof(theItem) != &#039;undefined&#039;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Items = &#91;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.ErrorMessage = &#91;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var valid = theItem.attr(&#039;valid&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(typeof(valid) != &#039;undefined&#039;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Items&#91;theItem.attr(&#039;name&#039;)&#93; = theItem;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Value = theItem.val();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var method = valid.split(&#039;&#124;&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var i in method) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var re = /(.*)&#92;&#91;(.*&#91;^&#92;&#93;&#93;)&#92;&#93;$/;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(re.test(method&#91;i&#93;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var tmp = method&#91;i&#93;.match(re);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(typeof(this&#91;tmp&#91;1&#93;&#93;) == &#039;function&#039; &amp;&amp; this&#91;tmp&#91;1&#93;&#93;(theItem, tmp&#91;2&#93;) == false)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(typeof(this&#91;method&#91;i&#93;&#93;) == &#039;function&#039; &amp;&amp; this&#91;method&#91;i&#93;&#93;(theItem) == false)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;showNotice(this.Items, this.ErrorMessage);//显示错误或者正确提示。这个方法得自己写<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(this.count(this.ErrorMessage) &gt; 0) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;count:function(obj) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var counter = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;for(i in obj) counter++;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return counter;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;getStrActualLen:function(sChars)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;sChars = $.trim(sChars);<br/>&nbsp;&nbsp;&nbsp;&nbsp;var len = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt;sChars.length;i++)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iCode = sChars.charCodeAt(i);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((iCode&gt;=0 &amp;&amp; iCode&lt;=255)&#124;&#124;(iCode&gt;=0xff61 &amp;&amp; iCode&lt;=0xff9f))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len += 1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len += 2;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return len;<br/>&nbsp;&nbsp;&#125;<br/>&#125;</div><br/><br/>一般来说，还需要下面两个js函数，不过这俩你得根据自己需要来修改了<br/><div class="code">function showNotice(objs, msgs) &#123;<br/>&nbsp;&nbsp;for(i in objs) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;clearNotice(objs&#91;i&#93;);//清除提示信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(typeof(msgs&#91;i&#93;) != &#039;undefined&#039;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objs&#91;i&#93;.parents(&#039;dd&#039;).addClass(&#039;wrong&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objs&#91;i&#93;.after(&#039;&lt;div class=&quot;wrong_tip&quot;&gt;&#039;+msgs&#91;i&#93;+&#039;&lt;/div&gt;&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objs&#91;i&#93;.parents(&#039;dd&#039;).addClass(&#039;correct&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objs&#91;i&#93;.after(&#039;&lt;div class=&quot;ok&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>function clearNotice(obj) &#123;<br/>&nbsp;&nbsp;obj.parents(&#039;dd&#039;).removeClass();<br/>&nbsp;&nbsp;obj.parents(&#039;dd&#039;).find(&#039;.ok&#039;).remove();<br/>&nbsp;&nbsp;obj.parents(&#039;dd&#039;).find(&#039;.wrong_tip&#039;).remove();<br/>&#125;</div><br/><br/>下面呢，是html的内容，其关键就在于valid="trim&#124;require"类似的这里了。<br/><div class="code">&lt;dl&gt;<br/>&nbsp;&nbsp;&lt;dt&gt;通行证账号：&lt;/dt&gt;<br/>&nbsp;&nbsp;&lt;dd&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;input name=&quot;username&quot; valid=&quot;trim&#124;require&#124;min_length&#91;4&#93;&#124;max_length&#91;14&#93;&#124;checkusername&quot; type=&quot;text&quot; class=&quot;id&quot;/&gt;<br/>&nbsp;&nbsp;&lt;/dd&gt;<br/>&nbsp;&nbsp;&lt;dd class=&quot;description&quot;&gt;中英文均可不超过6个汉字或12个字符，不可重复。&lt;/dd&gt;<br/>&lt;/dl&gt;</div><br/><br/>js的相关使用上也很简单<br/><div class="code">/* 失去焦点时提示 */<br/>$(&quot;input&quot;).blur(function()&#123;<br/>&nbsp;&nbsp;Validator.Validate($(this));<br/>&#125;);<br/><br/>/* ajax提交登录信息 */<br/>$(&quot;form&#91;id=&#039;login&#039;&#93;&quot;).submit(function() &#123;<br/>&nbsp;&nbsp;var st = true;<br/>&nbsp;&nbsp;var _this = this;<br/>&nbsp;&nbsp;$(this).find(&quot;&#91;valid&#93;&quot;).each(function() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;st = st&amp;Validator.Validate($(this));<br/>&nbsp;&nbsp;&#125;)<br/>&nbsp;&nbsp;if(st == 1) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$.ajax(&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:&quot;/onlogin&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type:&quot;POST&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data:$(this).serialize(),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataType:&#039;json&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success:function(auth) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onAjax(auth, _this);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;return false;<br/>&#125;)</div><br/>
]]>
</description>
</item><item>
<link>http://anerg.com/read.php?60</link>
<title><![CDATA[CI框架里用的验证码]]></title> 
<author>废墟 &lt;a@anerg.cn&gt;</author>
<category><![CDATA[PHP]]></category>
<pubDate>Mon, 19 Sep 2011 02:21:34 +0000</pubDate> 
<guid>http://anerg.com/read.php?60</guid> 
<description>
<![CDATA[ 
	自带那个不太喜欢，于是另外折腾了个<br/><div class="code" style="overflow: auto;"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">if&nbsp;(!</span><span style="color: #0000BB">defined</span><span style="color: #007700">(</span><span style="color: #DD0000">'BASEPATH'</span><span style="color: #007700">))<br />&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="color: #DD0000">'No&nbsp;direct&nbsp;script&nbsp;access&nbsp;allowed'</span><span style="color: #007700">);<br /><br />class&nbsp;</span><span style="color: #0000BB">vcode&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">CI_Model&nbsp;</span><span style="color: #007700">{<br /><br /></span><span style="color: #FF8000">//&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;$charset&nbsp;=&nbsp;"abcdefghizklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";&nbsp;&nbsp;&nbsp;//随机因子&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$charset&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"1234567890"</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//随机因子&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$code</span><span style="color: #007700">;&nbsp;&nbsp;</span><span style="color: #FF8000">//验证码文字<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$codelen&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">;&nbsp;</span><span style="color: #FF8000">//验证码显示几个文字<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$width&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">75</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//验证码宽度<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$height&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">25</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//验证码高度<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$img</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//验证码资源句柄<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$font</span><span style="color: #007700">;&nbsp;&nbsp;</span><span style="color: #FF8000">//指定的字体<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$fontsize&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">16</span><span style="color: #007700">;&nbsp;&nbsp;</span><span style="color: #FF8000">//指定的字体大小<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$fontcolor</span><span style="color: #007700">;&nbsp;&nbsp;</span><span style="color: #FF8000">//字体颜色&nbsp;&nbsp;随机<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//构造类&nbsp;&nbsp;编写字体<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">__construct</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">__construct</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">font&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">APPPATH&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'font/LiberationSans-Bold.ttf'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//创建4个随机码<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;function&nbsp;</span><span style="color: #0000BB">createCode</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$_leng&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">charset</span><span style="color: #007700">)&nbsp;-&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">&lt;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">codelen</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i</span><span style="color: #007700">++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">code</span><span style="color: #007700">.=</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">charset</span><span style="color: #007700">[</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$_leng</span><span style="color: #007700">)];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">code</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//创建背景<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;function&nbsp;</span><span style="color: #0000BB">createBg</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//创建画布&nbsp;给一个资源jubing<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">img&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">imagecreatetruecolor</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">width</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">height</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//背景颜色<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$color&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">imagecolorallocate</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">img</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">200</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">255</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">200</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">255</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">200</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">255</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//画出一个矩形<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">imagefilledrectangle</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">img</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">height</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">width</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$color</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//创建字体<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;function&nbsp;</span><span style="color: #0000BB">createFont</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$_x&nbsp;</span><span style="color: #007700">=&nbsp;(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">width&nbsp;</span><span style="color: #007700">/&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">codelen</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//字体长度<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">for&nbsp;(</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">&lt;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">codelen</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i</span><span style="color: #007700">++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//文字颜色<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$color&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">imagecolorallocate</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">img</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">156</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">156</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">156</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//资源句柄&nbsp;字体大小&nbsp;倾斜度&nbsp;字体长度&nbsp;&nbsp;字体高度&nbsp;&nbsp;字体颜色&nbsp;&nbsp;字体&nbsp;&nbsp;具体文本<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">imagettftext</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">img</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fontsize</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(-</span><span style="color: #0000BB">18</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">18</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">$_x&nbsp;</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">5</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">height</span><span style="color: #007700">/</span><span style="color: #0000BB">1.2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$color</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">font</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">code</span><span style="color: #007700">[</span><span style="color: #0000BB">$i</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//随机线条<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;function&nbsp;</span><span style="color: #0000BB">createLine</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//随机线条<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">for&nbsp;(</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">&lt;&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i</span><span style="color: #007700">++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$color&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">imagecolorallocate</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">img</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">156</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">156</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">156</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">imageline</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">img</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">width</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">height</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">width</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">height</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">$color</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #FF8000">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//随机雪花<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;($i&nbsp;=&nbsp;0;&nbsp;$i&nbsp;&lt;&nbsp;45;&nbsp;$i++)&nbsp;{<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$color&nbsp;=&nbsp;imagecolorallocate($this-&gt;img,&nbsp;mt_rand(220,&nbsp;255),&nbsp;mt_rand(220,&nbsp;255),&nbsp;mt_rand(220,&nbsp;255));<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagestring($this-&gt;img,&nbsp;mt_rand(1,&nbsp;5),&nbsp;mt_rand(0,&nbsp;$this-&gt;width),&nbsp;mt_rand(0,&nbsp;$this-&gt;height),&nbsp;'.',&nbsp;$color);<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//输出背景<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;function&nbsp;</span><span style="color: #0000BB">outPut</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//生成标头<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Expires:&nbsp;-1"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Cache-Control:&nbsp;no-store,&nbsp;private,&nbsp;post-check=0,&nbsp;pre-check=0,&nbsp;max-age=0"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">FALSE</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Pragma:&nbsp;no-cache"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-Type:image/png'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//输出图片<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">imagepng</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">img</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//销毁结果集<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">imagedestroy</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">img</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//对外输出<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">doimg</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//加载背景<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">createBg</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//加载文件<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">createCode</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//加载线条<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">createLine</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//加载字体<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">createFont</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//加载背景<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">outPut</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//获取验证码<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">getCode</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">strtolower</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">code</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</span>
</span>
</code></div><br/><br/>使用方法如下<br/><div class="code" style="overflow: auto;"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">create_vcode</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</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">model</span><span style="color: #007700">(</span><span style="color: #DD0000">'vcode'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">vcode</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">doimg</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cookie&nbsp;</span><span style="color: #007700">=&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'vcode'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'value'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">common</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">authCode</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">vcode</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getCode</span><span style="color: #007700">(),&nbsp;</span><span style="color: #DD0000">'ENCODE'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">_KEY</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'expire'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'1800'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;</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">set_cookie</span><span style="color: #007700">(</span><span style="color: #0000BB">$cookie</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;die;<br />}</span>
</span>
</code></div><br/><br/>字体文件在此<br/><a href="attachment.php?fid=22">点击这里下载文件</a>
]]>
</description>
</item><item>
<link>http://anerg.com/read.php?59</link>
<title><![CDATA[遍历一个对象并执行其中的方法]]></title> 
<author>废墟 &lt;a@anerg.cn&gt;</author>
<category><![CDATA[HTLM&amp;CSS&amp;JS]]></category>
<pubDate>Wed, 07 Sep 2011 03:36:24 +0000</pubDate> 
<guid>http://anerg.com/read.php?59</guid> 
<description>
<![CDATA[ 
	在写一个js验证的时候发现可以少写很多东西。<br/><br/>js的验证代码例子如下：<br/><div class="code">var _check = &#123;<br/>&nbsp;&nbsp;username:function() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var obj = $(&quot;form&#91;id=&#039;signup&#039;&#93; input&#91;name=&#039;username&#039;&#93;&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;var str = $.trim(obj.val());<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(str == &#039;&#039;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show_err(obj, &quot;帐号不能为空&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(str.length &lt; 3 &#124;&#124; str.length &gt; 14) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show_err(obj, &quot;帐号长度为3-14个字符&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.post(&quot;/ajax/checkusername&quot;, &#123;username:str&#125;, function(rs)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(rs == 1) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show_err(obj, &quot;帐号已存在，请换一个&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;, &#039;text&#039;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;password:function() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var obj = $(&quot;form&#91;id=&#039;signup&#039;&#93; input&#91;name=&#039;password&#039;&#93;&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;var str = obj.val();<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(str == &#039;&#039;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show_err(obj, &quot;密码不能为空&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(str.length &lt; 6 &#124;&#124; str.length &gt; 14) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show_err(obj, &quot;密码长度为6-14个字符&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;passconf:function() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var obj = $(&quot;form&#91;id=&#039;signup&#039;&#93; input&#91;name=&#039;passconf&#039;&#93;&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;var str = obj.val();<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(str == &#039;&#039;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show_err(obj, &quot;密码确认不能为空&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(str != $(&quot;form&#91;id=&#039;signup&#039;&#93; input&#91;name=&#039;password&#039;&#93;&quot;).val()) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show_err(obj, &quot;两次密码不一至&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&#125;<br/>&#125;</div><br/><br/>想要简单的执行这个只需要<br/><div class="code">for(i in _check) &#123;<br/>&nbsp;&nbsp;if(typeof(_check&#91;i&#93;) == &#039;function&#039;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;_check&#91;i&#93;();<br/>&nbsp;&nbsp;&#125;<br/>&#125;</div>
]]>
</description>
</item><item>
<link>http://anerg.com/read.php?58</link>
<title><![CDATA[jquery实现的回车(Enter)替换为Tab键]]></title> 
<author>废墟 &lt;a@anerg.cn&gt;</author>
<category><![CDATA[HTLM&amp;CSS&amp;JS]]></category>
<pubDate>Sun, 22 May 2011 06:40:00 +0000</pubDate> 
<guid>http://anerg.com/read.php?58</guid> 
<description>
<![CDATA[ 
	<div class="code">$(document).ready(function () &#123;<br/>&nbsp;&nbsp;$(&#039;:input:text:first&#039;).focus();<br/>&nbsp;&nbsp;$(&#039;:input:enabled&#039;).addClass(&#039;enterIndex&#039;);<br/>&nbsp;&nbsp;// get only input tags with class data-entry<br/>&nbsp;&nbsp;textboxes = $(&#039;.enterIndex&#039;);<br/>&nbsp;&nbsp;// now we check to see which browser is being used<br/>&nbsp;&nbsp;if ($.browser.mozilla) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$(textboxes).bind(&#039;keypress&#039;, CheckForEnter);<br/>&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$(textboxes).bind(&#039;keydown&#039;, CheckForEnter);<br/>&nbsp;&nbsp;&#125;<br/>&#125;);<br/>function CheckForEnter(event) &#123;<br/>&nbsp;&nbsp;if (event.keyCode == 13 &amp;&amp; $(this).attr(&#039;type&#039;) != &#039;button&#039; &amp;&amp; $(this).attr(&#039;type&#039;) != &#039;submit&#039; &amp;&amp; $(this).attr(&#039;type&#039;) != &#039;textarea&#039; &amp;&amp; $(this).attr(&#039;type&#039;) != &#039;reset&#039;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var i = $(&#039;.enterIndex&#039;).index($(this));<br/>&nbsp;&nbsp;&nbsp;&nbsp;var n = $(&#039;.enterIndex&#039;).length;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (i &lt; n - 1) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($(this).attr(&#039;type&#039;) != &#039;radio&#039;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NextDOM($(&#039;.enterIndex&#039;),i);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var last_radio = $(&#039;.enterIndex&#039;).index($(&#039;.enterIndex&#91;type=radio&#93;&#91;name=&#039; + $(this).attr(&#039;name&#039;) + &#039;&#93;:last&#039;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NextDOM($(&#039;.enterIndex&#039;),last_radio);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>function NextDOM(myjQueryObjects,counter) &#123;<br/>&nbsp;&nbsp;if (myjQueryObjects.eq(counter+1)&#91;0&#93;.disabled) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;NextDOM(myjQueryObjects, counter + 1);<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;myjQueryObjects.eq(counter + 1).trigger(&#039;focus&#039;);<br/>&nbsp;&nbsp;&#125;<br/>&#125;</div>
]]>
</description>
</item>
</channel>
</rss>
