[转载]15 样平常你不知道的事
January 20th, 2005
◎蝦米的心臟在頭部。
◎豬無法看到天空。
◎老鼠和馬不能嘔吐。
◎據說貓的尿液是夜光的。
◎世界人口50%的人從來都沒有接過電話。 Read the rest of this entry »
标签:Funny_搞笑[转载]警察也崩溃
January 20th, 2005
一名警察要一位超速行驶的男士把车停到路边,之后开始了下面的问话调查:
警察:我能看一下你的驾驶执照吗? 司机:我没有驾照,因为第五次酒后开车,我的驾照被吊销了。 警察:我可以看看你车子的牌照吗? 司机:这不是我的车,是我偷人家的。 Read the rest of this entry »
标签:Funny_搞笑[转载]Who is the leader of China
January 20th, 2005
Hu Jintao was named chief of the Communist Party in China.
SCENE: The Oval Office(美国总统办公室). George Bush(乔治·布什) and Condolezza Rice(国家安全顾问康多里扎·赖斯).
George: Condi! Nice to see you. What’s happening?
Condi: Sir, I have the report about the new leader of China.
George: Great. Let’s hear it.
Condi: Hu is the new leader of China.
Read the rest of this entry »
搞定一个 1.2 版中的 TrackBack 的问题
January 18th, 2005
前几天把 Blog 搬到了 Rainice 的 Linux 主机上,结果导致形如 http://rainux.sefans.com/blog/wp-trackback.php/67 的默认 TrackBack URI 无法正常工作。Rainice 猜测是 Apache 的 mod_rewrite 模块禁用造成,不过我在自己的 Windows 主机上禁用 mod_rewrite 后这个 URI 一样可以正常的工作。
Rainice 提议说可以把 URI 中最后一个 / 改成 ?。通过分析 WordPress 的源代码,打开 wp-trackback.php 和 wp-includes\template-functions-comment.php 修改后却仍然无法使用。因为 TrackBack 是以 POST 方法发送的,比较难调试,只好自己写了个简单的 PHP 页面来辅助调试。
$handle = fopen('post.txt', 'a+');
ob_start;
print_r($_POST);
print_r($_SERVER['REQUEST_URI']);
fwrite($handle, ob_get_clean());
fclose($handle);
目的很简单,就是把 POST 过来的数据和请求自身的 URI 保存到文件里以便观察。
几经周折,终于发现是因为 wp-includes/functions.php 里的 trackback() 函数在组织 http request 时没有正确处理带有问号的 URI 造成的。
$http_request = 'POST ' . $trackback_url['path'] .
$trackback_url['query'] . " HTTP/1.0\r\n";
很显然经过这么一拼凑 TrackBack URI 中的问号就被处理掉了一个。
正为发现一个 WordPress 的 bug 而窃喜准备去 WordPress 论坛报告时,才发现 1.5 beta 版里这个问题已经被修正了。
可叹平常我都对软件的追新乐此不彼,还时常以“新功能”、“就算用不上新功能,Bug 修正也是很重要”之类的理由“引诱”朋友也尽力使用新版本的软件,没想到今天自己居然因为一时偷懒没升级 WordPress 而吃了大亏,白白浪费了几个小时来除错,唉!
要修改的地方有 wp-trackback.php 第 6 行附近
// 修改 / 为 ?,在 mod_rewrite 禁用的情况下正常使用
//$tb_id = explode('/', $_SERVER['REQUEST_URI']);
$tb_id = explode('?', $_SERVER['REQUEST_URI']);
wp-includes\template-functions-comment.php 第 266 行附近 trackback_url() 函数中
// 修改 / 为 ?,在 mod_rewrite 禁用的情况下正常使用
//$tb_url = get_settings('siteurl') . '/wp-trackback.php/' . $id;
$tb_url = get_settings('siteurl') . '/wp-trackback.php?' . $id;
wp-includes\functions.php 第 562 行附近 trackback() 函数中
// 此处修改保证带有问号的 URI 能正确处理
//$http_request = 'POST ' . $trackback_url['path'] .
$trackback_url['query'] . " HTTP/1.0\r\n";
$http_request = 'POST ' . $trackback_url['path'] .
($trackback_url['query'] ? '?' .
$trackback_url['query'] : '') . " HTTP/1.0\r\n";
OK, Good job! 不过我很郁闷 :(
标签:Software_软件, WordPress