Category Archive: WEB Application

Aug 16

让Yoast Breadcrumbs支持中文

修改wp-content/plugins/breadcrumbs/yoast-breadcrumbs.php: — wp-content/plugins/breadcrumbs/yoast-breadcrumbs.php (revision 22) +++ wp-content/plugins/breadcrumbs/yoast-breadcrumbs.php (revision 23) @@ -49,7 +49,7 @@   foreach (array(’home’, ‘blog’, ‘sep’, ‘singleparent’, ‘prefix’, ‘archiveprefix’, ‘searchprefix’, ‘breadcrumbprefix’, ‘breadcrumbsuffix’) as $option_name) { if (isset($_POST[$option_name])) { – $opt[$option_name] = htmlentities(html_entity_decode($_POST[$option_name])); + $opt[$option_name] = htmlentities(html_entity_decode($_POST[$option_name], ENT_COMPAT, "UTF-8"), ENT_COMPAT, "UTF-8"); } } 找到红色部分的行,改为绿色部分的即可。或者复制上面的代码,保存为一个叫做breadcrumbs.path的文件。然后进入Wordpress根目录,运行命令 patch -p0 < /path/to/breadcrumbs.patch

Jul 08

英文版IE6下中文字体变大之谜

有个客户的站点上,安装了Joomla的繁体中文语言包,并将繁体中文设置为默认语言后,客户报告说,页面上所有的文字都突然变大了好多。 接到报告后,我们想办法重现问题。然而不巧的是,使用中文版的IE6,IE7, IE8, Firefox3.6,都看不出字体大小的明显变化。最后突然发现客户的屏幕截图当中的IE是英文的,于是找了个英文版的IE6。果然,问题出现了!那么,到底是由于什么因素导致的呢? 通过分析,发现我们做的唯一改变就是语言的转换,尝试把语言换回默认的英文之后,问题没了。但是我们必须要站点的语言是繁体中文的,得找出问题的根源。最后,通过比较不同语言下的xhtml输出,发现了差别。 改变语言之前: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb" > 之后: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-tw" lang="zh-tw" > 尝试后发现,导致IE6字体突然变大的原因,是lang=”zh-tw”这个属性,根据标准,这个属性用于向浏览器提示内容的语言,让浏览器选择合适的呈现方式。 一般情况下,对于zh-tw的语言设置,各种浏览器呈现出来的文字都会比en-gb时略宽。然后在英文版的IE6之下,当font-size为13px的时候,zh-tw语言下的文字将会明显变大……至少增大2px,font-size为其他值时这种变化却不明显。有趣的是,把语言设置为zh-cn却没有这问题。(可戏称为台湾问题?不谈政治^_^) 最后,通过修改模板,输出lang=”zh-hk”替代zh-tw来解决问题 IE6真是个怪物,可惜这怪物生命力似乎很顽强。

May 27

Been hacked,Wow!!!

以前,在还没接触计算机及网络的时候,从一些新闻,电影片段中,知道黑客这一神秘角色,那时便对他们总有一种莫名的崇拜:他们有着精湛的技术,可以在广袤的网络中自由飞翔;他们身怀绝技而又坚持正义,维护公众利益。多酷啊,像是古代的侠客! 后来,知道还有骇客/怪客(cracker),以及脚本小子(script kiddies)那样的角色。于是觉得,原来计算机的世界也和现实世界一样,武艺超群的,可能是警察,也可能是杀手。拿枪的人,可能是个孩子,却也能要你的命。 之前有个朋友问我,被人黑掉(been hacked)是什么效果?我说不知,没被人黑过,不过我倒想见识下被人黑是什么感觉。今天终于如愿以偿了(^_^) 。 有个客户说他们基于Zen Cart 的一个网店管理员无法登录了,让帮忙重置下密码。我进入Zen Cart的管理员界面,发现那里已经有一个Resend password的功能,可以通过email地址取回密码,我就暗笑。然而客户回复说,填写email了还是没用,而且确定他们的email绝对没错,也一直没有修改过。嗯,那样的话,只能进入DB看看了。在DB中,找到admin表,列出里面的管理员账号,与客户核对,客户一看,不好,那些账号之前都没有的,而他们自己一直用的账号却不见了。难道……?看起来情况不妙。 我继续在DB里面检视,发现还有个admin_activity_log表,不由得赞叹, Zen Cart设计者为我想得真周到!把里面的数据反复浏览,发现有些异常的记录: access_date |admin_id|page_accessed |page_parameters | ip_address ************************************************************************************* ’2010-05-21 15:24:43′| 0| ‘password_forgotten.php ‘| ‘action=execute&’| ’118.97.15.19′ ’2010-05-21 15:25:23′| 0| ‘login.php ‘ | ” | ’118.97.15.19′ ’2010-05-21 15:25:51′| 0| ‘login.php adminz’ | ” | ’118.97.15.20′ …. …. ’2010-05-17 12:16:51′| 0| ‘password_forgotten.php ‘| ‘action=execute&’|’125.162.36.196′ ’2010-05-17 12:17:03′| …

Continue reading »

May 18

如何在Joomla Content Editor内添加MSN链接

Add MSN link in TinyMCE based editor

May 15

Display RSS feed in Joomla!

Better not reinvent the wheel Last week, my boss asked me to add a module to show his latest WordPress blog post on our Joomla! site. Then I began to dig google and the Joomla! Extensions Directory for such kind of module. I’ve tried many keywords like “blog update”,”wordpress joomla”, but all with no luck. …

Continue reading »

Apr 28

一些RocketTheme Extensions及其用途

免费Extensions: 1.RokBox 插件: 用于在当前页面打开一个对话框(ajax效果),显示图像,flash,音乐等内容. 2.RokCandy 插件: 类似于BBCode,可以通过简单的宏(macro)调用输出复杂的HTML 3.RokTabs 模块: 用于显示标签式页面 4.RokAjaxSearch 模块: 基于Ajax的搜索框 5.RokSlideshow 模块: 交替显示一些图片,实现幻灯片效果 6.RokBridge 插件: Joomla!与phpbb整合 收费Extensions: 1.RokPad 插件: 编辑器插件,支持语法加亮,AJAX保存等 2.RokStories 模块: 从一系列文章中,每一篇选出一小段摘要文字和图片,以幻灯片效果交替显示 3.RokNavMenu 组件: 用于创建下拉菜单效果,操作简单,效果漂亮.

Apr 19

一种传递HTTP认证信息的方式

原理: 在HTTP认证(Basic,Digest)中,当浏览器访问受保护的资源时,WEB服务器会返回响应: HTTP/1.1 401 Authorization Required 并在响应头WWW-Authenticate中指明需要的认证方式。之后浏览器向使用计算机的用户 询问用户名和密码,然后将这些信息加密后通过Authorization和其它请求头发送给服务器 如果用户名密码有效,服务器就返回客户请求的资源。客户的所有后续请求也要提供相同的 用户信息(因为HTTP是无状态的) 如果用户名密码无效,服务器会再次返回401代码,然后浏览器再次询问用户。 IE浏览器在用户输入几次错误密码之后放弃,显示服务器返回的401错误页面, Firefox允许用户一直重试,直到密码正确,或者用户点击取消,对话框才会消失,然后 显示401错误页面。 我们不难看出,要想在各个应用或者站点之间传递HTTP认证信息,关键是修改浏览器的 请求,添加Authorization及相关请求头。我们也知道,对浏览器进行操作这样的任务, 只能由客户端代码来完成(Javascript,Flash,Java Applet…)。 在Javascript可用的对象中,XMLHttpRequest直接支持HTTP认证,它会将其open方法中 提供的用户名密码处理后放到Authorization请求头,发给服务器。之后浏览器会记住 这一认证信息并在访问相关资源时自动使用。