容易犯错的代码– print

February 7th, 2010  / Author: Cnteacher

下面这个程序是个十分有趣的东西

print(1) + print(1) + print(1) + print(1);

你能猜出他的运行结果么?如果你认为是 1111, 那么你就大错特错了。

容易犯错的代码– global

February 7th, 2010  / Author: Cnteacher

大多数人觉得PHP当中的global 用法和 $GLOBALS 一样的,所以程序当中经常混用,使用 global 还是 $GLOBALS 完全凭借个人喜好。

尽管手册里面详尽的描述了两种用法区别,但是一不小心你还是会犯错的。如果你可以准确的说出下面代码的输出结果,那么你对这部分的理解就算及格了。

$test = ‘hello’;
test();
echo $test;
test2();
echo ‘,’, $test;

function test() {
static $my = ‘this is a test’;
global $test;
$test = & $my;
}

function test2() {
static $my = ‘this is a test’;
$GLOBALS['test'] = & $my;
}

正确答案:hello,this is a test

Ucenter 不支持 IPV6

February 7th, 2010  / Author: Cnteacher

今日在 Windows 7 上架设了环境,开发测试的时候,竟然发现 Ucenter 部分操作缓慢。

经查,Uc 的配置文件中, UC_IP 为空。通常,如果 UC_IP 为空,则在进行 http 访问操作的时候会自动解析服务器的IP。

我是本地安装的,服务器为localhost。ping 了一下 localhost,发现竟然返回 ::1 ,而不是 127.0.0.1

查看 hosts 文件,里面内容

# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost

将其改为

# localhost name resolution is handled within DNS itself.
127.0.0.1 localhost
# ::1 localhost

保存退出后,一切恢复正常。原来 win7 默认ping localhost 竟然返回了 ipv6 的地址

建议:有类似问题的人可以编辑 hosts 文件,或者在uc的config 当中设置 UC_IP 为 具体的ip,如: 127.0.0.1

危险的代码 1

February 2nd, 2010  / Author: Cnteacher

test.php

<?php

echo $_GET['test'] + 1;

?>

你可能觉得这个代码不具有任何威胁,没有跨站问题,也不会输出数字以外的内容。

不过,你确实错了。一个简单请求可能会让这个程序产生 Fatal error 

你的程序会中断执行,并爆出你的程序路径

TRY:

http://localhost/test.php?test[]=1

Hello world!

February 2nd, 2010  / Author: Cnteacher

看了几个国内开源的blog 程序代码,多少显得凌乱,支持又不到位。

开始决定选用 Sablog-X,除了代码熟悉以外,也算支持一下 angel(虽然好久没联系了)。本地svn库我都把代码填进去了,打算边用边改。不过sablog默认风格不喜欢,其他风格又难找,还是放弃了。:) 看来angle 要找个好的UI给设计一下了。

最终还是选用 wordpress 了,风格够多,插件够多,基本不用操心。

除了代码结构和效率上不敢恭维,wordpress 其他地方做得几乎无可挑剔。