文章来源:落伍者论坛 非我原创,实际情况我不了解,如有错误,与本人无关,谢绝评论
在2006年的某个晚上,Q上有位朋友发短信给我说动网php论坛提供下载了,不觉心中一动,在好奇心的驱使下立刻下载了他们的源程序。总以为等待这么漫长之后,dvphp能带给我们一些惊喜。

但我们应该相信这么一个真理,期待越高,你的失望就会越大。我花了一个晚上的时间研究他们的代码文件,终于发现迟迟未能发布php版本的原因了!那就是他们的技术人员根本就不具备自主开发的能力,其中放在第一位宣传的全文搜索竟然低级的离谱,没有分词技术,也没有全文搜索的技术突破,纵观他们的php版本的程序代码,到处都充满了抄袭借鉴其他系统的痕迹,甚至有些痕迹还没有被完全的抹去,其中最可笑的是作为开源免费的系统竟然抄袭同行 phpwind 的模版技术与N多代码,而且还是赤裸裸的,简直不敢相信,可能他们招的只是普通的程序员,估计连他们自己都没发现。

或许在互联网技术时代我们不应该说抄袭,准确的来说是借鉴。但是如果一个程序员能“借鉴”同行的程序到这种程度上,那就应该是“人不能无耻到这个地步”了。

1,动网把phpwind的模版体系全搬过去了!

先让我们打开 phpwind 的global.php 文件:

function PrintEot($template,$EXT="htm"){
//Copyright (c) 2003-06 PHPWind
global $tplpath;
if(!$template) $template=N;
$path=R_P."template/$tplpath/$template.$EXT";
!file_exists($path) && $path=R_P."template/wind/$template.$EXT";
return $path;
}
Copyright (c) 2003-06 PHPWind

发现这个函数里注释关于版权信息的一句话, phpwind 注释极少,更别说在以算法函数里注释,相信这句话所要表达的意思可能是这个算法是着重受法律保护的版权声明。

继续看 global.php 文件中 footer() 函数的模版内容输出算法
$output = str_replace(array('',''),array('',''),ob_get_contents());
ob_end_clean();
$db_obstart == 1 ? ob_start('ob_gzhandler') : ob_start();
echo $output;
flush;
exit;


再来看动网的模版体系算法,打开 inc/dv_clsmain.php文件,我们会找到模版的体系算法如下:
function printout($template,$ext="tpl.php"){
global $fsetting;
if(!$template) $template=N;
$path=ROOT_PATH."templates/$fsetting[styletpl]/{$fsetting[styletpl_prev]}$template.$ext";
//!file_exists($path) && $path=ROOT_PATH."templates/default/$template.$ext";
return $path;
}


继续看 inc/dv_clsmain.php文件中 footer() 函数的模版内容输出算法
$output = str_replace(array('',''),array('',''),ob_get_contents());
ob_end_clean();
$db_obstart == 1 ? ob_start('ob_gzhandler') : ob_start();
echo $output;
$db->close();
ob_end_flush();
exit;


模版体系跟 phpwind 的 一摸一样,这套体系最早见于 ofstar ,后来 ofstar 的 开发者去开发phpwind了,03年的时候国内外的模版系统只有 smaty 与 phplib 是完全开放的,国内除 ofstar 与phpwind 是自己创立的一套模版体系外,其他的几乎都是选用 smaty , 但是做过系统开发的都知道模版体系是 Modle-View-Controller(模型-视图-控制器) 设计模式中极其重要的 View 层。难道 dvbbs 得到了 phpwind 的版权许可? [s:1]

继续让人震惊的还在下面, 让我们继续。

2,让我们打开phpwind程序中的require/postfunc.php文件,会发现下面一段代码
function cvipfrom($ip){
global $ipa0;
$d_ip=explode(".",$ip);
$f_n=file_exists(R_P."ipdata/$d_ip[0].txt") ? R_P."ipdata/$d_ip[0].txt" : R_P.'ipdata/0.txt';
$ip=implode('.',d_ip($d_ip));
$db=fopen($f_n,"rb");
flock($db,LOCK_SH);
$d=fread($db,filesize($f_n));
$s_ip="\n$d_ip[0].$d_ip[1].$d_ip[2]";
if($s=strpos($d,$s_ip)){
!($f=s_ip($db,$s,$ip)) && list($l_d,$ff)=nset($db);
}else{
$s_ip="\n$d_ip[0].$d_ip[1]";
if($s=strpos($d,$s_ip)){
!($f=s_ip($db,$s,$ip)) && list($l_d,$ff)=nset($db);
}elseif($s=strpos($d,"\n$d_ip[0]") && $f_n==R_P.'ipdata/0.txt'){
$s_ip="\n$d_ip[0]";
!($f=s_ip($db,$s,$ip)) && list($l_d,$ff)=nset($db);
}else{
$f='Unknown';
}
}
if(empty($f) && $s!==false){
while(ereg("^$s_ip","\n".$l_d)!==false){
if($ipa0==1 || $f=s_ip($db,$s,$ip,$l_d)) break;
list($l_d,$cff)=nset($db);
$cff && $ff=$cff;
}
}
fclose($db);
return $f ? $f : $ff;
}
function s_ip($db,$s,$ip,$l_d=''){
global $ipa0;
if(!$l_d){
fseek($db,$s+1,SEEK_SET);
$l_d=fgets($db,100);
}
$ip_a=explode("\t",$l_d);
$ip_a[0]=implode('.',d_ip(explode('.',$ip_a[0])));
$ip_a[1]=implode('.',d_ip(explode('.',$ip_a[1])));
if($ip if ($ip>=$ip_a[0] && $ip}
function nset($db){
$l_d=fgets($db,100);
$ip_a=explode("\t",$l_d);
return array($l_d,$ip_a[2].$ip_a[3]);
}
function d_ip($d_ip){
for($i=0; $i $d_ip[$i] = sprintf("%03d", $d_ip[$i]);
}
return $d_ip;
}


让我们来再来打开动网的inc/dv_clsmain.php文件,这个时候你会看到惊人的一段代码:
function ipfrom($ip){
global $ipa0;
$d_ip=explode(".",$ip);
$f_n=file_exists(ROOT_PATH."cache/ipdata/$d_ip[0].txt") ? ROOT_PATH."cache/ipdata/$d_ip[0].txt" : ROOT_PATH.'cache/ipdata/0.txt';
$ip=implode('.',d_ip($d_ip));
$db=fopen($f_n,"rb");
flock($db,LOCK_SH);
$d=fread($db,filesize($f_n));
$s_ip="\n$d_ip[0].$d_ip[1].$d_ip[2]";
if($s=strpos($d,$s_ip)){
!($f=s_ip($db,$s,$ip)) && list($l_d,$ff)=nset($db);
}else{
$s_ip="\n$d_ip[0].$d_ip[1]";
if($s=strpos($d,$s_ip)){
!($f=s_ip($db,$s,$ip)) && list($l_d,$ff)=nset($db);
}elseif($s=strpos($d,"\n$d_ip[0]") && $f_n==ROOT_PATH.'cache/ipdata/0.txt'){
$s_ip="\n$d_ip[0]";
!($f=s_ip($db,$s,$ip)) && list($l_d,$ff)=nset($db);
}else{
$f='Unknown';
}
}
if(empty($f) && $s!==false){
while(ereg("^$s_ip","\n".$l_d)!==false){
if($ipa0==1 || $f=s_ip($db,$s,$ip,$l_d)) break;
list($l_d,$cff)=nset($db);
$cff && $ff=$cff;
}
}
fclose($db);
return $f ? $f : $ff;
}
function s_ip($db,$s,$ip,$l_d=''){
global $ipa0;
if(!$l_d){
fseek($db,$s+1,SEEK_SET);
$l_d=fgets($db,100);
}
$ip_a=explode("\t",$l_d);
$ip_a[0]=implode('.',d_ip(explode('.',$ip_a[0])));
$ip_a[1]=implode('.',d_ip(explode('.',$ip_a[1])));
if($ip if ($ip>=$ip_a[0] && $ip}
function nset($db){
$l_d=fgets($db,100);
$ip_a=explode("\t",$l_d);
return array($l_d,$ip_a[2].$ip_a[3]);
}
function d_ip($d_ip){
for($i=0; $i $d_ip[$i] = sprintf("%03d", $d_ip[$i]);
}
return $d_ip;
}


这段代码里边真正是100%的雷同,可谓是抄到极点了。动网的程序员究竟有什么水平大家都知道啦。
如果到这个时候大家还不相信动网抄袭了phpwind的一些核心技术的话,还要一个铁证如山的证据!!大家跟我来!
请大家先下载一个动网的php论坛程序,保证在2006年8月31日之前下载的,因为我不知道我这篇文章贴出去之后他们会不会改!
好了,我们打开动网的cache\ipdata\218.txt文件,然后搜索ofstar,大家看到了什么?!没错,赤裸裸的抄袭完整的呈现在大家面前:

218.72.42.0 218.72.42.255 浙江理工大学 ofstar开发者毕业学校
ofstar和phpwind的关系相信谁都知道!由此看来,动网的php论坛真的是抄袭phpwind论坛!! 还有更多的就不一一陈述啦!

原文地址见:http://www.im286.com/viewthread.php?tid=1593677

Back