<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[飞扬的口袋 2010 - php&mysql]]></title>
<link>http://www.koodai.com.cn/</link>
<description><![CDATA[不要牺牲自己的追求去点亮别人眼中的光环~]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[kisscb@126.com(ben)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>飞扬的口袋 2010</title>
	<url>http://www.koodai.com.cn/images/logos.gif</url>
	<link>http://www.koodai.com.cn/</link>
	<description>飞扬的口袋 2010</description>
</image>

			<item>
			<link>http://www.koodai.com.cn/article/php-mysql/host2ez-VPS使用教程.htm</link>
			<title><![CDATA[host2ez VPS使用教程【配置kloxo】]]></title>
			<author>kisscb@126.com(admin)</author>
			<category><![CDATA[php&amp;mysql]]></category>
			<pubDate>Wed,21 Jul 2010 00:47:23 +0800</pubDate>
			<guid>http://www.koodai.com.cn/default.asp?id=830</guid>
		<description><![CDATA[<p>终于找到一家价格有合适，语言又是纯粹的中文，而且性价比比较高的XEN VPS服务商，先试买一个月看看。这里有一个我的推广链接，如果您觉得这篇文章对您有帮助的话，请您通过该链接购买，对您不会有任何的损害，而在您消费之后会在一段时间后给我带来一些小小的好处。<a target="_blank" href="https://my.host2ez.com/aff.php?aff=626">HOST2EZ</a></p>
<p>首先购买过程就不废话了，非常智能，付款即可开通。</p>
<p>之后你的邮箱会收到三四封邮件，查看&ldquo;VPS资料信&rdquo;，然后就由您的vps账户资料，从<a target="_blank" href="http://www.onlinedown.net/softdown/2186_2.htm">华军下载PuTTY客户端</a>，很小巧，然后输入您的ip地址登录即可。</p>
<p>估计你还会看到<a href="http://manage.vps2ez.com:5353/">http://manage.vps2ez.com:5353/</a>这个地址，在这里您可以选择您安装的操作系统，从新启动或者关机等操作。功能简单，一目了然。</p>
<p><img alt="" src="http://www.koodai.com.cn/download.asp?id=108" /></p>
<p>现在相当于给您一台最小化安装的linux操作系统，啥都没有！服务器数据库啥的都得自己安装。</p>
<p>执行命令，安装控制面板：</p>
<div class="codeText">
<div class="codeHead">在SSH登陆后执行的命令</div>
<ol class="dp-rb">
    <li class="alt"><span><span>wget&nbsp;http://www.ctohome.com/linux-vps-pack/kloxo_with_chinese_language.sh;sh&nbsp;./kloxo_with_chinese_language.sh;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>该命令将在您的服务器上安装kloxo控制面板。</p>
<p>然后是在地址栏输入：<a href="http://IP">http://IP</a>地址:7778/login/&nbsp; 登录，用户名密码全是admin。</p>
<p>该密码登陆后会立即要求您更改。设置一个高难度的密码，然后才能进入控制中心。</p>
<p><img alt="" src="http://www.koodai.com.cn/download.asp?id=109" /></p>
<p>第一件大事是该语言！</p>
<hr />
<p>到此为止，很多事情已经完成了，下面是添加dns建站的问题了。</p>
<p><img alt="" src="http://www.koodai.com.cn/download.asp?id=110" /></p>
<p>第一个填写自己的域名，IP地址如果没有购买单独IP的话只有一个默认的，DNS我用的是dnspod的，按照自己的情况填写，提交。</p>
<p>然后再左侧导航右下位置找到&ldquo;域名&rdquo;，添加域名。</p>
<p>千万注意，不要把&ldquo;启用状态记录 &rdquo;前面打钩，否则服务器会被日志文件撑爆的！</p>
<p>重新启动apache服务器：</p>
<p><img alt="" src="http://www.koodai.com.cn/download.asp?id=111" /></p>
<p>第一行是停止，第二行是启动，先停止后启动。注意中间的操作稍微有点间隔，用以让服务器完成工作。</p>
<hr />
<p>下面是网站的上传内容部分：</p>
<p>用ftp登录的时候密码就是，<strong>服务器就是你的IP地址</strong>，<strong>登录名是你绑定的域名</strong>，<strong>密码默认就是你的kloxo面板密码。</strong></p>
<p>我这里已经可以登录了。</p>
<hr />
<p>当然了，还有数据库管理部分。</p>
<p><img alt="" src="http://www.koodai.com.cn/download.asp?id=112" /></p>
<p>修改红色箭头指的部分呵呵</p>
<ol>
    <li><strong>mysql用户名就是root </strong></li>
    <li>密码是区分大小写的</li>
    <li>建议设置字母和数字组合的密码</li>
    <li>密码位数建议8位以上</li>
</ol>
<hr />
<p>其他的一些配置具体可以根据网络上的自己研究。</p>]]></description>
		</item>
		
			<item>
			<link>http://www.koodai.com.cn/article/php-mysql/突破RayFile的防盗链实现SongTatse歌曲下载.htm</link>
			<title><![CDATA[突破RayFile的防盗链实现SongTatse歌曲下载]]></title>
			<author>kisscb@126.com(admin)</author>
			<category><![CDATA[php&amp;mysql]]></category>
			<pubDate>Tue,20 Oct 2009 23:24:18 +0800</pubDate>
			<guid>http://www.koodai.com.cn/default.asp?id=766</guid>
		<description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 前面博客中提到的程序，实现了找出MP3文件地址的功能，不过貌似无法下载！当浏览器打开的时候，会自动跳转到下载页面，不能弹出目标另存为的提示窗口，基于此，有必要更深入探讨一番防盗链的技术。</p>
<p>&nbsp;&nbsp;&nbsp; 网上找到了一篇Vender写的关于突破百度空间图片防盗链的文章，以及阿权发表在<a target="_blank" href="http://www.aslibra.com/blog/post/crack_pic_referer_solution.php">阿权书房的破解图片防盗链的文章</a>，以及园子里钱凌的：<a href="http://blog.csdn.net/qianling3439/archive/2009/02/05/3864248.aspx" jquery1256054469921="14"><font color="#336699">Apache防盗链的使用和破解</font></a>，另外我发现CURL很强大，非常的强大，钱凌的两篇文章均有介绍：<a href="http://blog.csdn.net/qianling3439/archive/2008/12/11/3498294.aspx" jquery1256054469921="25"><font color="#336699">curl使用总结</font></a>&nbsp; <a href="http://blog.csdn.net/qianling3439/archive/2008/12/11/3496516.aspx" jquery1256054469921="26"><font color="#336699">curl使用简介------转载------适合入门</font></a>&nbsp;&nbsp; <u><span style="color: #999999">[</span></u><span style="color: #999999"> </span><a target="_blank" href="http://blog.csdn.net/qianling3439/archive/2008/03/03/2143228.aspx"><u><span style="color: #999999">收藏一篇调教EditPlus的文章</span></u></a><span style="color: #999999"> ]。<span style="color: #333333">百度空间来的</span><font color="#000000"><a target="_blank" href="http://hi.baidu.com/flashconey/blog/item/da709564b2e097f6f6365437.html">用PHP SOCKET破解防盗链取得软件真正下载地址并下载到本地的方法</a>&nbsp;。</font></span></p>
<p><span style="color: #999999"><font color="#000000">&nbsp;&nbsp;&nbsp; ASP破解网易相册的代码：</font></span></p>
<div class="codeText">
<div class="codeHead">ASP/Visual Basic代码</div>
<ol class="dp-vb">
    <li class="alt"><span><span>&lt;% &nbsp;&nbsp;</span></span></li>
    <li><span class="comment">'盗链判断 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">If</span><span>&nbsp;Instr(Request.ServerVariables(</span><span class="string">&quot;http_referer&quot;</span><span>),</span><span class="string">&quot;http://&quot;</span><span>&amp;Request.ServerVariables(</span><span class="string">&quot;server_name&quot;</span><span>)</span><span class="string">&quot;&quot;</span><span>)&nbsp;=&nbsp;0&nbsp;</span><span class="keyword">Then</span><span>&nbsp;&nbsp;</span></li>
    <li><span>Response.Write&nbsp;</span><span class="string">&quot;非法链接&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>Response.</span><span class="keyword">End</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="keyword">End</span><span>&nbsp;</span><span class="keyword">If</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span class="keyword">Dim</span><span>&nbsp;url,&nbsp;body,&nbsp;myCache &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>url&nbsp;=&nbsp;Request.QueryString(</span><span class="string">&quot;url&quot;</span><span>) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span class="keyword">Set</span><span>&nbsp;myCache&nbsp;=&nbsp;new&nbsp;cache &nbsp;&nbsp;</span></li>
    <li class="alt"><span>myCache.name&nbsp;=&nbsp;</span><span class="string">&quot;picindex&quot;</span><span>&amp;url &nbsp;&nbsp;</span></li>
    <li><span class="keyword">If</span><span>&nbsp;myCache.valid&nbsp;</span><span class="keyword">Then</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>body&nbsp;=&nbsp;myCache.value &nbsp;&nbsp;</span></li>
    <li><span class="keyword">Else</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>body&nbsp;=&nbsp;GetWebData(url) &nbsp;&nbsp;</span></li>
    <li><span>myCache.add&nbsp;body,dateadd(</span><span class="string">&quot;d&quot;</span><span>,1,now) &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">End</span><span>&nbsp;</span><span class="keyword">If</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">If</span><span>&nbsp;Err.Number&nbsp;=&nbsp;0&nbsp;</span><span class="keyword">Then</span><span>&nbsp;&nbsp;</span></li>
    <li><span>Response.CharSet&nbsp;=&nbsp;</span><span class="string">&quot;UTF-8&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>Response.ContentType&nbsp;=&nbsp;</span><span class="string">&quot;application/octet-stream&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>Response.BinaryWrite&nbsp;body &nbsp;&nbsp;</span></li>
    <li class="alt"><span>Response.Flush &nbsp;&nbsp;</span></li>
    <li><span class="keyword">Else</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>Wscript.Echo&nbsp;Err.Description &nbsp;&nbsp;</span></li>
    <li><span class="keyword">End</span><span>&nbsp;if &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span class="comment">'取得数据 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">Public</span><span>&nbsp;</span><span class="keyword">Function</span><span>&nbsp;GetWebData(</span><span class="keyword">ByVal</span><span>&nbsp;strUrl) &nbsp;&nbsp;</span></li>
    <li><span class="keyword">Dim</span><span>&nbsp;curlpath &nbsp;&nbsp;</span></li>
    <li class="alt"><span>curlpath&nbsp;=&nbsp;Mid(strUrl,1,Instr(8,strUrl,</span><span class="string">&quot;/&quot;</span><span>)) &nbsp;&nbsp;</span></li>
    <li><span class="keyword">Dim</span><span>&nbsp;Retrieval &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">Set</span><span>&nbsp;Retrieval&nbsp;=&nbsp;Server.CreateObject(</span><span class="string">&quot;Microsoft.XMLHTTP&quot;</span><span>) &nbsp;&nbsp;</span></li>
    <li><span class="keyword">With</span><span>&nbsp;Retrieval &nbsp;&nbsp;</span></li>
    <li class="alt"><span>.Open&nbsp;</span><span class="string">&quot;Get&quot;</span><span>,&nbsp;strUrl,&nbsp;</span><span class="keyword">False</span><span>,</span><span class="string">&quot;&quot;</span><span>,</span><span class="string">&quot;&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>.setRequestHeader&nbsp;</span><span class="string">&quot;Referer&quot;</span><span>,&nbsp;curlpath &nbsp;&nbsp;</span></li>
    <li class="alt"><span>.Send &nbsp;&nbsp;</span></li>
    <li><span>GetWebData&nbsp;=.ResponseBody &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">End</span><span>&nbsp;</span><span class="keyword">With</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="keyword">Set</span><span>&nbsp;Retrieval&nbsp;=&nbsp;</span><span class="keyword">Nothing</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">End</span><span>&nbsp;</span><span class="keyword">Function</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span class="comment">'cache类 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>class&nbsp;Cache &nbsp;&nbsp;</span></li>
    <li class="alt"><span>private&nbsp;obj&nbsp;</span><span class="comment">'cache内容 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>private&nbsp;expireTime&nbsp;</span><span class="comment">'过期时间 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>private&nbsp;expireTimeName&nbsp;</span><span class="comment">'过期时间application名 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>private&nbsp;cacheName&nbsp;</span><span class="comment">'cache内容application名 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>private&nbsp;path&nbsp;</span><span class="comment">'url </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>private&nbsp;sub&nbsp;class_initialize() &nbsp;&nbsp;</span></li>
    <li><span>path=request.servervariables(</span><span class="string">&quot;url&quot;</span><span>) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>path=left(path,instrRev(path,</span><span class="string">&quot;/&quot;</span><span>)) &nbsp;&nbsp;</span></li>
    <li><span>end&nbsp;sub &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>private&nbsp;sub&nbsp;class_terminate() &nbsp;&nbsp;</span></li>
    <li class="alt"><span>end&nbsp;sub &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>public&nbsp;property&nbsp;get&nbsp;blEmpty &nbsp;&nbsp;</span></li>
    <li><span class="comment">'是否为空 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>if&nbsp;isempty(obj)&nbsp;then &nbsp;&nbsp;</span></li>
    <li><span>blEmpty=true &nbsp;&nbsp;</span></li>
    <li class="alt"><span>else &nbsp;&nbsp;</span></li>
    <li><span>blEmpty=false &nbsp;&nbsp;</span></li>
    <li class="alt"><span>end&nbsp;if &nbsp;&nbsp;</span></li>
    <li><span>end&nbsp;property &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>public&nbsp;property&nbsp;get&nbsp;valid &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="comment">'是否可用(过期) </span><span>&nbsp;&nbsp;</span></li>
    <li><span>if&nbsp;isempty(obj)&nbsp;or&nbsp;not&nbsp;isDate(expireTime)&nbsp;then &nbsp;&nbsp;</span></li>
    <li class="alt"><span>valid=false &nbsp;&nbsp;</span></li>
    <li><span>elseif&nbsp;</span><span class="keyword">CDate</span><span>(expireTime)&lt;now&nbsp;then &nbsp;&nbsp;</span></li>
    <li class="alt"><span>valid=false &nbsp;&nbsp;</span></li>
    <li><span>else &nbsp;&nbsp;</span></li>
    <li class="alt"><span>valid=true &nbsp;&nbsp;</span></li>
    <li><span>end&nbsp;if &nbsp;&nbsp;</span></li>
    <li class="alt"><span>end&nbsp;property &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>public&nbsp;property&nbsp;let&nbsp;name(str) &nbsp;&nbsp;</span></li>
    <li><span class="comment">'设置cache名 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>cacheName=str&nbsp;&amp;&nbsp;path &nbsp;&nbsp;</span></li>
    <li><span>obj=application(cacheName) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>expireTimeName=str&nbsp;&amp;&nbsp;</span><span class="string">&quot;expires&quot;</span><span>&nbsp;&amp;&nbsp;path &nbsp;&nbsp;</span></li>
    <li><span>expireTime=application(expireTimeName) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>end&nbsp;property &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>public&nbsp;property&nbsp;let&nbsp;expires(tm) &nbsp;&nbsp;</span></li>
    <li><span class="comment">'重设置过期时间 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>expireTime=tm &nbsp;&nbsp;</span></li>
    <li><span>application.lock &nbsp;&nbsp;</span></li>
    <li class="alt"><span>application(expireTimeName)=expireTime &nbsp;&nbsp;</span></li>
    <li><span>application.unlock &nbsp;&nbsp;</span></li>
    <li class="alt"><span>end&nbsp;property &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>public&nbsp;sub&nbsp;add(var,expire) &nbsp;&nbsp;</span></li>
    <li><span class="comment">'赋值 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>if&nbsp;isempty(var)&nbsp;or&nbsp;not&nbsp;isDate(expire)&nbsp;then &nbsp;&nbsp;</span></li>
    <li><span>exit&nbsp;sub &nbsp;&nbsp;</span></li>
    <li class="alt"><span>end&nbsp;if &nbsp;&nbsp;</span></li>
    <li><span>obj=var &nbsp;&nbsp;</span></li>
    <li class="alt"><span>expireTime=expire &nbsp;&nbsp;</span></li>
    <li><span>application.lock &nbsp;&nbsp;</span></li>
    <li class="alt"><span>application(cacheName)=obj &nbsp;&nbsp;</span></li>
    <li><span>application(expireTimeName)=expireTime &nbsp;&nbsp;</span></li>
    <li class="alt"><span>application.unlock &nbsp;&nbsp;</span></li>
    <li><span>end&nbsp;sub &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>public&nbsp;property&nbsp;get&nbsp;value &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="comment">'取值 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>if&nbsp;isempty(obj)&nbsp;or&nbsp;not&nbsp;isDate(expireTime)&nbsp;then &nbsp;&nbsp;</span></li>
    <li class="alt"><span>value=null &nbsp;&nbsp;</span></li>
    <li><span>elseif&nbsp;</span><span class="keyword">CDate</span><span>(expireTime)&lt;now&nbsp;then &nbsp;&nbsp;</span></li>
    <li class="alt"><span>value=null &nbsp;&nbsp;</span></li>
    <li><span>else &nbsp;&nbsp;</span></li>
    <li class="alt"><span>value=obj &nbsp;&nbsp;</span></li>
    <li><span>end&nbsp;if &nbsp;&nbsp;</span></li>
    <li class="alt"><span>end&nbsp;property &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>public&nbsp;sub&nbsp;makeEmpty() &nbsp;&nbsp;</span></li>
    <li><span class="comment">'释放application </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>application.lock &nbsp;&nbsp;</span></li>
    <li><span>application(cacheName)=empty &nbsp;&nbsp;</span></li>
    <li class="alt"><span>application(expireTimeName)=empty &nbsp;&nbsp;</span></li>
    <li><span>application.unlock &nbsp;&nbsp;</span></li>
    <li class="alt"><span>obj=empty &nbsp;&nbsp;</span></li>
    <li><span>expireTime=empty &nbsp;&nbsp;</span></li>
    <li class="alt"><span>end&nbsp;sub &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>public&nbsp;function&nbsp;equal(var2) &nbsp;&nbsp;</span></li>
    <li><span class="comment">'比较 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>if&nbsp;typename(obj)&lt;&gt;typename(var2)&nbsp;then &nbsp;&nbsp;</span></li>
    <li><span>equal=false &nbsp;&nbsp;</span></li>
    <li class="alt"><span>elseif&nbsp;typename(obj)=</span><span class="string">&quot;Object&quot;</span><span>&nbsp;then &nbsp;&nbsp;</span></li>
    <li><span>if&nbsp;obj&nbsp;is&nbsp;var2&nbsp;then &nbsp;&nbsp;</span></li>
    <li class="alt"><span>equal=true &nbsp;&nbsp;</span></li>
    <li><span>else &nbsp;&nbsp;</span></li>
    <li class="alt"><span>equal=false &nbsp;&nbsp;</span></li>
    <li><span>end&nbsp;if &nbsp;&nbsp;</span></li>
    <li class="alt"><span>elseif&nbsp;typename(obj)=</span><span class="string">&quot;Variant()&quot;</span><span>&nbsp;then &nbsp;&nbsp;</span></li>
    <li><span>if&nbsp;join(obj,</span><span class="string">&quot;^&quot;</span><span>)=join(var2,</span><span class="string">&quot;^&quot;</span><span>)&nbsp;then &nbsp;&nbsp;</span></li>
    <li class="alt"><span>equal=true &nbsp;&nbsp;</span></li>
    <li><span>else &nbsp;&nbsp;</span></li>
    <li class="alt"><span>equal=false &nbsp;&nbsp;</span></li>
    <li><span>end&nbsp;if &nbsp;&nbsp;</span></li>
    <li class="alt"><span>else &nbsp;&nbsp;</span></li>
    <li><span>if&nbsp;obj=var2&nbsp;then &nbsp;&nbsp;</span></li>
    <li class="alt"><span>equal=true &nbsp;&nbsp;</span></li>
    <li><span>else &nbsp;&nbsp;</span></li>
    <li class="alt"><span>equal=false &nbsp;&nbsp;</span></li>
    <li><span>end&nbsp;if &nbsp;&nbsp;</span></li>
    <li class="alt"><span>end&nbsp;if &nbsp;&nbsp;</span></li>
    <li><span>end&nbsp;function &nbsp;&nbsp;</span></li>
    <li class="alt"><span>end&nbsp;class &nbsp;&nbsp;</span></li>
    <li><span>%&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><span style="color: #999999"><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a target="_blank" href="http://www.discuz.net/thread-548477-1-1.html">以上代码属转载</a>，未经过测试。</font></span></p>
<p><span style="color: #999999"><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我看要用PHP突破的话，只有CURL了！</font></span></p>]]></description>
		</item>
		
			<item>
			<link>http://www.koodai.com.cn/article/php-mysql/找出SongTatse地址的Php原型程序补充.htm</link>
			<title><![CDATA[找出SongTatse地址的Php原型程序补充]]></title>
			<author>kisscb@126.com(admin)</author>
			<category><![CDATA[php&amp;mysql]]></category>
			<pubDate>Mon,19 Oct 2009 23:56:58 +0800</pubDate>
			<guid>http://www.koodai.com.cn/default.asp?id=764</guid>
		<description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 其中更改了表单的提交地址为：</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">form</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;form1&quot;</span><span>&nbsp;</span><span class="attribute">method</span><span>=</span><span class="attribute-value">&quot;post&quot;</span><span>&nbsp;</span><span class="attribute">action</span><span>=</span><span class="attribute-value">&quot;&lt;?php&nbsp;echo&nbsp;$_SERVER['PHP_SELF'];?&gt;&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;发现有些歌曲地址是无法找出来的！比如：想爱 ： <a href="http://www.songtaste.com/song/1568155/">http://www.songtaste.com/song/1568155/</a>&nbsp;，其真实的文件地址为：<a href="http://cachefile9.rayfile.com/zh-cn/download/5d17071c38e0dfe2b3aaf5c361dcb620/preview.wma">http://cachefile9.rayfile.com/zh-cn/download/5d17071c38e0dfe2b3aaf5c361dcb620/preview.wma</a>&nbsp;。问题之一是在原来的程序中，只考虑到了MP3一种文件类型，而没有考虑到其他的文件类型，当提取WMA的时候自然无法工作。这个可以修改原来51行左右的地址。可以IF ... ELSEIF ... ，当然最完美的办法就是分析后缀，不过大多文件都是wma或者MP3。</p>
<p>&nbsp;&nbsp;&nbsp; 但是在PHP伪造refersh信息的时候，还是无法正常工作！这也就是当前工作的瓶颈。</p>
<p>&nbsp;&nbsp;&nbsp; 这个问题就留待明天解决吧，早点睡觉，天太冷了！</p>
<p><span style="color: #808080">&nbsp;&nbsp;&nbsp; 另外，找出的地址可能无法试听！下载的时候好像只能用迅雷，其他下载工具不一定好使，这个我就无能为力了~~</span></p>]]></description>
		</item>
		
			<item>
			<link>http://www.koodai.com.cn/article/php-mysql/找出SongTatse音乐的真实地址的Php原型程序.htm</link>
			<title><![CDATA[找出SongTatse音乐的真实地址的Php原型程序]]></title>
			<author>kisscb@126.com(admin)</author>
			<category><![CDATA[php&amp;mysql]]></category>
			<pubDate>Mon,19 Oct 2009 22:19:04 +0800</pubDate>
			<guid>http://www.koodai.com.cn/default.asp?id=763</guid>
		<description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; php版本的程序也终于做出原型来了，不过还不够完美，欠缺很多，在我看来，现在最麻烦的就是性能的瓶颈。先释放出来，其他的慢慢再说吧，如果这样的东西拿来做产品的话，我估计服务器死的会很难看的！</p>
<p>&nbsp;&nbsp;&nbsp; 其中很重要的就是在前面日志中提到的伪造Refersh信息。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 为了Url整洁美观，可以考虑加入PathInfo模式。我记得好像有个土豆的寻根网站，只要改变域名，相同的get部分就能获取真实地址并预览很有意思。这个其实也可以的，只需要稍微改造一下</p>
<div class="codeText">
<div class="codeHead">PHP代码</div>
<ol class="dp-c">
    <li class="alt"><span><span>&lt;?php&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span><span class="comment">//&nbsp;</span></span><span style="color: #339966"><span class="comment">找出SongTatse音乐的真实地址的Php原型程序</span> </span></span></li>
    <li class="alt"><span style="color: #99cc00">// Author: ben [http://www.koodai.com.cn]</span></li>
    <li class="alt">&nbsp;</li>
    <li><span class="func">error_reporting</span><span>(0); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">function</span><span>&nbsp;intercept_str(</span><span class="vars">$str</span><span>,</span><span class="vars">$start</span><span>,</span><span class="vars">$end</span><span>,</span><span class="vars">$option</span><span>){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$strarr</span><span>=</span><span class="func">explode</span><span>(</span><span class="vars">$start</span><span>,</span><span class="vars">$str</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$tem</span><span>=</span><span class="vars">$strarr</span><span>[1]; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="func">empty</span><span class="keyword">empty</span><span>(</span><span class="vars">$end</span><span>)){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;如果右边界为空，就直接输出左边界后面的内容 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="vars">$tem</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span class="keyword">else</span><span>{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;否则的话&nbsp;按照$option条件流程 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$strarr</span><span>=</span><span class="func">explode</span><span>(</span><span class="vars">$end</span><span>,</span><span class="vars">$tem</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$option</span><span>==1){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;待截取内容 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="vars">$strarr</span><span>[0]; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$option</span><span>==2){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;左边界&nbsp;+&nbsp;待截取的内容 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="vars">$start</span><span>.</span><span class="vars">$strarr</span><span>[0]; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$option</span><span>==3){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;待截取的内容&nbsp;+&nbsp;右边界 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="vars">$strarr</span><span>[0].</span><span class="vars">$end</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span class="keyword">else</span><span>{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;左边界&nbsp;+&nbsp;待截取的内容&nbsp;+&nbsp;右边界 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="vars">$start</span><span>.</span><span class="vars">$strarr</span><span>[0].</span><span class="vars">$end</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">function</span><span>&nbsp;get_contents(</span><span class="vars">$url</span><span>){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$ch</span><span>&nbsp;=&nbsp;curl_init();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(</span><span class="vars">$ch</span><span>,&nbsp;CURLOPT_URL,&nbsp;</span><span class="vars">$url</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(</span><span class="vars">$ch</span><span>,&nbsp;CURLOPT_RETURNTRANSFER,&nbsp;1); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(</span><span class="vars">$ch</span><span>,&nbsp;CURLOPT_TIMEOUT,&nbsp;1000);&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$file_contents</span><span>&nbsp;=&nbsp;curl_exec(</span><span class="vars">$ch</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_close(</span><span class="vars">$ch</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="vars">$file_contents</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>header(&nbsp;</span><span class="string">&quot;content-Type=text/html;charset=utf-8&quot;</span><span>&nbsp;); &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$form_url</span><span>=trim(</span><span class="vars">$_POST</span><span>[</span><span class="string">&quot;url&quot;</span><span>]); &nbsp;&nbsp;</span></li>
    <li><span class="keyword">if</span><span>(</span><span class="vars">$form_url</span><span>){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//获取ST上歌曲的ID，打开播放页面的链接 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$st_id</span><span>=</span><span class="func">str_replace</span><span>(</span><span class="string">&quot;http://www.songtaste.com/song/&quot;</span><span>,</span><span class="string">&quot;&quot;</span><span>,</span><span class="vars">$form_url</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$st_id</span><span>=</span><span class="func">str_replace</span><span>(</span><span class="string">&quot;/&quot;</span><span>,</span><span class="string">&quot;&quot;</span><span>,</span><span class="vars">$st_id</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$st_play_url</span><span>=</span><span class="string">&quot;http://www.songtaste.com/play.php?song_id=&quot;</span><span>.</span><span class="vars">$st_id</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//打开弹出播放页面的链接，获取ray的链接地址。 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$play_content</span><span>=get_contents(&nbsp;</span><span class="vars">$st_play_url</span><span>&nbsp;&nbsp;); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$play_content_temp_a</span><span>&nbsp;=&nbsp;intercept_str(&nbsp;</span><span class="vars">$play_content</span><span>,&nbsp;</span><span class="string">'&lt;UL&nbsp;id=songs&gt;'</span><span>,</span><span class="string">'&lt;\/UL&gt;'</span><span>,&nbsp;1&nbsp;);&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$play_content_temp_b</span><span>&nbsp;=&nbsp;intercept_str(&nbsp;</span><span class="vars">$play_content_temp_a</span><span>,&nbsp;</span><span class="string">'http://'</span><span>,</span><span class="string">'/preview.mp3'</span><span>,1); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$ray_file_url</span><span>&nbsp;=&nbsp;</span><span class="string">'http://'</span><span>&nbsp;.&nbsp;</span><span class="vars">$play_content_temp_b</span><span>&nbsp;.&nbsp;</span><span class="string">'/preview.mp3'</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//http://224.cachefile18.rayfile.com/3592/zh-cn/preview/e89dc83812ad22343d2dbdef558a6345/preview.mp3 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//echo&nbsp;$ray_file_url&nbsp;;exit(); </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//打开ray的跳转地址。获取下载页面的链接。 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;&nbsp;echo&nbsp;$ray_file_url; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;&lt;HTML&gt;&lt;HEAD&gt;&lt;meta&nbsp;http-equiv=&quot;Refresh&quot;&nbsp;content=&quot;1;url=http://www.rayfile.com/files/64a8fd22eaaa1bfd42b700be4aec2cc3/preview.mp3/&quot;&gt;&lt;/HEAD&gt;&lt;/HTML&gt;&lt;/textarea&gt; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">// </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$downfile</span><span>=</span><span class="func">str_replace</span><span>(</span><span class="string">&quot;http://&quot;</span><span>,</span><span class="string">&quot;&quot;</span><span>,</span><span class="vars">$ray_file_url</span><span>);//去掉http:// &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$urlarr</span><span>=</span><span class="func">explode</span><span>(</span><span class="string">&quot;/&quot;</span><span>,</span><span class="vars">$downfile</span><span>);</span><span class="comment">//以&quot;/&quot;分解出域名 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;&nbsp;224.cachefile19.rayfile.com/3592/zh-cn/preview/64a8fd22eaaa1bfd42b700be4aec2cc3/preview.mp3 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$domain</span><span>=</span><span class="vars">$urlarr</span><span>[0]; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//域名&nbsp;224.cachefile19.rayfile.com </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$getfile</span><span>=</span><span class="func">str_replace</span><span>(</span><span class="vars">$urlarr</span><span>[0],</span><span class="string">''</span><span>,</span><span class="vars">$downfile</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//得出header中的GET部分&nbsp;/3592/zh-cn/preview/64a8fd22eaaa1bfd42b700be4aec2cc3/preview.mp3 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$content</span><span>&nbsp;=&nbsp;@</span><span class="func">fsockopen</span><span>(</span><span class="string">&quot;$domain&quot;</span><span>,&nbsp;80,&nbsp;</span><span class="vars">$errno</span><span>,&nbsp;</span><span class="vars">$errstr</span><span>,&nbsp;12); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//连接目标主机 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;主机&nbsp;，端口&nbsp;，&nbsp;INT错误&nbsp;，&nbsp;STRING错误提示&nbsp;，&nbsp;超期时间 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(!</span><span class="vars">$content</span><span>){</span><span class="comment">//链接不上就提示错误 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">die</span><span>(</span><span class="string">&quot;对不起，无法连接上&nbsp;$domain&nbsp;。&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">fputs</span><span>(</span><span class="vars">$content</span><span>,&nbsp;</span><span class="string">&quot;GET&nbsp;$getfile&nbsp;HTTP/1.0\r\n&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">fputs</span><span>(</span><span class="vars">$content</span><span>,&nbsp;</span><span class="string">&quot;Host:&nbsp;$domain\r\n&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">fputs</span><span>(</span><span class="vars">$content</span><span>,&nbsp;</span><span class="string">&quot;Referer:&nbsp;$domain\r\n&quot;</span><span>);</span><span class="comment">//伪造部分 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">fputs</span><span>(</span><span class="vars">$content</span><span>,&nbsp;</span><span class="string">&quot;User-Agent:&nbsp;Mozilla/4.0&nbsp;(compatible;&nbsp;MSIE&nbsp;6.0;&nbsp;Windows&nbsp;NT&nbsp;5.1)\r\n\r\n&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>&nbsp;(!</span><span class="func">feof</span><span>(</span><span class="vars">$content</span><span>))&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$ray_refresh_content</span><span>.=</span><span class="func">fgets</span><span>(</span><span class="vars">$content</span><span>,&nbsp;128);&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//将头部信息读取出来，里面将包含：Location:http://xxx/xxx.mp3，我们要的就是这个地址。 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;&nbsp;echo&nbsp;&quot;&lt;textarea&gt;&quot;.$tp.&quot;&lt;/textarea&gt;&quot;;exit(); </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$ray_down_url</span><span>=intercept_str(</span><span class="vars">$ray_refresh_content</span><span>,</span><span class="string">&quot;&lt;meta&nbsp;http-equiv=\&quot;Refresh\&quot;&nbsp;content=\&quot;1;url=&quot;</span><span>,</span><span class="string">&quot;\&quot;&gt;&lt;/HEAD&gt;&lt;/HTML&gt;&quot;</span><span>,&nbsp;1&nbsp;); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//echo&nbsp;$ray_down_url;exit(); </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//-------------------- </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//打开下载页面的地址，获取文件名 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$ray_down_content</span><span>&nbsp;=&nbsp;</span><span class="func">file_get_contents</span><span>(&nbsp;</span><span class="vars">$ray_down_url</span><span>&nbsp;&nbsp;); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//echo&nbsp;$ray_down_content;exit(); </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$file_name</span><span>&nbsp;=&nbsp;intercept_str(&nbsp;</span><span class="vars">$ray_down_content</span><span>,</span><span class="string">&quot;&lt;div&nbsp;id=\&quot;FILEtitleTXT\&quot;&nbsp;title=\&quot;&quot;</span><span>,</span><span class="string">&quot;\&quot;&gt;&lt;span&nbsp;id=\&quot;spnformattitle\&quot;&gt;&quot;</span><span>,1&nbsp;); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;&nbsp;echo&nbsp;$file_name;exit(); </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$file_desc</span><span>&nbsp;=&nbsp;intercept_str(&nbsp;</span><span class="vars">$ray_down_content</span><span>,</span><span class="string">&quot;&lt;div&nbsp;id=\&quot;divinfo_1\&quot;&nbsp;class=\&quot;nD_fileinfo2\&quot;&gt;&quot;</span><span>,</span><span class="string">&quot;&lt;span&nbsp;id=\&quot;spanformatdesc\&quot;&nbsp;style=\&quot;line-height:19px;\&quot;&gt;&lt;/span&gt;&quot;</span><span>,0&nbsp;); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$file_desc</span><span>&nbsp;=&nbsp;</span><span class="func">str_replace</span><span>(</span><span class="string">&quot;&lt;div&nbsp;style=\&quot;float:&nbsp;left;&nbsp;display:&nbsp;inline;&nbsp;line-height:&nbsp;19px;\&quot;&gt;&quot;</span><span>,</span><span class="string">&quot;&nbsp;&quot;</span><span>,</span><span class="vars">$file_desc</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$file_desc</span><span>&nbsp;=&nbsp;</span><span class="func">str_replace</span><span>(</span><span class="string">&quot;&lt;div&nbsp;style=\&quot;float:&nbsp;left;&nbsp;display:&nbsp;inline;&nbsp;line-height:19px;\&quot;&gt;&quot;</span><span>,</span><span class="string">&quot;&nbsp;&quot;</span><span>,</span><span class="vars">$file_desc</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$file_desc</span><span>&nbsp;=&nbsp;</span><span class="func">str_replace</span><span>(</span><span class="string">&quot;&lt;div&nbsp;class=\&quot;ndFileinfo_list\&quot;&gt;&quot;</span><span>,</span><span class="string">&quot;|&quot;</span><span>,</span><span class="vars">$file_desc</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$file_desc</span><span>&nbsp;=&nbsp;</span><span class="func">str_replace</span><span>(</span><span class="string">&quot;&lt;/div&gt;&quot;</span><span>,</span><span class="string">&quot;&nbsp;&quot;</span><span>,</span><span class="vars">$file_desc</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$strarr</span><span>=</span><span class="func">explode</span><span>(</span><span class="string">&quot;|&quot;</span><span>,</span><span class="vars">$file_desc</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$file_desc</span><span>&nbsp;=&nbsp;</span><span class="vars">$strarr</span><span>[1].</span><span class="vars">$strarr</span><span>[2]; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//echo&nbsp;$file_desc;exit(); </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//打开st播放页面 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$st_content</span><span>=get_contents(&nbsp;</span><span class="vars">$form_url</span><span>&nbsp;); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$down_url_pre</span><span>=intercept_str(&nbsp;</span><span class="vars">$st_content</span><span>&nbsp;,&nbsp;</span><span class="string">&quot;&lt;a&nbsp;href=\&quot;javascript:playmedia1('playicon','player',&nbsp;'&quot;</span><span>,</span><span class="string">&quot;/preview',&nbsp;'&quot;</span><span>,1); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//echo&nbsp;$down_url_pre;exit(); </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//cachefile18.rayfile.com/e4df/zh-cn/preview/e89dc83812ad22343d2dbdef558a6345 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$urlarr</span><span>=</span><span class="func">explode</span><span>(</span><span class="string">&quot;/&quot;</span><span>,</span><span class="vars">$down_url_pre</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$del_str</span><span>&nbsp;=&nbsp;</span><span class="string">&quot;/&quot;</span><span>.</span><span class="vars">$urlarr</span><span>[1]; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//echo&nbsp;$del_str.&quot;&lt;br/&gt;&quot;; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$down_url_pre</span><span>=</span><span class="func">str_replace</span><span>(</span><span class="vars">$del_str</span><span>,</span><span class="string">&quot;&quot;</span><span>,</span><span class="vars">$down_url_pre</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$down_url_pre</span><span>=</span><span class="func">str_replace</span><span>('preview',</span><span class="string">&quot;download&quot;</span><span>,</span><span class="vars">$down_url_pre</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//echo&nbsp;$down_url_pre.&quot;&lt;br/&gt;&quot;; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//构建下载地址 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$song_url</span><span>=</span><span class="string">&quot;http://&quot;</span><span>&nbsp;.&nbsp;</span><span class="vars">$down_url_pre</span><span>&nbsp;.&nbsp;</span><span class="string">&quot;/&quot;</span><span>&nbsp;.&nbsp;urlencode(</span><span class="vars">$file_name</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$song_true_url</span><span>=</span><span class="string">&quot;&lt;a&nbsp;href=&quot;</span><span>.</span><span class="vars">$song_url</span><span>.</span><span class="string">&quot;&gt;&quot;</span><span>.</span><span class="vars">$file_name</span><span>&nbsp;.&nbsp;</span><span class="string">&quot;&lt;/a&gt;&quot;</span><span>&nbsp;; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//echo&nbsp;$song_true_url;exit(); </span><span>&nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>?&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;style&nbsp;type=</span><span class="string">&quot;text/css&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;!-- &nbsp;&nbsp;</span></li>
    <li class="alt"><span>body,td,th&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;font-size:&nbsp;14px; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;color:&nbsp;#666666; &nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>--&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;/style&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;h3&gt;SongTaste&nbsp;真实地址&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&lt;?php&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$song_true_url</span><span>){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars">$song_true_url</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>?&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/h3&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&lt;hr/&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;form&nbsp;name=</span><span class="string">&quot;form1&quot;</span><span>&nbsp;method=</span><span class="string">&quot;post&quot;</span><span>&nbsp;action=</span><span class="string">&quot;index2.php&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&lt;label&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&lt;input&nbsp;type=</span><span class="string">&quot;text&quot;</span><span>&nbsp;name=</span><span class="string">&quot;url&quot;</span><span>&nbsp;id=</span><span class="string">&quot;url&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&lt;/label&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&lt;label&gt; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&lt;input&nbsp;type=</span><span class="string">&quot;submit&quot;</span><span>&nbsp;name=</span><span class="string">&quot;button&quot;</span><span>&nbsp;id=</span><span class="string">&quot;button&quot;</span><span>&nbsp;value=</span><span class="string">&quot;Get&nbsp;It&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&lt;/label&gt; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&lt;p&gt;请输入歌曲试听地址如：http:</span><span class="comment">//www.songtaste.com/song/928926/&lt;/p&gt; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&lt;p&gt;找到真实地址之后，请直接使用右键&ldquo;目标另存为&rdquo;或者下载工具下载&lt;/p&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;/form&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;OBJECT&nbsp;&nbsp;height=68&nbsp;width=350&nbsp;classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6&nbsp;PlayCount=</span><span class="string">&quot;0&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;URL&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;&lt;?php&nbsp; </span>&nbsp;</li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;if($song_url){ </span>&nbsp;</span></li>
    <li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$song_url; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; </span>&nbsp;</span></li>
    <li><span><span class="string">?&gt;&quot;</span><span>&gt; &nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;rate&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;1&quot;</span><span>&gt;&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;balance&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;0&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;currentPosition&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;7.0280499&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;defaultFrame&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;playCount&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;1&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;autoStart&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;-1&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;currentMarker&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;0&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;invokeURLs&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;-1&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;baseURL&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;volume&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;50&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;mute&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;0&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;uiMode&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;full&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;stretchToFit&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;0&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;windowlessVideo&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;0&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;enabled&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;-1&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;enableContextMenu&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;-1&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;fullScreen&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;0&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;SAMIStyle&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;SAMILang&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;SAMIFilename&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;captioningID&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;PARAM&nbsp;NAME=</span><span class="string">&quot;enableErrorDialogs&quot;</span><span>&nbsp;VALUE=</span><span class="string">&quot;0&quot;</span><span>&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;/OBJECT&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;?php&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$file_desc</span><span>){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars">$file_desc</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>?&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>]]></description>
		</item>
		
			<item>
			<link>http://www.koodai.com.cn/article/php-mysql/php突破Refresh限制获取真实地址.htm</link>
			<title><![CDATA[php突破Refresh限制获取真实地址]]></title>
			<author>kisscb@126.com(admin)</author>
			<category><![CDATA[php&amp;mysql]]></category>
			<pubDate>Mon,19 Oct 2009 01:13:19 +0800</pubDate>
			<guid>http://www.koodai.com.cn/default.asp?id=759</guid>
		<description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天一直想搞个SongTatse音乐文件真实地址的下载程序，说白了就是小偷程序，ASP的倒是成功了，不过使用PHP的时候，当试图用file_get_contents等常规函数获取</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span>http://224.cachefile19.rayfile.com/3592/zh-cn/preview/64a8fd22eaaa1bfd42b700be4aec2cc3/preview.mp3&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>的时候，就会出现错误！百思不得其解~</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 后来终于发现应该是文件头的缘故，这个文件用ASP抓取的时候文件内容为：</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">HTML</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">HEAD</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">meta</span><span>&nbsp;</span><span class="attribute">http-equiv</span><span>=</span><span class="attribute-value">&quot;Refresh&quot;</span><span>&nbsp;</span><span class="attribute">content</span><span>=&quot;1;url=&quot;</span><span class="attribute-value">XXXXXXX</span><span>&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">HEAD</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">HTML</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;后来在程序员群里闻讯，乃至祭出百度和谷歌两位大神，都未能搞定。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当然，主要是我的搜索的关键词有问题，最后找到了相关的几篇文章：<a target="_blank" href="http://hi.baidu.com/110911/blog/item/43f59713d5c9dc856438dbc5.html">Php伪造referer</a>&nbsp;&nbsp; <a target="_blank" href="http://hi.baidu.com/110911/blog/item/cbcd29f577728f20bd310912.html">用PHP伪造referer突破网盘禁止外连</a>&nbsp; 相关的知识：<a title="HTTP 1.1状态代码及其含义" href="http://hi.baidu.com/110911/blog/item/21f20d2475af812ed50742c5.html">HTTP 1.1状态代码及其含义</a>&nbsp; <a target="_blank" href="http://www.baidu.com/s?wd=php%20%BB%F1%C8%A1%20referer&amp;rsp=7&amp;oq=CURLOPT_REFERER&amp;f=1&amp;tn=ichuner_4_pg">百度中的搜索关键词</a></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天时间太晚了，明天继续研究。</p>]]></description>
		</item>
		
			<item>
			<link>http://www.koodai.com.cn/article/php-mysql/ThinkPhp-2.0.htm</link>
			<title><![CDATA[PHP框架THINKPHP国庆发布2.0版]]></title>
			<author>kisscb@126.com(admin)</author>
			<category><![CDATA[php&amp;mysql]]></category>
			<pubDate>Wed,23 Sep 2009 21:37:01 +0800</pubDate>
			<guid>http://www.koodai.com.cn/default.asp?id=747</guid>
		<description><![CDATA[<img src="http://www.koodai.com.cn/download.asp?id=31" border="0" alt=""/><br/>国产优秀开源框架<a target="_blank" href="http://thinkphp.cn/" rel="external">Thinkphp</a>国庆发布2.0版本！<br/>官方也全新改版，查看<a target="_blank" href="http://code.google.com/p/thinkphp/source/list" rel="external">更新日志</a>，<a target="_blank" href="http://thinkphp.cn/Down/" rel="external">下载使用</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.koodai.com.cn/article/php-mysql/MooPhp-FckEditor-ShowFCK-Function.htm</link>
			<title><![CDATA[在MooPHP的模板类中整合FCK编辑器]]></title>
			<author>kisscb@126.com(admin)</author>
			<category><![CDATA[php&amp;mysql]]></category>
			<pubDate>Sun,16 Aug 2009 01:43:07 +0800</pubDate>
			<guid>http://www.koodai.com.cn/default.asp?id=722</guid>
		<description><![CDATA[<div class="quote">
<h5>概况</h5>
<blockquote>名称：FCK编辑器整合进框架的模板类中<br />
作者：ben<br />
链接：<a target="_blank" href="http://snllll.cn/article/php-mysql/MooPhp-FckEditor-ShowFCK-Function.htm">http://snllll.cn/article/php-mysql/MooPhp-FckEditor-ShowFCK-Function.htm</a><br />
适用版本：0.91.178 alpha&nbsp;0.92.281 alpha&nbsp;<br />
下载地址：<a target="_blank" href="http://www.ismole.net/attachment.php?aid=">FCK编辑器整合进框架的模板类中</a> </blockquote></div>
<div class="quote">
<h5>简介</h5>
<blockquote>需要修改原来的类，请慎重使用！</blockquote></div>
<div class="blockcode">
<h5>示例</h5>
<span style="color: #ffffff"><span style="background-color: #0000ff"><code>$admin-&gt;showFck(&quot;表单元素的标题&quot;,'content','Default','/../MooPHP/plugins/fckeditor_lite/','暂无');</code></span></span></div>
<div class="t_msgfontfix">
<table cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td id="postmessage_19322" class="t_msgfont">FCK编辑器的整合经过琢磨，可以如此使用：<br />
            <strong>1、下载必要文件：</strong><br />
            &nbsp; &nbsp;&nbsp; &nbsp;到这个帖子里<a target="_blank" href="http://www.ismole.net/viewthread.php?tid=789&amp;highlight=fck"><font color="#000000">下载FCK编辑器</font></a>；<br />
            <strong>2、安装FCK：</strong><br />
            &nbsp; &nbsp;&nbsp; &nbsp;下载好之后请将<font color="#4169e1">plugins</font>复制到你的框架底下，一般为MooPHP；<br />
            <strong>3、将FCK整合到模板类里使用：</strong>
            <div class="blockcode">
            <div id="code0">
            <ol>
                <li><em><span style="color: #0000ff">function showFck($setName,$DomName='content',$ToolbarSet='Basic', $fckpath='/../fw/plugins/fckeditor_lite/', $value='') {<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #0000ff">&nbsp;&nbsp;echo &quot;&lt;tr&gt;&lt;td&gt;&lt;b&gt;&quot;.$setName.&quot;&lt;/b&gt;&lt;td class=altbg2&gt;&quot;;<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #0000ff">&nbsp;&nbsp;MooPlugins('fckeditor_lite');<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #0000ff">&nbsp;&nbsp;$basePath = MOOPHP_URL.$fckpath;<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #0000ff">&nbsp;&nbsp;$oFCKeditor = new FCKeditor($DomName);<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #0000ff">&nbsp;&nbsp;$oFCKeditor-&gt;BasePath&nbsp; &nbsp;= $basePath ;<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #0000ff">&nbsp;&nbsp;$oFCKeditor-&gt;Value&nbsp;&nbsp;= $value;<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #0000ff">&nbsp;&nbsp;$oFCKeditor-&gt;ToolbarSet=$ToolbarSet;<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #0000ff">&nbsp;&nbsp;$oFCKeditor-&gt;Create();<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #0000ff">&nbsp;&nbsp;echo '&lt;/td&gt;&lt;/tr&gt;';<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #0000ff">} </span></em></li>
            </ol>
            </div>
            </div>
            将此段代码放置在<span style="color: #ff6600"><strong>MooPHP\libraries\MooAdminTemplate.class.php</strong></span>的
            <div class="blockcode">
            <div id="code1">
            <ol>
                <li><em><span style="color: #0000ff">function showForms($name, $type = '', $value='') { </span></em></li>
            </ol>
            </div>
            </div>
            之前<br />
            <strong>4、使用方法：</strong>
            <div class="blockcode">
            <div id="code2">
            <ol>
                <li><em><span style="color: #3366ff">$admin-&gt;showFck(&quot;内容&quot;,'content','Default','/../MooPHP/plugins/fckeditor_lite/','暂无'); </span></em></li>
            </ol>
            </div>
            <em onclick="copycode($('code2'));">复制代码</em></div>
            <strong>5、变量的含义：<br />
            </strong><font color="#f4a460">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;第一个：表单元素的标题，如：用户名;<br />
            &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;第二个：表单元素的名称，如：username;<br />
            &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;第三个：FCK编辑器的样式设置，请参看以下第6条设置<br />
            &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;第四个：框架中FCK的路径，<br />
            &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;第五个：编辑器的初始值</font><br />
            <strong>6、FCK样式(皮肤)定义：</strong><br />
            在<span style="color: #ff6600"><strong>plugins\fckeditor_lite\fckconfig.js</strong></span> 中第49到59行代码如下：
            <div class="blockcode">
            <div id="code3">
            <ol>
                <li><em><span style="color: #3366ff">FCKConfig.ToolbarSets[&quot;Default&quot;] = [<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #3366ff">['Source','Preview','-','Bold','Italic','Underline','StrikeThrough','-','OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','-','JustifyLeft','JustifyCenter','JustifyRight','-','Link','Unlink','Anchor','-','TextColor','BGColor','-','PasteText','PasteWord','-','RemoveFormat'],<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #3366ff">'/',<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #3366ff">['FontFormat','FontName','FontSize'],<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #3366ff">['Image','Flash','Rule','Smiley','Codes','Table','-','About']<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #3366ff">] ;<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #3366ff">FCKConfig.ToolbarSets[&quot;Basic&quot;] = [<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #3366ff">['Source','Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','Image','-','About']<br />
                &nbsp; </span></em></li>
                <li><em><span style="color: #3366ff">] ; </span></em></li>
            </ol>
            </div>
            </div>
            这里就是皮肤的配置，可以自己设定，这里有问题自己找找配置FCK的文章，就不多说了。<br />
            Good Luck!</td>
        </tr>
    </tbody>
</table>
</div>
<p>&nbsp;</p>]]></description>
		</item>
		
			<item>
			<link>http://www.koodai.com.cn/article/php-mysql/Music-Share-App-Power-By-Php.htm</link>
			<title><![CDATA[新增一个开发项目]]></title>
			<author>kisscb@126.com(admin)</author>
			<category><![CDATA[php&amp;mysql]]></category>
			<pubDate>Sat,01 Aug 2009 02:25:45 +0800</pubDate>
			<guid>http://www.koodai.com.cn/default.asp?id=713</guid>
		<description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近正在使用ThinkPhp再做甘肃网的旅游频道，下一个项目准备是做一个基于本地站长圈子的广告联盟，同时新增一个开源的音乐分享程序。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主要灵感是看到一个<a target="_blank" href="http://www.shi-lu.cn">ShiLu</a>用asp写的一个小音乐分享程序，非常有兴趣，恩，我的音乐意念 用音乐记录心情。在给他留言的时候看到有人提到MOP的爱听，最近自己也在用下小米等web程式，非常有意思，等有时间一定要做一个！</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 哎&hellip;&hellip;不知道什么时候有时间，9月份旅游网上线；然后是广告联盟的开发(暂定一个月)，大概要等到国庆节以后才能着手，如果筹备开张的话，也许还要推迟&hellip;&hellip;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不管了，还记着！又不是什么大程序，慢慢来吧。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也是因为时间的原因，才没和shilu联系一起做当前的项目，而且，他做的很好，更新也非常勤快，加油，但愿越做越好</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我先用这个这个，做一个个人音乐记录频道：<a target="_blank" href="http://www.koodai.com.cn/cd/music">我的音乐意念</a></p>]]></description>
		</item>
		
			<item>
			<link>http://www.koodai.com.cn/article/php-mysql/663.html</link>
			<title><![CDATA[CodeIgniter教程：创建 MVC 应用程序]]></title>
			<author>kisscb@126.com(admin)</author>
			<category><![CDATA[php&amp;mysql]]></category>
			<pubDate>Mon,13 Apr 2009 22:16:49 +0800</pubDate>
			<guid>http://www.koodai.com.cn/default.asp?id=663</guid>
		<description><![CDATA[<p><img hspace="5" vspace="5" align="right" alt="" src="http://koodaiftp.d204.5kweb.cn/attachments/month_0904/t2009413222618.jpg" />如果您是一位 PHP 开发人员，在使用 PHP 编程语言时不难发现：大型项目可能会变得复杂。</p>
<p>这并非 PHP 的缺点。是的，这种语言提供了丰富的特性，而且具有足够理想的弹性，可区分程序员之间的工作成果。在这种意义上，PHP 类似于 Perl，这是一些人喜欢它（而其他人鄙视它）的原因之一。任何曾经查看过遗留 PHP 项目的有经验的 PHP 开发人员都可以轻松判断出不同开发人员在项目不同阶段的工作 &mdash; 就像您是一位考古学家，正在凝视着深深的墓穴，见证着不同文化在各自时代的发展。</p>
<p>不管涉及了什么样式或使用了什么方法，超过几千行代码的 PHP 项目很容易在仓促之中变得凌乱不堪。这主要是因为它们在结构上不一致。一些程序员创建类来组织其工作，但似乎没有任何两个程序员对于如何编写类具有相同的看法。其他程序员构建大量充满函数的包含文件。还有其他人使用巨大、独立的库，比如 PEAR。</p>
<p><a class=" FCK__AnchorC" name="N10068"><span class="atitle">MVC 框架如何提供帮助</span></a></p>
<p>在几年前，PHP 一直缺乏一个良好的、功能完善的模型-视图-控制器（Model-View-Controller，MVC）框架。MVC 框架允许程序员将其代码组织为三个不同的功能区：</p>
<ul>
    <li><i>模型</i> 包含与您的数据库和其他数据结构相关的所有代码。如果您具有一个名为 pages 的表，则您具有一个模型，其中具有用于从表中选择、创建、更新和删除记录的函数。</li>
    <li><i>视图</i> 包含所有显示和 UI 元素 &mdash; JavaScript 代码、Cascading Style Sheets (CSS)、HTML 甚至 PHP。</li>
    <li><i>控制器</i> 将一切联系在一起。控制器中的每个函数表示一个目的地或路线。如果您具有一个名为 /about 的目的地，则控制器将具有一个名为 <code>about()</code> 的函数。</li>
</ul>
<p>如果以前没有使用过 MVC 框架，上述三点无法体现出这种组织模式的强大之处。一旦您开始用 MVC 思考，您对 PHP 开发的观点和态度将发生显著变化。</p>
<p>例如，不是在项目的每个可用角落中都塞入数据库查询代码，而是将一切都组织到模型中。为了从数据库表中选择页面，可以使用页面模型中的函数。</p>
<p>同样地，如果您需要更新特定页面的外观，可以使用视图，而不用与控制器打交道。与此类似，控制器是为您的应用程序添加目标和其他控制代码的位置；不必在模型中放入任何此类东西。</p>
<p>无论使用哪种 MVC 框架，在一天之内，您就会意识到您具有一个容易记住、可按需扩展的系统。如果客户在下周需要更改，没问题 &mdash; 您可以搞定。如果第二年有什么请求，同样如此。</p>
<p><a class=" FCK__AnchorC" name="N1009D"><span class="smalltitle">约定优于配置 MVC</span></a></p>
<p>在所有 MVC 框架中，最著名的莫过于 Ruby on Rails。多年以前，它席卷 Web 开发领域，满足了所有人的想像。它并非纯粹的 MVC 框架，而是一种约定优于配置的 MVC 框架。</p>
<p><i>约定优于配置</i> 意味着使用 Rails 时，您需要设置一些关键配置项（例如数据库的位置、特定用户名和路径），其他配置均由智能默认设置处理，您可在随后修改，也可不加修改。</p>
<p>结果不仅仅能得到组织良好的代码，而且还有速度极快、易于使用的 Web 开发环境。这都是 PHP 世界的梦想。经过一两年之后，许多类似于 Rails 的工具纷纷出现：CakePHP、Symfony 等等。</p>
<p><a class=" FCK__AnchorC" name="N100B0"><strong><span class="smalltitle">了解 CodeIgniter</span></strong></a></p>
<p>最终，EllisLab 的工作人员发布了 CodeIgniter。许多企业尝试体验过所有 PHP MVC 框架之后，CodeIgniter 都成为赢家，主要是由于它为组织提供了足够的自由支持，允许开发人员更迅速地工作。</p>
<p>自由意味着使用 CodeIgniter 时，您不必以某种方式命名数据库表，也不必根据表命名模型。这使 CodeIgniter 成为重构遗留 PHP 应用程序的理想选择，在此类遗留应用程序中，可能存在需要移植的所有奇怪的结构。</p>
<p>CodeIgniter 不需要大量代码（1.6.2 版本仅为 2.8 MB，其中的 1.3 MB 是可以删除的用户文档），也不会要求您插入类似于 PEAR 的庞大的库。它在 PHP 4 和 PHP 5 中表现同样良好，允许您创建可移植的应用程序。最后，您不必使用模板引擎来创建视图 &mdash; 只需沿用旧式的 HTML 和 PHP 即可。</p>
<p>至此，我们已经提供了足够的介绍，下面来构建一个简单的项目，看看它的效果。</p>
<p><a class=" FCK__AnchorC" name="N100C6"><strong><span class="atitle">安装和配置 CodeIgniter</span></strong></a></p>
<p>在构建任何 CodeIgniter 新项目时，第一步都是下载最新软件包（在本文撰写时，最新软件包是 1.6.2，请参见 <a cmimpressionsent="1" href="http://www.ibm.com/developerworks/cn/web/wa-codeigniter/#resources">参考资料</a> 小节）(目前是1.7.1，<a target="_blank" href="http://codeigniter.org.cn/">点击这里进入中文官方网站</a>)。下载压缩存档文件（.zip）并解压缩之后，您就获得了一个 codeigniter_<i>&lt;version_number&gt;</i> 文件夹，其中包括开始创建所必须的一切内容。</p>
<p>在进行一组必需的轻微的配置更改之前，本节将为您简单介绍 CodeIgniter，使您熟悉它的基础知识。</p>
<p><a class=" FCK__AnchorC" name="N100DA"><span class="smalltitle">文件夹结构</span></a></p>
<p>打开 CodeIgniter 文件夹时，您会看到一个名为 system 的文件夹。所有 CodeIgniter 代码都将存放在这里。在此文件夹内还有一些文件夹，其中有一个名为 application：您要处理的 99.999% 的文件都将位于此文件夹内。该文件夹的命名十分贴切，因为它包含您的应用程序及其所有组成部分 &mdash; system 文件夹的其他部分包括 CodeIgniter 核心代码和其他不应混淆的文件。</p>
<p>application 文件夹下又分为多个文件夹（参见 <a cmimpressionsent="1" href="http://www.ibm.com/developerworks/cn/web/wa-codeigniter/#fig1">图 1</a>）。大多数文件夹易于理解。模型存放在 models 文件夹中、视图存放在 views 文件夹中、控制器存放在 controllers 文件夹中，依此类推。还有一些文件夹用于存储 CodeIgniter 帮助程序和库的本地扩展，这些内容不在本文讨论范围之内。</p>
<p><br />
<a class=" FCK__AnchorC" name="fig1"><b>图 1. CodeIgniter 的文件夹结构</b></a><br />
<img alt=" CodeIgniter 的文件夹结构" width="563" height="422" src="http://www.ibm.com/developerworks/cn/web/wa-codeigniter/figure1.jpg" /> <br />
&nbsp;</p>
<p>就目前而言，system/application 文件夹中最重要的文件夹就是 config。该文件夹内有两个需要关注的文件：config.php 和 database.php。</p>
<p>config.php 文件包含设置 CodeIgniter 所需的基本参数和自变量。database.php 文件包含连接数据库所需的基本参数和自变量。</p>
<p>就目前而言，对于 config.php 文件，您只需设置 <code>base_url</code> 参数，例如设置为 http://127.0.0.1/CodeIgniter/。根据您正在使用的服务器地址更改此设置：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
$config['base_url']    = &quot;http://www.example.com/&quot;;
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p>务必牢记添加最后的斜杠，即便是在子目录中设置 CodeIgniter 应用程序时也是如此。</p>
<p>接下来，打开 database.php 文件，为数据库服务器设置 connection 参数：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
$db['default']['hostname'] = &quot;your-db-host&quot;;
$db['default']['username'] = &quot;your-username&quot;;
$db['default']['password'] = &quot;your-password&quot;;
$db['default']['database'] = &quot;your-db-name&quot;;
$db['default']['dbdriver'] = &quot;mysql&quot;;
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p>就是这样。您还可以进行其他一些设置（如自动加载首选项和特殊路径），但只要 CodeIgniter 了解它位于何处且可连接其底层数据库，您就可以放心开始编写代码了。</p>
<p><a class=" FCK__AnchorC" name="N1011D"><span class="atitle">您的第一个 CodeIgniter 项目</span></a></p>
<p>现在，您已经安装和配置了 CodeIgniter，接下来即可构建项目，这项工作至少要占用一个小时的时间。</p>
<p>这一次，我们不会构建 Hello World 应用程序，而是使用 CodeIgniter 创建一个简单的 Web 站点。该站点将有一个主页，显示一些宣传文本和一个表单，该表单将发布到数据库表中。无需为其外观费心 &mdash; 只需关注对应用程序有用的部分即可。换句话说，让美工去关心外观 &mdash; 您只要确保一切可以正常工作、迅速完成即可。</p>
<p>按照 CodeIgniter 的术语，可将这些需求转换为以下内容：</p>
<ul>
    <li>一个控制器，仅包含少数功能（可使用默认的 Welcome 控制器）</li>
    <li>一个模型（以及一个数据库表），用于存储联系人信息</li>
    <li>一个主视图，包含一些支持</li>
</ul>
<p><a class=" FCK__AnchorC" name="N1013F"><strong><span class="smalltitle">创建数据库表和模型</span></strong></a></p>
<p>从模型入手可帮助您理解底层数据库表，之后再开始布设功能和 UI。如果对表将存储哪些内容认识不深，设计与表交互的表单将十分困难。</p>
<p>对于这个示例应用程序而言，您希望存储的是来自表单的联系人信息。那么需要的是哪些类型的联系人信息？目前而言，仅存储基本信息，要求提供姓名、电子邮件地址、电话号码和简短备注。您还可能希望在后台存储时间戳和 IP 地址。</p>
<p>MySQL 表应如下所示：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
Create TABLE `contacts` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(128) NOT NULL,
  `email` varchar(255) NOT NULL,
  `notes` text NOT NULL,
  `stamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `ipaddress` varchar(32) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p>现在我们已经有了表，接下来将创建第一个模型。在 system/application/models 文件夹内，创建一个 mcontacts.php 文件。为什么要将其命名为 mcontacts？这是一种速记形式 &mdash; 文件名中在模型名前加一个 <i>m</i> 可帮助您记住文件的组织方式，而不必使用更长的前缀或后缀，如 <i>model_</i> 等。</p>
<p>所有模型都采用相同的方式构造：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
class MContacts extends Model{

  function MContacts(){
    parent::Model();
  }
}
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p>请注意，类名与文件名匹配，必须为类提供一个构造函数。换句话说，一个模型就是一个 PHP 类。这也就意味着模型中的所有函数实际上都是该类的一个方法。</p>
<p>理解这一点之后，很快就能领悟到，需要具备一个函数，将数据安全地插入联系人数据库表中。提供此功能的函数如下：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
function addContact(){
  $now = date(&quot;Y-m-d H:i:s&quot;);
  $data = array( 
    'name' =&gt; $this-&gt;input-&gt;xss_clean($this-&gt;input-&gt;post('name')),
    'email' =&gt; $this-&gt;input-&gt;xss_clean($this-&gt;input-&gt;post('email')),
    'notes' =&gt; $this-&gt;input-&gt;xss_clean($this-&gt;input-&gt;post('notes')),
    'ipaddress' =&gt; $this-&gt;input-&gt;ip_address(),
    'stamp' =&gt; $now
  );

  $this-&gt;db-&gt;insert('contacts', $data);
 }
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p>注意，您获取了 <code>POST</code> 数组的输出、整理并将其存储在名为 contacts 的数据库表中。在此过程中，您使用了多个帮助程序来简化工作。</p>
<p>例如，<code>$this-&gt;input-&gt;xss_clean()</code> 整理表单字段的数据、<code>$this-&gt;input-&gt;post()</code> 简化对这些表单字段的访问、<code>$this-&gt;input-&gt;ip_address()</code> 从用户的浏览器获取 IP 地址、<code>$this-&gt;db-&gt;insert()</code> 向数据库表添加一条新记录。</p>
<p>在这种上下文中，<code>$this-&gt;input-&gt;xss_clean()</code> 的使用必不可少 &mdash; 您正在处理 Web 用户输入，那可以是任何内容。使用 <code>xss_clean()</code> 函数或许是最基本的应对方法，您可能还要考虑应用更加稳妥的措施。添加功能来将字段长度缩短到一定大小可能也是一种合理做法。但就目前而言，<code>xss_clean()</code> 例程即可为您提供足够的保护。</p>
<p>您只用了短短几分钟就创建了一个可重用的函数，允许在数据库中存储联系人信息。现在，我们将转而讨论控制器。</p>
<p><a class=" FCK__AnchorC" name="N101A2"><span class="smalltitle">初始化控制器</span></a></p>
<p>在 CodeIgniter 中，控制器用于组织项目。设想每个函数都是站点或应用程序的一个页面或目标。如果使用主页，就需要一个 <code>index()</code> 函数。如果有一个 About up 页面，就需要 <code>about()</code> 或 <code>about_us()</code> 函数 &mdash; 具体取决于您希望怎样构造 URL。</p>
<p>甚至可以将控制器组织到文件夹中，创建层次结构。例如，在 system/application/controllers 文件夹中，可能有一个 admin 文件夹，其中包含针对管理工具各主要部分的控制器。您可按照如下方法访问这些控制器（和函数）： http://www.example.com/admin/controller-name/function-name/。</p>
<p>目前只需使用默认控制器，即 Welcome 控制器。它存储在 system/application/controllers/ 文件夹中，名为 welcome.php。打开时，应看到以下内容：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
class Welcome extends Controller {

  function Welcome(){
    parent::Controller();
  }

  function index(){
    $this-&gt;load-&gt;view('welcome_message');
  }
}
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p>如您所见，类名反映了文件名。这里也有一个构造函数，调用 CodeIgniter 内核中的父 <code>Controller</code> 类。了解这些就够了。</p>
<p>接下来，注意名为 <code>index()</code> 的启动函数，它将加载 welcome_message 视图。在删除此函数并编写您自己的函数之前，有必要注意，此原型 <code>index()</code> 函数很好地满足了为应用程序的最终用户显示信息的最低要求。</p>
<p>我们继续构建一个新的 <code>index()</code> 函数。首先需要加载有用的 Form &mdash; 它能帮助您完成创建联系人表单的繁琐任务。</p>
<p>下面，设置可在视图内部使用的多个变量 &mdash; 通过这种方法，即可更好地组织应用程序。例如，您可能希望在控制器中设置标题和标题栏。如果要这样做，就必须将变量载入视图。所载入的变量之一就是所包含视图的名称。通过这种方法，即可设置包含所有外观的主视图，以及包含内容的各包含项：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
function index(){
  $this-&gt;load-&gt;helper('form');
  $data['title'] = &quot;Welcome to our Site&quot;;
  $data['headline'] = &quot;Welcome!&quot;;
  $data['include'] = 'home';
  $this-&gt;load-&gt;vars($data);
  $this-&gt;load-&gt;view('template');
}
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p><code>$data</code> 数组被传入到一个称为模板的视图（接下来即将构建此视图）。数组内的信息可使用键名访问，如果希望输出标题栏，通过 <code>$headline</code> 访问它即可。</p>
<p>接下来，您将创建模板和主页视图（后者只是一个包含项），并完成控制器。</p>
<p><a class=" FCK__AnchorC" name="N101FB"><span class="smalltitle">创建视图</span></a></p>
<p>您的第一个视图极为简单 &mdash; 这是一个名为 template 的视图。我们将尽力保持其简单，展示视图可以有多么灵活。template 视图存储为 system/application/views 中的 template.php，初始形式如下所示：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
        &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p>但应牢记，您正在传入三个变量：<code>$title</code>、<code>$headline</code> 和 <code>$include</code>（一个包含项的名称）。下面是添加了粗体所示内容后的 template 视图：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
        &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;<span class="boldcode">&lt;?php echo $title;?&gt;</span>&lt;/title&gt;
&lt;style&gt;label { display:block;}&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;<span class="boldcode">&lt;?php echo $headline;?&gt;</span>&lt;/h1&gt;
<span class="boldcode">&lt;?php $this-&gt;load-&gt;view($include);?&gt;</span>
&lt;/body&gt;
&lt;/html&gt;
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p>在添加的前两条语句中，您将分别显示在 <code>$data['title']</code> 和 <code>$data['headline']</code> 中找到的数据。随后使用 <code>$data['include']</code> 的值载入第二个视图。在本例中是一个名为 home 的视图（另请注意，为了简化后续的一些工作，我们还添加了少许 CSS 代码）。</p>
<p>如果需要调用，那么最好首先进行构建。下面就是一个简单的视图，其中包含一个文本块和一个从站点访问者处收集信息的表单：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
&lt;p&gt;This is random text for the CodeIgniter article. 
There's nothing to see here folks, just move along!&lt;/p&gt;
&lt;h2&gt;Contact Us&lt;/h2&gt;
&lt;?php 
echo form_open('welcome/contactus');
echo form_label('your name','name');
$ndata = array('name' =&gt; 'name', 'id' =&gt; 'id', 'size' =&gt; '25');
echo form_input($ndata);

echo form_label('your email','email');
$edata = array('name' =&gt; 'email', 'id' =&gt; 'email', 'size' =&gt; '25');
echo form_input($edata);

echo form_label('how can you help you?','notes');
$cdata = array('name' =&gt; 'notes', 'id' =&gt; 'notes', 'cols' =&gt; '40', 'rows' =&gt; '5');
echo form_textarea($cdata);

echo form_submit('submit','send us a note');
echo form_close();

?&gt;
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p>图 2 显示了将所有这些内容载入浏览器后的效果。</p>
<p><br />
<a class=" FCK__AnchorC" name="fig2"><b>图 2. 带有表单的简单视图</b></a><br />
<img alt="带有表单的简单视图" width="567" height="491" src="http://www.ibm.com/developerworks/cn/web/wa-codeigniter/figure2.jpg" /> <br />
&nbsp;</p>
<p>同样，您使用了有用的 CodeIgniter 快捷方式集。这一次，使用的是 Form 帮助程序，将其载入控制器。<code>form_open()</code> 函数允许打开表单 &mdash; 它具有必要的自变量，即表单发布的目标位置。下面，您将返回控制器并添加 <code>contact()</code> 函数来处理表单发布数据。</p>
<p>在表单中，您使用了 <code>form_label()</code> 来创建可访问的标签，使用 <code>form_input()</code> 和 <code>form_textarea()</code> 来构建表单字段和文本区，使用 <code>form_submit()</code> 来构建输入按钮。请注意，通过 <code>form_input()</code> 和 <code>form_textarea()</code>（以及其他表单函数），您就可以传入一个信息数组，帮助跟踪字段名称、id、大小和其他信息。</p>
<p>最后，使用 <code>form_close()</code> 关闭表单。</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="40%" align="right">
    <tbody>
        <tr>
            <td width="10"><img alt="" width="10" height="1" src="http://www.ibm.com/i/c.gif" /></td>
            <td>
            <table border="1" cellspacing="0" cellpadding="5" width="100%">
                <tbody>
                    <tr>
                        <td bgcolor="#eeeeee"><a class=" FCK__AnchorC" name="N10286"><b>为什么要使用 Form 帮助程序？</b></a><br />
                        <p>或许您会感到疑惑，为什么要花时间来使用 Form 帮助程序。您可能充满怀疑：如果在 Web 站点方面经验丰富，为什么还需要使用表单帮助程序？归根到底，一切都与迅速、高效地完成工作有关，Form 帮助程序（以及其他帮助程序）能消除在使用 HTML 时遇到的大量繁杂工作。</p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p>让我们回过头来完成控制器。</p>
<p><a class=" FCK__AnchorC" name="N10292"><span class="smalltitle">完成应用程序</span></a></p>
<p>现在已经有了两个视图，因而需要重新回到控制器，为其添加两个函数。您已经了解了第一个函数：即处理主页上的表单传入的 POST 的 <code>contactus()</code> 函数。第二个是 <code>thankyou()</code> 函数，它将用作该表单的最终确认页面。</p>
<p><code>contactus()</code> 函数非常简单。载入 MContacts 模型，运行该模型内的 <code>addContact()</code> 函数，然后将用户转向 thank-you 页面。请注意，要使用 <code>redirect()</code> 函数，必须载入 URL 帮助程序。</p>
<p>代码如下所示：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
function contactus(){
  $this-&gt;load-&gt;helper('url');
  $this-&gt;load-&gt;model('MContacts','',TRUE);
  $this-&gt;MContacts-&gt;addContact();
  redirect('welcome/thankyou','refresh');
}
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p>thankyou() 函数如下所示：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
function thankyou(){
  $data['title'] = &quot;Thank You!&quot;;
  $data['headline'] = &quot;Thanks!&quot;;
  $data['include'] = 'thanks';
  $this-&gt;load-&gt;vars($data);
  $this-&gt;load-&gt;view('template');
}
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p>一切都非常简单，thanks 视图如下所示：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
&lt;p&gt;Thanks so much for contacting us. Someone will be in contact with you soon.&lt;/p&gt;
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p>您可能感到迷惑，为什么要为如此简单的一个视图浪费时间。为什么不在控制器中设置一个变量再运行它？当然可以那样做，但分离函数组件总是最佳做法。通过这样的方式，就不存在遇到任何麻烦的风险。</p>
<p><a class=" FCK__AnchorC" name="N102CE"><span class="smalltitle">添加安全性</span></a></p>
<p>现在，还有一项工作需要完成。在 Welcome 控制器的 <code>contactus()</code> 函数中，有着在数据库中创建多条空记录的风险 &mdash; 这会导致某人连续将联系人目标载入其浏览器或使用某种类型的机器人。</p>
<p>要避免此类情况发生，最简单的方法就是在控制器中添加简单的测试。如果存在 <code>POST</code> 数据，则载入模型和函数。如果没有，则将其返回主页。改写后的函数如下所示：</p>
<p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
function contactus(){
  $this-&gt;load-&gt;helper('url');
  if ($this-&gt;input-&gt;post('email')){
    $this-&gt;load-&gt;model('MContacts','',TRUE);
    $this-&gt;MContacts-&gt;addContact();
    redirect('welcome/thankyou','refresh');
  }else{
    redirect('welcome/index','refresh');
  }
}
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;</p>
<p><a class=" FCK__AnchorC" name="N102EB"><span class="atitle">结束语</span></a></p>
<p>在不到一个小时的时间里，您安装并配置了 CodeIgniter，创建了一个包含主页、将信息添加到数据库的表单和 thank-you 页面的 Web 站点。</p>
<p>当然，要学习的东西还有很多。例如，您可自动加载所需的模型和任何帮助程序或库。可以为应用程序调整缓存和性能。可以为视图添加更多 CSS 内容。可以添加在数据库插入操作结束后发送电子邮件通知的功能。</p>
<p>目前，您只是掌握了开始使用 CodeIgniter 所需的一些内容。<br />
<br />
&nbsp;</p>
<p><a class=" FCK__AnchorC" name="resources"><strong><span class="atitle">参考资料 </span></strong></a></p>
<p><b>学习</b><br />
您可以参阅本文在 developerWorks 全球网站上的 <a target="_blank" cmimpressionsent="1" onmouseover="linkQueryAppend(this)" href="http://www.ibm.com/developerworks/web/library/wa-codeigniter/">英文原文</a>。<br />
随时关注最新的 <a cmimpressionsent="1" href="http://www.ibm.com/developerworks/offers/techbriefings/?S_TACT=105AGX08&amp;S_CMP=art">developerWorks 技术活动和网络广播</a>。 <br />
利用 developerWorks <a cmimpressionsent="1" href="http://www.ibm.com/developerworks/cn/web/">Web 开发专区</a> 内的专业 Web 技术文章和教程拓展您的 Web 开发技能。<br />
<br />
<b>获得产品和技术</b><br />
下载 <a cmimpressionsent="1" href="http://www.codeigniter.com/">CodeIgniter 项目</a> 的最新软件包（在本文撰写时，最新版本是 1.6.2）。<br />
阅读 <a cmimpressionsent="1" href="http://www.codeigniter.com/user_guide/">在线 CodeIgniter 文档</a>。<br />
访问 <a cmimpressionsent="1" href="http://www.codeigniter.com/forums/">CodeIgniter 论坛</a>。<br />
访问 <a cmimpressionsent="1" href="http://www.codeigniter.com/wiki/">CodeIgniter wiki</a>。<br />
<br />
<b>讨论</b><br />
&nbsp;</p>
<ul>
    <li>通过参与 <a cmimpressionsent="1" href="http://www.ibm.com/developerworks/blogs/">developerWorks blogs</a> 加入 developerWorks 社区。</li>
</ul>
<p><br />
<a class=" FCK__AnchorC" name="author"><strong><span class="atitle">关于作者</span></strong></a></p>
<p>&nbsp;</p>
<p>Thomas Myer 是一名技术书籍作者、顾问和 Web 开发人员。在 2001 年，他在德克萨斯州奥斯汀创立了 Triple Dog Dare Media。Triple Dog Dare Media 帮助公司创建基于 CodeIgniter 的发布应用程序，比如内容管理、门户网站和电子商务系统。Myer 是 <i>No Nonsense XML Web Development with PHP</i>（Sitepoint，2004）和 <i>Lead Generation on the Web</i>（O'Reilly 2007）的作者。他的新书，WROX 的 <i>Professional CodeIgniter</i> 在 2008 年 7 月在书店上架。他还为 IBM developerWorks、Amazon Web Services、AOL、Darwin Magazine 等撰写了数十篇技术和商业文章。</p>]]></description>
		</item>
		
			<item>
			<link>http://www.koodai.com.cn/article/php-mysql/JCAT PHP框架.html</link>
			<title><![CDATA[JCAT PHP框架]]></title>
			<author>kisscb@126.com(admin)</author>
			<category><![CDATA[php&amp;mysql]]></category>
			<pubDate>Sat,25 Oct 2008 19:19:28 +0800</pubDate>
			<guid>http://www.koodai.com.cn/default.asp?id=598</guid>
		<description><![CDATA[<div>
<p>&middot;改造 UICtrlGtk 的创建方式，由分别创建UI控件 和 Gtk窗体，然后在 JCAT_ViewGtk::Create() 将它们绑定，改为先创建 Gtk窗体，将Gtk窗体作为 UICtrlGtk 的构造函数的参数。取消 JCAT_ViewGtk::OnInitView() 事件函数。<br />
&middot;整理变更所有的 UICtrl 命名<br />
&middot;增加 JCAT_Timer 类<br />
&middot;增加 JCAT_View 子视图文档同置 <br />
&middot;增加 JCAT_UIHtmlNodeCompiler_ui_switch 和 JCAT_UIHtmlNodeCompiler_ui_switch_case<br />
&middot;GTK 消息队列 Bug<br />
&middot;各个 UI Parser 单独编译<br />
&middot;将 JCAT_UIGtkWidgetCreator 所创建的Gtk窗体的 销毁 事件连接到 JCAT_UIGtkWidgetCreator 对象上; 如果一个窗体已经被销毁，JCAT_UIGtkWidgetCreator::GetWidget() 将创新创建并返回。<br />
&middot;[重要] 为所有的模板目录创建 模板文件索引，设定模板目录时载入此索引，而不必 每次都到各个 模板目录中 搜寻模板文件; 否则，项目中如果存在多个模板目录，搜寻模板文件会非常缓慢。</p>
<p>-- 未完成(计划) --<br />
&middot;取消 JCAT_Document 动态/静态 结构，有一个函数 锁定/解开 文档结构的可改变性。<br />
&middot;图像装饰<br />
&middot;验证码图像<br />
&middot;完善 UICtrlHtml 的 js 实现<br />
&middot;&lt;View:Initialize /&gt; 应该 名为 &lt;View:Form:Initialize /&gt; ;</p>
<div id="postmessage_134" class="t_msgfont">下载：&nbsp; <span id="attach_22" unselectable="true" h="16" w="171" y="319" x="287" outfunc="null" initialized="true" style="white-space: nowrap"><a target="_blank" href="http://jj.jecat.cn/attachment.php?aid=22&amp;k=88fcbff09e648e44d173624273dd3429&amp;t=1224933559"><strong>JCAT0.3.1.rar</strong></a> (683.83 KB)</span></div>
</div>
<p><a href="http://down.chinaz.com/soft/24132.htm">http://down.chinaz.com/soft/24132.htm</a></p>]]></description>
		</item>
		
</channel>
</rss>
