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

<channel>
	<title>esayr&#039;s blog &#187; PHP开发</title>
	<atom:link href="http://www.esayr.com/category/php_dev/feed" rel="self" type="application/rss+xml" />
	<link>http://www.esayr.com</link>
	<description>有友共尊田舍酒,无事面对古人书</description>
	<lastBuildDate>Fri, 31 Dec 2010 06:37:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>有感PHP团队宣布近期将中止对PHP4的支持</title>
		<link>http://www.esayr.com/2007/07/13/archives_23.html</link>
		<comments>http://www.esayr.com/2007/07/13/archives_23.html#comments</comments>
		<pubDate>Fri, 13 Jul 2007 09:38:27 +0000</pubDate>
		<dc:creator>esayr</dc:creator>
				<category><![CDATA[PHP开发]]></category>
		<category><![CDATA[杂碎琐事]]></category>

		<guid isPermaLink="false">http://www.esayr.com/2007/07/13/archives_23.html</guid>
		<description><![CDATA[引用自：http://phpv.net/article.php?articleid=1552
PHP官方今天在网站上发布公告，近期中止PHP4版本的开发。
声明中认为，PHP5从发布到现在已有整整三年时间，经过时间的考验，PHP5已十分成熟稳定并且高效。同时为PHP6的发布作准备。PHP4的支持将于年底中止。 
从2007年12月31日起，PHP4将不会再推出新版本，但仍然会修补重大BUG直到2008年8月8日。 
所以，呼吁用户，在今年余下的时间里。尽快的适应PHP5，并及时将老代码移植到PHP5或者更新的版本中来。以享受PHP的高效和完善的技术支持。
PHP5从发布到现在有3年了。真不觉得。我还很清楚的记得在那台redhat9上安装配置PHP5时的情况。
从网站开发者的角度看，和PHP4的差别其实很小 。就一些变量名的改变，加一些基本不太用的函数。
现在的空间商配置来看，几乎还六成以上，都还是PHP4 。也许是新版本更新过勤 ，如果不是特别大的安全漏洞，他们都不怎么愿意去更新，想想编译也是挺费事的．那么多机器．　我现在几台服务器还有大半是没更新的PHP5.0.*
作为PHP新手，特别是国内的．其实挺无奈．书店的书，很有些年份了．保存文件时还被告知取名 test.php3  还好今年出了个phpchina.cn　虽然商业味挺浓，但怎么说：一个公司，发展是第一位．穷公司弄开源，那是越弄越别扭．
顺便一说：如果imysql.cn能找些人，以公司化运作 ．也是不错的．DBA在这两年内需求应该是越来越大．因为经过几年的积累，站变大了，服务器快挺不住啦，数据库优化就得找人做，总比加硬件强啊！而且机器间的数据同步太他妈复杂了，这点我深有体会．
]]></description>
			<content:encoded><![CDATA[<p>引用自：<a href="http://phpv.net/article.php?articleid=1552" target="_blank">http://phpv.net/article.php?articleid=1552</a></p>
<blockquote><p><em>PHP官方今天在网站上发布公告，近期中止PHP4版本的开发。</em></p>
<p><em>声明中认为，PHP5从发布到现在已有整整三年时间，经过时间的考验，PHP5已十分成熟稳定并且高效。同时为PHP6的发布作准备。PHP4的支持将于年底中止。 </em></p>
<p><em>从2007年12月31日起，PHP4将不会再推出新版本，但仍然会修补重大BUG直到2008年8月8日。 </em></p>
<p><em>所以，呼吁用户，在今年余下的时间里。尽快的适应PHP5，并及时将老代码移植到PHP5或者更新的版本中来。以享受PHP的高效和完善的技术支持。</em></p></blockquote>
<p>PHP5从发布到现在有3年了。真不觉得。我还很清楚的记得在那台redhat9上安装配置PHP5时的情况。</p>
<p>从网站开发者的角度看，和PHP4的差别其实很小 。就一些变量名的改变，加一些基本不太用的函数。</p>
<p>现在的空间商配置来看，几乎还六成以上，都还是PHP4 。也许是新版本更新过勤 ，如果不是特别大的安全漏洞，他们都不怎么愿意去更新，想想编译也是挺费事的．那么多机器．　我现在几台服务器还有大半是没更新的PHP5.0.*</p>
<p>作为PHP新手，特别是国内的．其实挺无奈．书店的书，很有些年份了．保存文件时还被告知取名 test.php3  还好今年出了个phpchina.cn　虽然商业味挺浓，但怎么说：一个公司，发展是第一位．穷公司弄开源，那是越弄越别扭．</p>
<p>顺便一说：如果imysql.cn能找些人，以公司化运作 ．也是不错的．DBA在这两年内需求应该是越来越大．因为经过几年的积累，站变大了，服务器快挺不住啦，数据库优化就得找人做，总比加硬件强啊！而且机器间的数据同步太他妈复杂了，这点我深有体会．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.esayr.com/2007/07/13/archives_23.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>架构基于DZ或PW论坛的文件防盗链系统</title>
		<link>http://www.esayr.com/2007/05/22/archives_9.html</link>
		<comments>http://www.esayr.com/2007/05/22/archives_9.html#comments</comments>
		<pubDate>Tue, 22 May 2007 08:22:28 +0000</pubDate>
		<dc:creator>esayr</dc:creator>
				<category><![CDATA[PHP开发]]></category>
		<category><![CDATA[服务器配置]]></category>

		<guid isPermaLink="false">http://www.esayr.com/2007/05/22/archives_9.html</guid>
		<description><![CDATA[需求：
一个技术/娱乐论坛 http://bbs.mowai.com 有大量电影和ISO文件。
文件存放于论坛目录下,结构如下:
/bbs/download/蜘蛛侠3.rm------电影和ISO文件
/bbs/index.php---------------论坛首页
/bbs/...
/index.php -------------------首页
原来使用 http://bbs.mowai.com/download/蜘蛛侠3.rm 这样的链接提供用户下载文件.
但被无良的迅雷和一些网站等严重盗链.服务器带宽被耗尽, 急需解决.
1.尽量不改变原有下载路径.否则需要编辑大量主题.
2.可以设置非网站注册会员需要登录方可下载.
思路:
一.和论坛绑定,需要引入论坛文件以判断用户是否登录.
二.如果没有限制游客下载,那么需要判断HTTP_REFERER是否来自本站,以达到简单防盗功能.
三.[重点] 为了防盗,最简单的方法还是更改文件名.一个文件,一天就失效了.那盗链就变得没有意义.
开始实施:
1.
---------------------------------------------------------------
新建一个文件夹 /bbs/download_file_in_here ,并在它下面建立一个乱码文件夹,如De7Tvs9K 将 /bbs/download/ 目录下的所有文件移动到/bbs/download_file_in_here/De7Tvs9K 下,
并给它绑定一个域名:http://download.mowai.com
---------------------------------------------------------------
2.
---------------------------------------------------------------
加一条 rewirte 到虚拟主机设置里.
&#60;Directory "/www/bbs.mowai.com"&#62;
&#60;FilesMatch "^download$"&#62;
ForceType application/x-httpd-php
&#60;/FilesMatch&#62;
&#60;/Directory&#62;
也可以写 .htaccess 文件来实现.目的是实现用PHP来处理download文件
---------------------------------------------------------------
3.
---------------------------------------------------------------
新建一个 time.txt 文件,位于 /bbs/ 目录下.内容为:De7Tvs9K 就是上面那个乱码文件夹
---------------------------------------------------------------
新建一个名为 download 的php文件在 /bbs/ 目录下(注意,这个文件没有后缀名)
代码如下:
 &#60;?php
header('Content-type:text/html;charset=utf-8');
define('CURSCRIPT', 'download');
require_once './include/common.inc.php';
$down_uri = 'http://download.mowai.com/'; //绑定的域名 以/结尾
$allow_guest_download = 1; //是否允许游客下载 1=是 0=否
$referer_verify = 1; //是否验证referer来源.在允许游客下载的情况下,是否允许非本站用户下载.
$referer_uri_list = array('www.phpv.net','esayr.com'); //允许的referer来源网站.上一项值为1时生效.
$interval_time = 24; //间隔多少个小时，更改一次文件夹名。
$filename = 'time.txt'; //保存文件夹路径的文本文件.if (file_exists($filename)) [...]]]></description>
			<content:encoded><![CDATA[<p>需求：<br />
一个技术/娱乐论坛 <a href="http://bbs.mowai.com" target="_blank">http://bbs.mowai.com</a> 有大量电影和ISO文件。<br />
文件存放于论坛目录下,结构如下:</p>
<p><em>/bbs/download/蜘蛛侠3.rm</em>------电影和ISO文件<br />
<em>/bbs/index.php</em>---------------论坛首页<br />
<em>/bbs/</em>...<br />
<em>/index.php</em> -------------------首页</p>
<p>原来使用 <a title="蜘蛛侠3 下载地址" href="http://bbs.mowai.com/movie/蜘蛛侠3.rm">http://bbs.mowai.com/download/蜘蛛侠3.rm</a> 这样的链接提供用户下载文件.<br />
但被无良的迅雷和一些网站等严重盗链.服务器带宽被耗尽, 急需解决.</p>
<p>1.尽量不改变原有下载路径.否则需要编辑大量主题.<br />
2.可以设置非网站注册会员需要登录方可下载.</p>
<p>思路:<br />
一.和论坛绑定,需要引入论坛文件以判断用户是否登录.<br />
二.如果没有限制游客下载,那么需要判断HTTP_REFERER是否来自本站,以达到简单防盗功能.<br />
三.[重点] 为了防盗,最简单的方法还是更改文件名.一个文件,一天就失效了.那盗链就变得没有意义.</p>
<p>开始实施:<br />
1.<br />
---------------------------------------------------------------<br />
新建一个文件夹<em> /bbs/download_file_in_here</em> ,并在它下面建立一个乱码文件夹,如<em>De7Tvs9K</em> 将 /bbs/download/ 目录下的所有文件移动到<em>/bbs/download_file_in_here</em>/<em>De7Tvs9K </em>下,<br />
并给它绑定一个域名:<a href="http://download.mowai.com" target="_blank">http://download.mowai.com</a><br />
---------------------------------------------------------------</p>
<p>2.<br />
---------------------------------------------------------------<br />
加一条 rewirte 到虚拟主机设置里.</p>
<p>&lt;Directory "/www/bbs.mowai.com"&gt;<br />
&lt;FilesMatch "^download$"&gt;<br />
ForceType application/x-httpd-php<br />
&lt;/FilesMatch&gt;<br />
&lt;/Directory&gt;</p>
<p>也可以写 .htaccess 文件来实现.目的是实现用PHP来处理download文件<br />
---------------------------------------------------------------</p>
<p>3.<br />
---------------------------------------------------------------<br />
新建一个 time.txt 文件,位于 /bbs/ 目录下.内容为:<em>De7Tvs9K</em> 就是上面那个乱码文件夹<br />
---------------------------------------------------------------<br />
新建一个名为 <em>download </em>的php文件在 <em>/bbs/ </em>目录下(注意,这个文件没有后缀名)<br />
代码如下:</p>
<p><code style="white-space: nowrap"><code><span style="color: #000000"> <span style="color: #0000bb">&lt;?php</span></span></code></code></p>
<p>header<span style="color: #007700">(</span><span style="color: #dd0000">'Content-type:text/html;charset=utf-8'</span><span style="color: #007700">);<br />
</span><span style="color: #0000bb">define</span><span style="color: #007700">(</span><span style="color: #dd0000">'CURSCRIPT'</span><span style="color: #007700">, </span><span style="color: #dd0000">'download'</span><span style="color: #007700">);<br />
require_once </span><span style="color: #dd0000">'./include/common.inc.php'</span><span style="color: #007700">;</span></p>
<p><span style="color: #0000bb">$down_uri </span><span style="color: #007700">= </span><span style="color: #dd0000">'http://download.mowai.com/'</span><span style="color: #007700">; </span><span style="color: #ff8000">//绑定的域名 以/结尾<br />
</span><span style="color: #0000bb">$allow_guest_download </span><span style="color: #007700">= </span><span style="color: #0000bb">1</span><span style="color: #007700">; </span><span style="color: #ff8000">//是否允许游客下载 1=是 0=否<br />
</span><span style="color: #0000bb">$referer_verify </span><span style="color: #007700">= </span><span style="color: #0000bb">1</span><span style="color: #007700">; </span><span style="color: #ff8000">//是否验证referer来源.在允许游客下载的情况下,是否允许非本站用户下载.<br />
</span><span style="color: #0000bb">$referer_uri_list </span><span style="color: #007700">= array(</span><span style="color: #dd0000">'www.phpv.net'</span><span style="color: #007700">,</span><span style="color: #dd0000">'esayr.com'</span><span style="color: #007700">); </span><span style="color: #ff8000">//允许的referer来源网站.上一项值为1时生效.<br />
</span><span style="color: #0000bb">$interval_time </span><span style="color: #007700">= </span><span style="color: #0000bb">24</span><span style="color: #007700">; </span><span style="color: #ff8000">//间隔多少个小时，更改一次文件夹名。</span></p>
<p><span style="color: #0000bb">$filename </span><span style="color: #007700">= </span><span style="color: #dd0000">'time.txt'</span><span style="color: #007700">; </span><span style="color: #ff8000">//保存文件夹路径的文本文件.if (file_exists($filename)) {<br />
</span><span style="color: #0000bb">$last_m_time </span><span style="color: #007700">= </span><span style="color: #0000bb">filemtime</span><span style="color: #007700">(</span><span style="color: #0000bb">$filename</span><span style="color: #007700">);<br />
</span><span style="color: #0000bb">$directory_name </span><span style="color: #007700">= </span><span style="color: #0000bb">file_get_contents</span><span style="color: #007700">(</span><span style="color: #0000bb">$filename</span><span style="color: #007700">);</span></p>
<p><span style="color: #ff8000">//判断时间是否到期<br />
</span><span style="color: #007700">if(</span><span style="color: #0000bb">time</span><span style="color: #007700">() - </span><span style="color: #0000bb">$last_m_time </span><span style="color: #007700">&gt; </span><span style="color: #0000bb">$interval_tim</span><span style="color: #007700">*</span><span style="color: #0000bb">3600 </span><span style="color: #007700">) {<br />
</span><span style="color: #0000bb">$new_directory_name </span><span style="color: #007700">= </span><span style="color: #0000bb">random</span><span style="color: #007700">(</span><span style="color: #0000bb">12</span><span style="color: #007700">);</span></p>
<p>if (<span style="color: #0000bb">is_writable</span><span style="color: #007700">(</span><span style="color: #0000bb">$filename</span><span style="color: #007700">)) {<br />
if (!</span><span style="color: #0000bb">$handle </span><span style="color: #007700">= </span><span style="color: #0000bb">fopen</span><span style="color: #007700">(</span><span style="color: #0000bb">$filename</span><span style="color: #007700">, </span><span style="color: #dd0000">'a'</span><span style="color: #007700">)) {<br />
exit(</span><span style="color: #dd0000">"不能打开文件 $filename"</span><span style="color: #007700">);<br />
}</span></p>
<p><span style="color: #ff8000">//更改文件夹名<br />
</span><span style="color: #007700">if (</span><span style="color: #0000bb">rename</span><span style="color: #007700">(</span><span style="color: #dd0000">"bbs/"</span><span style="color: #007700">.</span><span style="color: #0000bb">$directory_name</span><span style="color: #007700">, </span><span style="color: #dd0000">"bbs/"</span><span style="color: #007700">.</span><span style="color: #0000bb">$new_directory_name</span><span style="color: #007700">)) {</span></p>
<p><span style="color: #ff8000">//将新的目录名写入到time.txt文件中。<br />
</span><span style="color: #007700">if (</span><span style="color: #0000bb">fwrite</span><span style="color: #007700">(</span><span style="color: #0000bb">$handle</span><span style="color: #007700">, </span><span style="color: #0000bb">$new_directory_name</span><span style="color: #007700">) === </span><span style="color: #0000bb">FALSE</span><span style="color: #007700">) {</span></p>
<p><span style="color: #ff8000">//如果改文件内容失败，把文件夹名改回来<br />
</span><span style="color: #0000bb">rename</span><span style="color: #007700">(</span><span style="color: #dd0000">"bbs/"</span><span style="color: #007700">.</span><span style="color: #0000bb">$new_directory_name</span><span style="color: #007700">,</span><span style="color: #dd0000">"bbs/"</span><span style="color: #007700">.</span><span style="color: #0000bb">$directory_name</span><span style="color: #007700">);</span></p>
<p>exit(<span style="color: #dd0000">"不能写入到文件 $filename"</span><span style="color: #007700">);<br />
}<br />
</span><span style="color: #0000bb">$directory_name </span><span style="color: #007700">= </span><span style="color: #0000bb">$new_directory_name</span><span style="color: #007700">;</span></p>
<p>} else {<br />
exit(<span style="color: #dd0000">"文件夹改名失败"</span><span style="color: #007700">);<br />
}<br />
</span><span style="color: #0000bb">fclose</span><span style="color: #007700">(</span><span style="color: #0000bb">$handle</span><span style="color: #007700">);</span></p>
<p>} else {<br />
exit(<span style="color: #dd0000">"文件 $filename 不可写"</span><span style="color: #007700">);<br />
}<br />
}</span></p>
<p>}else{<br />
exit(<span style="color: #dd0000">'文件 $filename 不存在，请创建一个'</span><span style="color: #007700">); </span><span style="color: #ff8000">//没有time.txt文件，请创建一个。<br />
</span><span style="color: #007700">}</span></p>
<p><span style="color: #ff8000">/*################### 游客检查 #############*/<br />
</span><span style="color: #007700">if(!</span><span style="color: #0000bb">$allow_guest_download </span><span style="color: #007700">&amp;&amp; !</span><span style="color: #0000bb">$discuz_uid</span><span style="color: #007700">) {<br />
</span><span style="color: #ff8000">//exit('此操作需要登录!您尚未 &lt;a href="http://bbs.mowai.com/logging.php?action=login"&gt;登录&lt;/a&gt;');<br />
</span><span style="color: #0000bb">header</span><span style="color: #007700">(</span><span style="color: #dd0000">"Location: http://www.mowai.com/error/need_login.html"</span><span style="color: #007700">);<br />
exit;<br />
}</span></p>
<p><span style="color: #ff8000">/*################### 来源检查 #############*/<br />
</span><span style="color: #0000bb">preg_match</span><span style="color: #007700">(</span><span style="color: #dd0000">"/https?:\/\/([^\/]+).*/i"</span><span style="color: #007700">, </span><span style="color: #0000bb">$_SERVER</span><span style="color: #007700">[</span><span style="color: #dd0000">'HTTP_REFERER'</span><span style="color: #007700">],</span><span style="color: #0000bb">$matchs</span><span style="color: #007700">);</span></p>
<p>if(<span style="color: #0000bb">$referer_verify </span><span style="color: #007700">&amp;&amp; !</span><span style="color: #0000bb">in_array</span><span style="color: #007700">(</span><span style="color: #0000bb">$matchs</span><span style="color: #007700">[</span><span style="color: #0000bb">1</span><span style="color: #007700">],</span><span style="color: #0000bb">$referer_uri_list</span><span style="color: #007700">)) {</span></p>
<p><span style="color: #0000bb">header</span><span style="color: #007700">(</span><span style="color: #dd0000">"Location: http://www.mowai.com/error/invalidreferer.html"</span><span style="color: #007700">);<br />
</span><span style="color: #ff8000">//exit('您要下载的文件位于http://bbs.mowai.com');</span></p>
<p><span style="color: #007700">}else{</span></p>
<p>if(isset(<span style="color: #0000bb">$_SERVER</span><span style="color: #007700">[</span><span style="color: #dd0000">'PATH_INFO'</span><span style="color: #007700">])){</span></p>
<p><span style="color: #ff8000">//这里可以加一些判断文件是否存在而出现错误提示的信息。<br />
</span><span style="color: #0000bb">header</span><span style="color: #007700">(</span><span style="color: #dd0000">"Location:{$down_uri}{$directory_name}/{$_SERVER[PATH_INFO]}"</span><span style="color: #007700">);<br />
}<br />
else {</span></p>
<p><span style="color: #0000bb">header</span><span style="color: #007700">(</span><span style="color: #dd0000">"Location: http://www.mowai.com/error/404.html"</span><span style="color: #007700">);<br />
}<br />
}</span></p>
<p><span style="color: #0000bb">?&gt;</span></p>
<p>代码在linux+DZ5.5.0 下运行成功.</p>
<p>需要注意的几点<br />
如果是*nix系统,请将time.txt的文件属性设置为777<br />
如果要下载的文件在远程计算机,请使用PHP的FTP命令来做更名操作.<br />
PW论坛,根据情况改改代码就行了.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.esayr.com/2007/05/22/archives_9.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

