随着闹运会的临近,最近的网络过滤是越发的厉害。最无奈的是,本人竟然需要代理才能更新自家的 Blog。
不知道是从哪个哥们想起的这招,使用古文的竖排方式方式关键字过滤。细想一下,这种方式虽然无奈,但总比文章中加入很多的特殊符号要好的多。
不知道在“中文字站起来以后”,会不会引起我们再次的思·想·维·新呢?想必当真如此,胡·适先生泉下也会含笑了。

好的,回过头来看下这次的 PHP 脚本。这是我根据 YiXia 兄弟的 Wordpress 插件中的代码而来。
本人主要做了两件事情:格式化代码,“使其看起来舒服些”;第二就是优化代码的算法(现在效率上应该不用在这个类上做过多的考虑)。
在这里可以查看具体的代码还有 DEMO,如果你有兴趣,欢迎打包下载。
比较郁闷就是某些“小气”的网站,会加上防盗链的功能(特别本人在看 Google Reader 时)。其实防盗链这个技术并不复杂,目前基本就是在服务器端判断 HTTP_REFERER 的位置,如果不是来自本站自身,则拒绝输出(详细)。
那么如果考虑突破防盗链的措施,就需要考虑在 HTTP_REFERER 上面做手脚了。PHP 脚本中对应的变量是 $_SERVER['HTTP_REFERER'] ,它存储了 HTTP_REFERER 的值。
由于直接访问目标 URL 资源已经被上述防盗链的措施给屏蔽,所以我们需要个类似网关的玩意去获取。说白了就是编写已经包装过的 HTTP 头的 PHP 脚本。
下面是简单的函数实现:
function getRemoteFile($url, $refer = '') {
$option = array(
'http' => array(
'header' => "Referer:$refer")
);
$context = stream_context_create($option);
return file_get_contents($url, false, $context);
}这是个比较简单的函数,其功能就是伪造 Referer (使用 stream_context_create 函数)然后获取对方的数据(使用 file_get_contents,需要开启 allow_url_fopen )。
如果想“复杂”一点,可以使用 sockets 扩展,这不在这里的讨论范围以内。
另外,再提供个获取主机名的正则函数
function getHost($url) {
$result = preg_match('/^http:\/\/([\d|\w|\.]+)\//', $url, $matches);
if (sizeof($matches) >= 2) {
return $matches[1];
} else {
return null;
}
}再进一步的扩展,可以封装成脚本,然后譬如调用
http://127.0.0.1/proxy.php?url=http://i.am/img
就可以获取那些开启防盗链措施的链接了(再发挥下,使用 Javascript 将图片链接全部替换)。
译言上有篇“40 个迹象表明你还是 PHP 菜鸟”,里面的内容非常不错,但部分观点不完全苟同。
PHP 入门的确很简单,但这并不说明它不复杂。在从事前端开发之前,本人也作为 PHP 程序员混了一段时间,在这里根据此文的部分观点说下我的个人看法。
不使用 MVC
MVC 这玩意几乎成了后台开发的“Web 标准”。很多程序员在没有真正弄清楚项目需求和规模前,就大喊“我们要些遵循 MVC 的代码”。
MVC 固然有众多的好处,但是退一步讲,其出发点也是为了提高效率的。在并不复杂的项目中刻意使用 MVC ,这好比将一个脚本分成三份,我想谁都不会这样做的。
不使用 autoload
PHP5 中加入的 autoload 特性意在容许给编码人员二次出错的机会。有时候这个特性非常的棒(本人也经常在使用,这样可以省去不少的 inlcude/require 代码)。
这里要说明和提醒的就是,不要滥用这个特性 -- 比如你明知道这个类在某个文件中,何必劳神让 autoload 再去寻找?特别在些注重高效率的场合,必须面对这一点。
对集成开发环境(IDE)视而不见
好的 IDE 是能提交效率,但坦白的说,本人没有使用 IDE 的习惯。
在大学期间学习 Linux 系统开发(c 语言)的那会,已经习惯用 Vim 编辑代码、使用 make 和 autoconf 组织代码、使用 gcc 编译,如果碰到需要调式,还可以让 Vim 和 gdb 配合。
本人的观点就是“好的软件只做一件事情”,我敢保证 IDE 中的编辑器没有 Vim 好,断点调试也没有类似 gdb、xdebug 要来的方便(至少熟悉)。
所以,本人觉得作为工具的工具,没有孰优孰劣的说法。
-- Split --
总之,文中的很多观点本人甚为同意,除了技术上的些细节,看得出很多都包含了“思想”这一范畴。比如良好的代码风格和开发方式、使用 OOP (不过和 MVC 一样,经常会被玩概念)、还有很多脚本基本安全方面的的意识(比如输入过滤)等等。
在我看来,好的 PHP 程序员不仅仅需要过硬的技术,重要的还是思想--团队意识、责任感、兴趣、激情、还有敬业等等(再这样说下去直接去学 六脉神剑 去算了)。
说到这里就不仅仅是 PHP 程序员的范畴了,希望广大的技术人员都能共勉。
- «
- 1
- ...
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- »