You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
368 lines
9.6 KiB
368 lines
9.6 KiB
<?php
|
|
//发表评论
|
|
function AddPl($username,$password,$nomember,$key,$saytext,$id,$classid,$repid,$add){
|
|
global $empire,$dbtbpre,$public_r,$class_r,$level_r;
|
|
//验证本时间允许操作
|
|
eCheckTimeCloseDo('pl');
|
|
//验证IP
|
|
eCheckAccessDoIp('pl');
|
|
$id=(int)$id;
|
|
$repid=(int)$repid;
|
|
$classid=(int)$classid;
|
|
//验证码
|
|
$keyvname='checkplkey';
|
|
if($public_r['plkey_ok'])
|
|
{
|
|
ecmsCheckShowKey($keyvname,$key,1);
|
|
}
|
|
$username=RepPostVar($username);
|
|
$password=RepPostVar($password);
|
|
$muserid=(int)getcvar('mluserid');
|
|
$musername=RepPostVar(getcvar('mlusername'));
|
|
$mgroupid=(int)getcvar('mlgroupid');
|
|
$mrnd=RepPostVar(getcvar('mlrnd'));
|
|
$ur=array();
|
|
$cklgr=array();
|
|
if($muserid)//已登陆
|
|
{
|
|
$cklgr=qCheckLoginAuthstr();
|
|
if($cklgr['islogin'])
|
|
{
|
|
$ur=$empire->fetch1("select ".eReturnSelectMemberF('userid,checked,groupid,isern')." from ".eReturnMemberTable()." where ".egetmf('userid')."='$muserid' and ".egetmf('username')."='$musername' and ".egetmf('rnd')."='$mrnd' limit 1");
|
|
if(empty($ur['userid']))
|
|
{
|
|
printerror("NotSingleLogin",'',1);
|
|
}
|
|
if($ur['checked']==0)
|
|
{
|
|
printerror("NotCheckedUser",'',1);
|
|
}
|
|
$username=$musername;
|
|
$muserid=$ur['userid'];
|
|
$mgroupid=$ur['groupid'];
|
|
}
|
|
else
|
|
{
|
|
$muserid=0;
|
|
$mgroupid=0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(empty($nomember))//非匿名
|
|
{
|
|
if(!$username||!$password)
|
|
{
|
|
printerror("FailPassword","history.go(-1)",1);
|
|
}
|
|
$ur=$empire->fetch1("select ".eReturnSelectMemberF('userid,salt,password,checked,groupid,isern')." from ".eReturnMemberTable()." where ".egetmf('username')."='$username' limit 1");
|
|
if(empty($ur['userid']))
|
|
{
|
|
printerror("FailPassword","history.go(-1)",1);
|
|
}
|
|
if(!eDoCkMemberPw($password,$ur['password'],$ur['salt']))
|
|
{
|
|
printerror("FailPassword","history.go(-1)",1);
|
|
}
|
|
if($ur['checked']==0)
|
|
{
|
|
printerror("NotCheckedUser",'',1);
|
|
}
|
|
$muserid=$ur['userid'];
|
|
$mgroupid=$ur['groupid'];
|
|
}
|
|
else
|
|
{
|
|
$muserid=0;
|
|
$mgroupid=0;
|
|
}
|
|
}
|
|
if($public_r['plgroupid'])
|
|
{
|
|
if(!$muserid)
|
|
{
|
|
printerror("GuestNotToPl","history.go(-1)",1);
|
|
}
|
|
if($level_r[$mgroupid][level]<$level_r[$public_r['plgroupid']][level])
|
|
{
|
|
printerror("NotLevelToPl","history.go(-1)",1);
|
|
}
|
|
}
|
|
//实名验证
|
|
eCheckHaveTruename('pl',$ur['userid'],$ur['username'],$ur['isern'],$ur['checked'],0);
|
|
|
|
//专题
|
|
$doaction=$add['doaction'];
|
|
if($doaction=='dozt')
|
|
{
|
|
if(!trim($saytext)||!$classid)
|
|
{
|
|
printerror("EmptyPl","history.go(-1)",1);
|
|
}
|
|
//是否关闭评论
|
|
$r=$empire->fetch1("select ztid,closepl,checkpl,restb from {$dbtbpre}enewszt where ztid='$classid'");
|
|
if(!$r['ztid'])
|
|
{
|
|
printerror("ErrorUrl","history.go(-1)",1);
|
|
}
|
|
if($r['closepl'])
|
|
{
|
|
printerror("CloseClassPl","history.go(-1)",1);
|
|
}
|
|
//审核
|
|
if($r['checkpl'])
|
|
{$checked=1;}
|
|
else
|
|
{$checked=0;}
|
|
$restb=$r['restb'];
|
|
$pubid='-'.$classid;
|
|
$id=0;
|
|
$pagefunr=eReturnRewritePlUrl($classid,$id,'dozt',0,0,1);
|
|
$returl=$pagefunr['pageurl'];
|
|
}
|
|
else//信息
|
|
{
|
|
if(!trim($saytext)||!$id||!$classid)
|
|
{
|
|
printerror("EmptyPl","history.go(-1)",1);
|
|
}
|
|
//表存在
|
|
if(empty($class_r[$classid][tbname]))
|
|
{
|
|
printerror("ErrorUrl","history.go(-1)",1);
|
|
}
|
|
//是否关闭评论
|
|
$r=$empire->fetch1("select classid,stb,restb from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where id='$id' limit 1");
|
|
if(!$r['classid']||$r['classid']!=$classid)
|
|
{
|
|
printerror("ErrorUrl","history.go(-1)",1);
|
|
}
|
|
if($class_r[$r[classid]][openpl])
|
|
{
|
|
printerror("CloseClassPl","history.go(-1)",1);
|
|
}
|
|
//单信息关闭评论
|
|
$pubid=ReturnInfoPubid($classid,$id);
|
|
$finfor=$empire->fetch1("select closepl from {$dbtbpre}ecms_".$class_r[$classid][tbname]."_data_".$r['stb']." where id='$id' limit 1");
|
|
if($finfor['closepl'])
|
|
{
|
|
printerror("CloseInfoPl","history.go(-1)",1);
|
|
}
|
|
//审核
|
|
if($class_r[$classid][checkpl])
|
|
{$checked=1;}
|
|
else
|
|
{$checked=0;}
|
|
$restb=$r['restb'];
|
|
$pagefunr=eReturnRewritePlUrl($classid,$id,'doinfo',0,0,1);
|
|
$returl=$pagefunr['pageurl'];
|
|
}
|
|
//设置参数
|
|
$plsetr=$empire->fetch1("select pltime,plsize,plincludesize,plclosewords,plmustf,plf,plmaxfloor,plquotetemp from {$dbtbpre}enewspl_set limit 1");
|
|
if(strlen($saytext)>$plsetr['plsize'])
|
|
{
|
|
$GLOBALS['setplsize']=$plsetr['plsize'];
|
|
printerror("PlSizeTobig","history.go(-1)",1);
|
|
}
|
|
$time=time();
|
|
$saytime=$time;
|
|
$pltime=getcvar('lastpltime');
|
|
if($pltime)
|
|
{
|
|
if($time-$pltime<$plsetr['pltime'])
|
|
{
|
|
$GLOBALS['setpltime']=$plsetr['pltime'];
|
|
printerror("PlOutTime","history.go(-1)",1);
|
|
}
|
|
}
|
|
$sayip=egetip();
|
|
$eipport=egetipport();
|
|
$username=str_replace("\r\n","",$username);
|
|
$username=dgdb_tosave($username);
|
|
$saytext=nl2br(RepFieldtextNbsp(RepPostStr($saytext)));
|
|
if($repid)
|
|
{
|
|
$saytext=RepPlTextQuote($repid,$saytext,$plsetr,$restb);
|
|
CkPlQuoteFloor($plsetr['plmaxfloor'],$saytext);//验证楼层
|
|
}
|
|
//过滤字符
|
|
$saytext=ReplacePlWord($plsetr['plclosewords'],$saytext);
|
|
if($level_r[$mgroupid]['plchecked'])
|
|
{
|
|
$checked=0;
|
|
}
|
|
$ret_r=ReturnPlAddF($add,$plsetr,0);
|
|
//主表
|
|
$sql=$empire->query("insert into {$dbtbpre}enewspl_".$restb."(pubid,username,sayip,saytime,id,classid,checked,zcnum,fdnum,userid,isgood,saytext,eipport".$ret_r['fields'].") values('$pubid','".$username."','$sayip','$saytime','$id','$classid','$checked',0,0,'$muserid',0,'".addslashes($saytext)."','$eipport'".$ret_r['values'].");");
|
|
$plid=$empire->lastid();
|
|
if($doaction!='dozt')
|
|
{
|
|
//信息表加1
|
|
$usql=$empire->query("update {$dbtbpre}ecms_".$class_r[$classid][tbname]." set plnum=plnum+1 where id='$id' limit 1");
|
|
}
|
|
//更新新评论数
|
|
DoUpdateAddDataNum('pl',$restb,1);
|
|
//设置最后发表时间
|
|
$set1=esetcookie("lastpltime",time(),time()+3600*24);
|
|
ecmsEmptyShowKey($keyvname);//清空验证码
|
|
if($sql)
|
|
{
|
|
$reurl=DoingReturnUrl($returl,$_POST['ecmsfrom']);
|
|
printerror("AddPlSuccess",$reurl,1);
|
|
}
|
|
else
|
|
{printerror("DbError","history.go(-1)",1);}
|
|
}
|
|
|
|
//替换回复
|
|
function RepPlTextQuote($repid,$saytext,$pr,$restb){
|
|
global $public_r,$empire,$dbtbpre,$fun_r;
|
|
$quotetemp=stripSlashes($pr['plquotetemp']);
|
|
$r=$empire->fetch1("select userid,username,saytime,saytext from {$dbtbpre}enewspl_".$restb." where plid='$repid'");
|
|
if(empty($r['username']))
|
|
{
|
|
$r['username']=$fun_r['nomember'];
|
|
}
|
|
if($r['userid'])
|
|
{
|
|
$r['username']="<a href=\"$public_r[newsurl]e/space/?userid=$r[userid]\" target=\"_blank\">$r[username]</a>";
|
|
}
|
|
$quotetemp=str_replace('[!--plid--]',$repid,$quotetemp);
|
|
$quotetemp=str_replace('[!--pltime--]',date('Y-m-d H:i:s',$r['saytime']),$quotetemp);
|
|
$quotetemp=str_replace('[!--username--]',$r['username'],$quotetemp);
|
|
$quotetemp=str_replace('[!--pltext--]',$r['saytext'],$quotetemp);
|
|
$restr=$quotetemp.$saytext;
|
|
return $restr;
|
|
}
|
|
|
|
//去掉原引用
|
|
function RepYPlQuote($text){
|
|
$preg_str="/<div (.+?)<\/div>/is";
|
|
$text=preg_replace($preg_str,"",$text);
|
|
return $text;
|
|
}
|
|
|
|
//验证引用楼数
|
|
function CkPlQuoteFloor($plmaxfloor,$saytext){
|
|
if(!$plmaxfloor)
|
|
{
|
|
return '';
|
|
}
|
|
$fr=explode('<div',$saytext);
|
|
$fcount=count($fr)-1;
|
|
if($fcount>$plmaxfloor)
|
|
{
|
|
printerror('PlOutMaxFloor','history.go(-1)',1);
|
|
}
|
|
}
|
|
|
|
//禁用字符
|
|
function ReplacePlWord($plclosewords,$text){
|
|
global $empire,$dbtbpre;
|
|
if(empty($text))
|
|
{
|
|
return $text;
|
|
}
|
|
toCheckCloseWord($text,$plclosewords,'HavePlCloseWords');
|
|
return $text;
|
|
}
|
|
|
|
//返回字段
|
|
function ReturnPlAddF($add,$pr,$ecms=0){
|
|
global $empire,$dbtbpre;
|
|
$fr=explode(',',$pr['plf']);
|
|
$count=count($fr)-1;
|
|
$ret_r['fields']='';
|
|
$ret_r['values']='';
|
|
for($i=1;$i<$count;$i++)
|
|
{
|
|
$f=$fr[$i];
|
|
$fval=RepPostStr($add[$f]);
|
|
//必填
|
|
if(strstr($pr[plmustf],','.$f.','))
|
|
{
|
|
if(!trim($fval))
|
|
{
|
|
$chfr=$empire->fetch1("select fname from {$dbtbpre}enewsplf where f='$f' limit 1");
|
|
$GLOBALS['msgmustf']=$chfr['fname'];
|
|
printerror('EmptyPlMustF','',1);
|
|
}
|
|
}
|
|
$fval=nl2br(RepFieldtextNbsp($fval));
|
|
$ret_r['fields'].=",".$f;
|
|
$ret_r['values'].=",'".addslashes($fval)."'";
|
|
}
|
|
return $ret_r;
|
|
}
|
|
|
|
//支持/反对评论
|
|
function DoForPl($add){
|
|
global $empire,$dbtbpre,$class_r;
|
|
$classid=(int)$add['classid'];
|
|
$id=(int)$add['id'];
|
|
$plid=(int)$add['plid'];
|
|
$dopl=(int)$add['dopl'];
|
|
$doajax=(int)$add['doajax'];
|
|
//专题
|
|
$doaction=$add['doaction'];
|
|
if($doaction=='dozt')
|
|
{
|
|
if(!$classid||!$plid)
|
|
{
|
|
$doajax==1?ajax_printerror('','','ErrorUrl',1):printerror('ErrorUrl','',1);
|
|
}
|
|
$infor=$empire->fetch1("select ztid,restb from {$dbtbpre}enewszt where ztid='$classid'");
|
|
if(!$infor['ztid'])
|
|
{
|
|
$doajax==1?ajax_printerror('','','ErrorUrl',1):printerror('ErrorUrl','',1);
|
|
}
|
|
$pubid='-'.$classid;
|
|
}
|
|
else//信息
|
|
{
|
|
if(!$classid||!$id||!$plid||!$class_r[$classid][tbname])
|
|
{
|
|
$doajax==1?ajax_printerror('','','ErrorUrl',1):printerror('ErrorUrl','',1);
|
|
}
|
|
$infor=$empire->fetch1("select classid,restb from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where id='$id' limit 1");
|
|
if(!$infor['classid'])
|
|
{
|
|
$doajax==1?ajax_printerror('','','ErrorUrl',1):printerror('ErrorUrl','',1);
|
|
}
|
|
$pubid=ReturnInfoPubid($classid,$id);
|
|
}
|
|
//连续发表
|
|
if(getcvar('lastforplid'.$plid))
|
|
{
|
|
$doajax==1?ajax_printerror('','','ReDoForPl',1):printerror('ReDoForPl','',1);
|
|
}
|
|
if($dopl==1)
|
|
{
|
|
$f='zcnum';
|
|
$msg='DoForPlGSuccess';
|
|
}
|
|
else
|
|
{
|
|
$f='fdnum';
|
|
$msg='DoForPlBSuccess';
|
|
}
|
|
$sql=$empire->query("update {$dbtbpre}enewspl_".$infor['restb']." set ".$f."=".$f."+1 where plid='$plid' and pubid='$pubid'");
|
|
if($sql)
|
|
{
|
|
esetcookie('lastforplid'.$plid,$plid,time()+30*24*3600); //最后发布
|
|
if($doajax==1)
|
|
{
|
|
$nr=$empire->fetch1("select ".$f." from {$dbtbpre}enewspl_".$infor['restb']." where plid='$plid' and pubid='$pubid'");
|
|
ajax_printerror($nr[$f],RepPostVar($add['ajaxarea']),$msg,1);
|
|
}
|
|
else
|
|
{
|
|
printerror($msg,EcmsGetReturnUrl(),1);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$doajax==1?ajax_printerror('','','DbError',1):printerror('DbError','',1);
|
|
}
|
|
}
|
|
?>
|