pbdq 发表于 2009-6-20 20:01:56

互动百科Hdwiki4.04在线发布程序

找了很长时间,居然没有人放出来,于是自己写了一个:

一、模块设置

1、文章发表地址后缀:/dwiki.php?
2、发表post数据 如下:

title=[标签:标题]&content=[标签:内容]&time=[系统时间戳]&categoryid=[分类ID]&nameid=[随机用户名]&tag=[标签:标题]&update=1&log=1

3、发表错误标识码:添加失败
4、成功标识码: 添加成功

特别说明:支持变换用户名。 但格式必须为 : admin||1 的格式







必须指定栏目

二、发布程序

以下代码,存为dwiki.php 上传到百科的根目录就可以啦。
<?
define('HDWIKI_ROOT', dirname(__FILE__));

require HDWIKI_ROOT.'/config.php';
require HDWIKI_ROOT.'/lib/string.class.php';

//$UpdateDuplicate=1; // 0--不替换 1--尾部添加 2--直接替换
//$EnableLog=0; //0--No Log 1 Log

$title=$_REQUEST["title"];
$content=$_REQUEST["content"];
//if ((trim($title)=="") or (trim($content)=="")) { echo "添加失败";exit();}
$tag=$_REQUEST["tag"];
$tag=str_replace(',',';',$tag);
if (trim($tag)=="") {$tag=$title;}
$categoryid=$_REQUEST["categoryid"];
$nameid=$_REQUEST["nameid"];
$nameid=explode("||",$nameid);
$username=$nameid;
$userid=$nameid;
$time=$_REQUEST["time"];
$letter=string::getfirstletter($title);

$UpdateDuplicate=$_REQUEST["update"];
$EnableLog=$_REQUEST["log"];

if ($UpdateDuplicate=="") { $UpdateDuplicate=0; }
if ($EnableLog=="") { $EnableLog=0; }
$EnableLog=0;
if (trim($classid)=="") { $classid=1;}


$handle1 = fopen("WikiInsertLog.txt","a+");
$handle2 = fopen("WikiUpdateLog.txt","a+");


$dstconn=mysql_connect(DB_HOST,DB_USER,DB_PW)
or die("不能连接数据库服务器: ".mysql_error());

mysql_select_db(DB_NAME,$dstconn) or die ("不能选择数据库: ".mysql_error());
mysql_query("SET NAMES 'GBK'");

$summary=MakeSummary($content,250);




$De=DocExists($title);

$did=$De;

if ($did<>-1)
{

$islocked=$De;

if (islocked==1) { exit();} //主题被锁定

switch ($UpdateDuplicate)
{
case 0: //跳过
exit();
case 1: //追加
$sql="UPDATE ".DB_TABLEPRE."doc SET tag=concat(tag,';','".$tag."'),content=concat

(content,'<p></p>','".$content."'),lastedit='".$time."',lasteditor='".$username."',lasteditorid='".$userid."',edits=edits+1,editions=editions+1,visible='1' WHERE did=".$did;
break;
case 2: //更新
$sql="UPDATE ".DB_TABLEPRE."doc SET tag='".$tag."',summary='".$summary."'

,content='".$content."',lastedit='".$time."',lasteditor='".$username."',lasteditorid='".$userid."',edits=edits+1,editions=editions+1,visible='1' WHERE did=".$did;
break;
}

mysql_query($sql);

if ($EnableLog==1)
{
fwrite($handle2,"Update SQL:".$sql."\r\n");
fwrite($handle2,"===========================================================\r\n\r\n");
}

echo "添加成功";

}
else
{

$sql="INSERT INTO ".DB_TABLEPRE."doc (cid,letter,title,tag ,summary ,content,author,authorid,time,lastedit,lasteditor,lasteditorid,visible) VALUES

('".$categoryid."','".$letter."','".$title."','".$tag."','".$summary."','".$content."','".$username."','".$userid."',".$time.",".$time.",'".$username."','".$userid."','1')";
mysql_query($sql);

if ($EnableLog==1)
{
fwrite($handle1,"Insert SQL1:".$sql."\r\n");
}

$did=mysql_insert_id();


$sql="INSERT INTO ".DB_TABLEPRE."edition (cid,did,author,authorid,time,ip,title,tag,summary,content,words,images ) VALUES

('".$categoryid."',$did,'".$username."','".$userid."','".$time."','127.0.0.1','".$title."','".$tag."','".$summary."','".$content."','".strlen($content)."','0')";
mysql_query($sql);

if ($EnableLog==1)
{
fwrite($handle1,"Insert SQL2:".$sql."\r\n");
fwrite($handle1,"===========================================================\r\n\r\n");
}

echo "添加成功";

}

fclose($handle1);
fclose($handle2);





mysql_close($dstconn);


function add_doc($doc) {

}



function DocExists($title)
{
$sql='select did,locked from wiki_doc where title="'.$title.'"';
$result=mysql_query($sql);
if ($row = mysql_fetch_array($result)) {
//$did=$row;
return $row;
}
else {
$rt=-1;
$rt=-1;
return $rt;
}

}

function GetSummary($did)
{
$sql='select content from wiki_doc where did='.$did;
$result=mysql_query($sql);
if ($row = mysql_fetch_array($result)) {
return $row;
}
else {
return "";
}
}

function MakeSummary($content,$length)
{

$content=preg_replace("/<.+?>/i","",$content);
$content=str_replace(' ','',$content);
$content=str_replace(' ','',$content);

$summary=csubstr($content,0,$length-3)."...";

return $summary;

}



function csubstr($str,$start,$len)
{
$strlen=strlen($str);
$clen=0;
$tmpstr="";
for($i=0;$i<$strlen;$i++,$clen++)
{
if ($clen>=$start+$len)
break;
if(ord(substr($str,$i,1))>0xa0)
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,2);
$i++;
}
else
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,1);
}
}
return $tmpstr;
}



?>

三、使用说明

1、参数Update :

遇见已经存在的词条,应该如何处理?
0--略过不处理1--尾部添加2--直接替换

2、参数Log:
0--做更新记录   1 不作记录发布后可以查看 baike 目录下的WikiInsertLog.txt 和 WikiUpdateLog.txt两个文件

3、随机用户名,采用如下的格式:
用户名||用户ID例如:admin||1,每行一个。

pbdq 发表于 2009-6-20 20:02:49

自己略微研究一下啊。非常简单。

crf1985 发表于 2009-6-22 09:54:03

太棒了,我想要

xicu 发表于 2009-8-20 11:17:38

请问是hdwiki的采集器吗

wangbr2003 发表于 2009-8-26 18:19:42

很好很好,谢谢啦

im120 发表于 2009-11-3 13:22:52

学习了,谢谢楼主

lcw2000 发表于 2009-11-17 21:22:05

谢谢!!!!ali84ls

yangchunxt 发表于 2009-12-3 16:43:46

你个鸟人,也不搞明确点

sxmspb 发表于 2010-2-13 05:07:38

现在4.1有了参考资料这个参数,请问怎样加上?谢谢

sxmspb 发表于 2010-2-18 21:45:06

1、参数Update :

遇见已经存在的词条,应该如何处理?
0--略过不处理1--尾部添加2--直接替换

4.1版本 无法自动添加到词条尾部。
页: [1] 2
查看完整版本: 互动百科Hdwiki4.04在线发布程序