2009年7月6日星期一

国外优秀开源PHP建站程序一览

  大量的PHP开源(开放源代码/Open Source)应用改变了这个世界,改变了互联网,以下我们总结从数据库到购物、博客等众多类型的开源PHP软件,供网站开发者们参考。

  博客:WordPress

  WordPress是使用PHP开发的著名博客平台,免费开源,功能强大,不仅仅用于博客搭建,还可以广泛应用于各类网络信息发布平台。

  论坛:phpBB

  phpBB是一种广泛流行的开源论坛软件,具有易于使用的管理面板和友好的用户安装界面,可以轻松地在数分钟内建立起一个论坛,功能上具有很高的可配置性,能够完全定制出相当个性化的论坛。

  CMS:Drupal

  Drupal是一个开源的内容管理系统(CMS)平台,拥有强大并可自由配置的功能,能支持从个人博客到大型社区驱动的网站等各种不同应用的网站项目。

  Wiki:MediaWiki

  MediaWiki是PHP语言写成开源Wiki引擎,全世界最大的Wiki项目维基百科就是使用MediaWiki引擎。

  Digg:Pligg

  Pligg是一套灵活的类似Digg的Web2.0 CMS系统,系统使用PHP开发,模仿了国外流行的DIGG系统。

  图像:Gallery

  Gallery 是一个非常有名的免费开源图库相册软件,基于 PHP 和 MySQL, PostgreSQL 等数据库。功能非常强大,有丰富的扩展可以下载,安装很简单,有很多插件可用。

  RSS:Gregarius

  Gregarius是一个RSS聚合程序,免费开源,具备不错的用户体验,易于操作和管理。可以把其当成RSS阅读器使用。

  电子商务:osCommerce

  osCommerce是一套由自由软件开发社团开发并维护的在线商店的解决方案,免费开源,并可以应用到任何的商业环境中,可以在短时间内生成一个功能强大的电子商务网站。

  广告:OpenX

  OpenX(原名phpAdsNew)是一个用PHP开发的广告管理与跟踪系统,适合各类网站使用,能够管理每个广告主拥有的多种任何尺寸横幅广告,按天查看,详细和概要统计并通过电子邮件发送报表给广告主。

  微博客:Laconica

  Laconica是一个开源的微型博客系统,也是一个Twitter克隆,可以实现Microblog的常用功能,国外不少微博客系统都是通过这个开源系统架设的。

  英文原文:Top Ten Open Source PHP Apps

2009年7月5日星期日

最新屏蔽百度快照的方法

  有时候,因为内容的更改或者隐私问题,我们往往不希望别人通过“百度快照”的方法查看自己网站的某一些网页,对于网站管理员来说,百度快照也分流了大量本属于网站的流量,为了增加网站的流量或者增强内容隐私,我以前曾经提供过一段将百度快照重定向到自己网站的方法。不过后来百度改变的快照算法,不从远端服务器获取JavaScript文件,因此先前介绍的那个屏蔽方法目前已经失效。

  现在我介绍一个新方法,原理也是大致相同,我们知道目前百度网页快照虽然不从远端服务器抓取JavaScript文件,还是依旧会从远端服务器抓起CSS文件,而通过一个技巧可以在CSS文件中实现网页重定向,从而控制百度快照中的网页,完全由我们控制该快照重定向到我们制定的任何网页地址。

  例如,如果百度快照中缓存的文件为style.css,那么我们在服务器上编辑这个文件,在CSS文件中加入以下语句,即可控制百度缓存快照重定向,从而实现屏蔽百度网页快照内容的功能。

body {onload:expression(location.href='http://www.williamlong.info/');}

  以上语句在IE浏览器下测试通过。理论上,根据这个方法,我们可以控制百度网页快照的内容重定向到任何一个我们指定的网址,甚至是第三方网站。为了实现网页的正常显示,百度快照屏蔽CSS的可能性会非常小。

  这个方法也可用于屏蔽Google等其他搜索引擎的网页快照。

2009年7月4日星期六

Z-Blog垃圾留言判定新方法

  现在的垃圾留言越来越智能,并且从留言内容几乎看不出来是垃圾留言,而大量的垃圾留言会导致文章可读性下降,并可能会被搜索引擎惩罚,经过一段时间的分析和思考,我发现一种判定垃圾留言的新方法,可以从一定程度提高垃圾留言的识别率。

  这种新方法是基于对留言者姓名的过滤,为了实现垃圾留言的功效,这类留言者的姓名通常具有一定的规律,比如姓名为“起重机”、“虚拟主机”、“代开发票”等用户的留言,几乎百分之百为垃圾留言,通过总结这类姓名的特点,并对其进行过滤,就可以提高识别垃圾留言的准确率。

  将下面几行代码加入到月光Z-Blog反垃圾留言过滤插件的Antispam_chkComment函数中,就可以实现增强型的垃圾留言识别,对于有垃圾留言倾向的评论,会自动转到留言审核界面,审核完成后留言才会显示。其中strFilter中是我总结的一些常见的垃圾留言特征字符串。

 Dim i
 Dim strAuthor
 Dim strFilter
 Dim strFilterWord
 strFilterWord= "电影,影院,影视,魔兽,英语,网站,电脑,地图,租房,论坛,营销,社区,nba,qq,seo,在线,赚钱,手机,聊天,兼职"
 strAuthor = objComment.Author
 strFilter = Split(strFilterWord, ",")
 For i = 0 To UBound(strFilter)
  If InStr (strAuthor, strFilter(i)) > 0 Then
   objComment.log_ID=-1-objComment.log_ID
   If objComment.Post Then
   End if
   If IsEmpty(Request.Form("inpAjax"))=False Then
    objComment.Content="您的评论因被怀疑为 Spam 而进入审核过程,请勿再次提交。"
    Call ReturnAjaxComment(objComment)
    Response.End
   End If
   Call ExitError("您的评论因被怀疑为 Spam 而进入审核过程,请勿再次提交。")
  End If
 Next

  另外,使用一些SQL语句也可查询出疑似留言,具体使用方法是,使用Access打开MDB数据库,点击数据库窗口左侧的查询,然后点新建,选择向导或设计视图,然后再视图菜单中选择“SQL视图”,就可以执行自己写好的SQL语句,下面是一些常用的SQL语句。


  按数量查看留言者留言频率

select comm_homepage,count(*) from blog_Comment group by comm_homepage having count(*)>10 order by count(*) desc

  留言网站你地址为单个网页的留言(通常只有SEO会这么干)

select * from blog_Comment where comm_homepage like '*.htm*'

  留言内容包含UBB的链接

select * from blog_Comment where comm_content like '*url*'

2009年7月2日星期四

Google Insights数据错误的证据

  终于找到了Google Insights数据错误的证据了,匿名用户曾经在Google Docs上指控,使用Google Insights工具可以发现有人在6月18日新闻联播节目前在北京地区刷关键字,导致Google“搜索建议”出现不雅词汇,现在,这个指控中最大的漏洞已经被发现,从而使得这个指控出现完全自相矛盾的地方,难以自圆其说。

  发现这个漏洞的工具依旧是Google Insights,匿名用户使用Google Insights在全球范围内搜索一些和“儿子”相关的不雅词汇,例如“儿子与情人”,得到的截图如下所示。 这张截图中显示,从10号开始到17号,有人在刷这个关键词,匿名用户指控刷这些关键词的来源地址是北京。但仔细看一下,我们会发现该曲线呈现“线性”增长和下降的趋势,并且在6月18号央视新闻之后搜索量不升反降,虽然这显然违背常理,我们姑且认为这是正确的。

搜索“儿子与情人”

Google Insights搜索“儿子与情人”(全球范围)

  接着,我们使用Google Insights再次搜索这个关键词,如“儿子与情人”,但把搜索区域限制在北京地区,就会得到下面这个曲线。

搜索“儿子与情人”

Google Insights搜索“儿子与情人”(北京地区)

  我们看到,这个单独在北京地区的Google Insights搜索曲线,和全球范围Google Insights搜索“儿子与情人”的数据有极大出入,北京地区的Google Insights数据呈现完整的曲线,6月17日以前的数据为0,6月18日出现大幅增长,并达到顶峰,与Google Trends的搜索曲线基本相同,北京拥有大量网络用户,并曾被匿名用户指责刷数据,但Google Insights这两个曲线,却明白无误的表明,这个指控呈现明显的自相矛盾,根本无法自圆其说,很明显,Google Insights对于该关键字搜索的全球数据真实性存在极大的疑问。

  这里面的真相到底是什么,恐怕也会成为一个不解之谜。

2009年7月1日星期三

Firefox 3.5正式版发布

  今天,世界第二大网络浏览器Firefox最新的3.5版正式对外公布,目前已在Mozilla服务器上提供下载。Firefox 3.5基于新版JavaScript引擎TraceMonkey和Gecko 1.9.1渲染平台,相比旧版本在性能、网络兼容性、易用性方面都取得了显著的提升。

  Firefox 3.5提供了70多种语言版本,包括简体中文和繁体中文,Firfox 3.5的一项关键功能是TraceMonkey JavaScript引擎,提高了浏览器的性能和稳定性,而速度则被认为是Firefox 3.5的一大亮点,改进了Gecko排版引擎,实现了更快的解析内容渲染等。此外,该版本提供的改进了隐私数据保护工具和隐私浏览模式也受到了广泛关注。

  此外,Firefox 3.5的其他亮点还包括基于HTML 5的音频和视频播放功能、离线缓冲,以及在网站内和网站间拖放对象的API,还增强了对CSS的支持。

  点击下载:Firefox 3.5正式版(简体中文)

2009年6月30日星期二

IIS下PHP的ISAPI和FastCGI比较

  在Windows IIS 6.0下配置PHP,通常有CGI、ISAPI和FastCGI三种配置方式,这三种模式都可以在IIS 6.0下成功运行,下面我就讲一下这三种方式配置的区别和性能上的差异。

  1、CGI(通用网关接口/Common Gateway Interface)一般是可执行程序,例如EXE文件,和WEB服务器各自占据着不同的进程,而且一般一个CGI程序只能处理一个用户请求。这样,当用户请求数量非常多时,会大量占用系统的资源,如内存、CPU时间等,造成效能低下。

  2、ISAPI(Internet Server Application Program Interface)是微软提供的一套面向WEB服务的API接口,它能实现CGI提供的全部功能,并在此基础上进行了扩展,如提供了过滤器应用程序接口。ISAPI应用大多数以DLL动态库的形式使用,可以在被用户请求后执行,,在处理完一个用户请求后不会马上消失,而是继续驻留在内存中等待处理别的用户输入。此外,ISAPI的DLL应用程序和WEB服务器处于同一个进程中,效率要显著高于CGI。

  在Windows Server 2003的IIS6下配置ISAPI方式的PHP,配置方法是,在IIS的“WEB服务扩展”中,添加一个新的WEB服务扩展,程序后缀为PHP,ISAPI程序为php5isapi.dll,然后再“环境变量”-“系统变量”中增加变量名PHPRC,数值为php.ini的路径,在Internet信息服务管理器中,选择网站或应用程序的根目录,打开目录属性页(右键选择“属性”),再选择“主目录”。点击“配置”按钮,选择“映射”Tab页。点击“添加...”,在“可执行文件”设为: c:phpphp5isapi.dll,扩展名设为.php,选择“确认文件是否存在”,然后“确定”保存设置。重启服务器即可完成PHP的配置。

  3、FastCGI是可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。传统的CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性等。

  FastCGI已经集成于IIS7,也支持IIS6,在IIS6中的安装方法可参见微软的官方文档,我这里简单翻译一下。

  先点这里下载一个32位的FastCGI extension for IIS,然后将其安装,安装后的文件应该放到system32inetsrv目录下。

  之后打开system32inetsrv目录,执行下面的语句,其中c:php为你的PHP目录,可以修改为其他数值。

  cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"c:phpphp-cgi.exe"

  在Internet信息服务管理器中,选择网站或应用程序的根目录,打开目录属性页(右键选择“属性”),再选择“主目录”。点击“配置”按钮,选择“映射”Tab页。点击“添加...”,在“可执行文件”设为: c:windowssystem32inetsrvfcgiext.dll,扩展名设为.php,选择“确认文件是否存在”,然后“确定”保存设置。

  修改php.ini文件,增加如下语句:

  fastcgi.impersonate = 1
  cgi.fix_pathinfo = 1
  cgi.force_redirect = 0

  之后打开system32inetsrv目录,执行以下语句:

  cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:10000
  cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000

  最后,配置c:php目录的安全性,使得IIS_WPG组对于这个目录有读取和执行的权限。

  这时候,基于FastCGI的PHP就成功配置到IIS6上了。

  不过根据我自己的测试,FastCGI的性能比ISAPI的好像高不了多少,不知道Windows Server 2008下的IIS7是不是会好一些。这里是微软提供的基于内置FastCGI的IIS7安装PHP的方法。

2009年6月29日星期一

Google Trends和Google Insights

  Google Trends(谷歌趋势)发布过中文版,是Google推出的一款基于搜索日志分析的应用产品,通过这个工具可以知道某一搜索关键词在Google被搜索的频率和相关统计数据。Google Insights是Google推出的一个新服务,目前只有英文版,功能比Google Trends多一些,相当于Google Trends的升级版,主要用于市场分析等商业用途。

  Google Insights和Google Trends的区别:

  Google官方解释,Google Insights和Google Trends使用相同的数据来源,Google Insights主要面向那些研究人员或广告商的那类需要更多更高级功能的用户。

  因此我们知道,Google Trends和Google Insights由于使用同一数据来源,因此统计的结果理论上应该是相同的。

  继续昨天讨论的问题,对于“儿子”这个关键字的统计,Google Trends搜索“儿子”和Google Insights搜索“儿子”的统计的结果的确完全一致,统计曲线吻合,两者均将6月6日和6月19日做为两个峰值。

搜索“儿子”

Google Trends搜索“儿子”

搜索“儿子”

Google Insights搜索“儿子”

  对于其他关键字的搜索,两者的统计曲线也是完全吻合的,大家可以搜索一下自己所想得到的热门关键字来看看,例如“百度”、“QQ”等。

  但是,对于“儿子与情人”、“儿子母亲”等等类似的关键字,两者的统计却不尽相同。

  在Google Trends上看,之前搜索量很低,6月18号开始出现大量搜索,之后呈现不规则的曲线下降,后来还有反弹。

搜索“儿子与情人”

Google Trends搜索“儿子与情人”

  而Google Insights显示从11号开始出现“线性”增长趋势,到了17号达到顶峰,之后出现“线性”下降趋势,也就是说该关键词的搜索量按照固定比例增加,第一天10个,第二天20个,第三天30个,这种搜索现象非常奇特。

 

搜索“儿子与情人”

Google Insights搜索“儿子与情人”(全球范围)

搜索“儿子与情人”

Google Insights搜索“儿子与情人”(北京地区)

  我觉得,Google Insights对于“儿子与情人”等关键字的统计数据有很多不合理的地方。

  首先是搜索顶点,6月18号央视新闻之后,该关键词的搜索量不升反降,和Google Trends相矛盾,也不符合常识,因为6月18号之后肯定会有大量网民对其进行搜索验证的,从而带动这个关键词搜索量上升。

  其次是搜索曲线,对于“儿子与情人”等等关键字,Google Trends显示的是一条曲线,先暴增,然后下降,然后再增,较为符合常识,而Google Insights显示的是一条线性增长和下降的直线,也就是说,每天增加的搜索量按比例呈有规则的增长,并且按比例下降,特别是18号之后也没有任何波动,依旧呈现“线性”下降趋势,这显然不符合常识。

  最后,最为重要的一个证据是,单独以北京地区范围搜索“儿子与情人”,会发现其数据和全球范围Google Insights搜索“儿子与情人”的数据有极大出入,北京地区的Google Insights数据呈现完整的曲线,顶峰是6月18日,与Google Trends的曲线基本相同,北京拥有大量网络用户,并曾被匿名用户指责刷数据,但Google Insights这两个曲线明显呈现自相矛盾的地方,很明显,Google Insights对于该关键字搜索的全球数据真实性存在极大的疑问。

  因此可以看出,Google Insights对于上述几个关键词的统计结果有很多不合常识的地方,和实际情况以及Google Trends的数据有很多矛盾之处,相对来说Google Trends的统计数据更具准确性,更值得参考,做分析和判断应该以Google Trends的数据为准。