PHP 트로이 목마 백도어 연구
七字铺
七字铺 2021-03-26 09:34:51
0
3
918

잘 몰라서 소스코드를 얻었는데 웹쉘 백도어가 있다는 걸 발견했습니다. 어떤 코드인지는 알 수가 없네요. 조언 부탁드립니다.

       비어 있음($cids[ 0]))) { $array['list'][]=$val; $tablename=$thischannel['csetting']['articletable']; $array['테이블이름']=$테이블이름; } }또 다른 { if($thischannel['ckind']==2 && isset($thischannel['csetting']['articletable']) && $thischannel['csetting']['articletable']==$tablename && (in_array($ val['cid'],$cids) || 비어 있음($cids[0]))) { $array['list'][]=$val; } } $sonarray=alist_getson($val['cid'],$tablename,$cids,0); foreach($sonarray['list'] as $key1=>$val1) { $array['list'][]=$val1; } } } if($first) { $cids=배열(); $sql=''; foreach($array['list'] as $key=>$val) { if($key==0) { $sql.=" 및 (cid='".$val['cid']."'"; }elseif($key==(count($array['list'])-1)) { $sql.=" 또는 cid='".$val['cid']."'"; }또 다른 { $sql.=" 또는 cid='".$val['cid']."'"; } } if(count($array['list'])>0) {$array['sql']=$sql.')';} if(isset($array['list'][0])) { $array['default']=$array['list'][0]['cid']; }또 다른 { $배열['기본값']=0; } $배열을 반환합니다. }또 다른 { $배열을 반환합니다. } } 함수 aurl($value,$rowurl,$rowurltime,$domain='') { $thissetting=getchannelcache($value['cid']); if(빈($domain)) { if(isset($thissetting['csetting']['channel_domain']) && !empty($thissetting['csetting']['channel_domain'])) { $domains=explode(';',$thissetting['csetting']['channel_domain']); $도메인=$도메인[0]; foreach($domains as $key) { if($key==서버_이름()) { $도메인=널; 부서지다; } } } } if(비어 있음($rowurl)) { if(empty($thissetting['csetting']['channel_articleurl'])) { 반품 ''; } $rowurl=$thissetting['csetting']['channel_articleurl']; }if(!empty($where['domain'])) { $domains=explode(';',$where['도메인']); $where['도메인']=$도메인[0]; foreach($domains를 $domain으로) { if($domain==서버_이름()) { $where['도메인']=null; 부서지다; } } } unset($thissetting); $rowurls=explode(';',$rowurl); $rowurl=$rowurls[0]; preg_match_all("/{(.*)}|[(.*)]|((.*))/isU",$rowurl,$match); if(count($match[0])>0) { foreach($match[0] as $key=>$val) { if($rowurltime>0 && ($val=='(y)' || $val=='(m)' || $val=='(d)')) { isset($value['y']) ? 1==1 : $value['y']=date('Y',$rowurltime); isset($value['m']) ? 1==1 : $value['m']=date('m',$rowurltime); isset($value['d']) ? 1==1 : $value['d']=date('d',$rowurltime); } if(isset($value[$match[1][$key]])) { if(is_numeric($value[$match[1][$key]])) {$rowurl=str_replace($val,$value[$match[1][$key]],$rowurl);}else {$ rowurl=str_replace($val,urlencode($value[$match[1][$key]]),$rowurl);} } if(isset($value[$match[2][$key]])) { if(is_numeric($value[$match[2][$key]])) {$rowurl=str_replace($val,$value[$match[2][$key]],$rowurl); }else {$rowurl=str_replace($val,urlencode($value[$match[2][$key]]),$rowurl); } } if(isset($value[$match[3][$key]])) { if(is_numeric($value[$match[3][$key]])) {$rowurl=str_replace($val,$value[$match[3][$key]],$rowurl); }else {$rowurl=str_replace($val,urlencode($value[$match[3][$key]]),$rowurl); } } } } if(!empty($domain)) { $domain='//'.$domain.server_port(); } if(UrlRewrite) { $rowurl=$domain.$rowurl; }또 다른 { $rowurl=$domain.SystemDir.IndexFile.$rowurl; } $rowurl을 반환합니다. } 함수 all_list($where=array(),$pagesize=10,$cid='') { if(!isset($where['cache'])) {$where['cache']=3600;} $cachehash=md5(json_encode($where).$pagesize.json_encode($cid)); $res =cacheget($cachehash,$where['cache'],'alist'); if ($res) {return json_decode($res,1);} if(비어 있음($cid)) { $cid=배열(); $allchannels=getchannelscache(); foreach($allchannels를 $channel로) { if($channel['ckind']==2) { $cid[]=$채널['cid']; } } }elseif(is_numeric($cid)) { $cid=배열($cid); } $articles=배열(); foreach($cid를 $thiscid로) { $where['cid']=$thiscid; $where['pagesize']=$pagesize; $where['모두']=0; $thisarticles=알리스트($where); foreach($thisarticles['list'] as $thisarticle) { $articles[]=$this기사; } } $포스트타임=배열(); foreach($articles를 $article로) { $posttime[] = $article['posttime']; }$orderarticles=array_multisort($posttime, SORT_DESC, $articles); $returnarticles=배열(); $i=0; foreach($articles as $key=>$val) { $i++; $val['key']=$i; $returnarticles[]=$val; if($key==($pagesize-1)) { 부서지다; } } if(SiteCache && $where['cache']>0) { 캐시셋($cachehash,json_encode($returnarticles),$where['cache'],'alist'); } $returnarticles를 반환합니다. } 함수 ainsert($article,$setting='') { if(!is_array($article)) {false를 반환;} if(비어 있음($setting)) {$setting=array();} if(!isset($setting['cid']) && !isset($article['cid'])) { if(정의됨('cid')) { $setting['cid']=cid; }또 다른 { '설정 없음 cid'를 반환합니다. } } if(!isset($setting['addslashes'])) {$setting['addslashes']=1;} if(!isset($setting['default'])) {$setting['default']=1;} if(!isset($setting['check'])) {$setting['check']=1;} if(!isset($setting['cid'])) {$setting['cid']=$article['cid'];} if(isset($article['cid'])) {unset($article['cid']);} $channel = getchannelcache($setting['cid']); if(!$channel) {'채널이 존재하지 않음'을 반환합니다.} $setting['cid']=$채널['cid']; $csetting=$채널['csetting']; if(!isset($setting['tablename']) || empty($setting['tablename'])) {$setting['tablename']=$csetting['articletable'];} if(count($article)==0) { '기사 열 위치'를 반환합니다. } foreach($article as $key=>$val) { $article[$key]=addslashes_str($article[$key],$setting['addslashes']); } if($setting['check']) { $columns = $GLOBALS['db'] -> all("".tableex('moudle')에서 mname,mkind,ifonly,strdefault,msetting을 선택하세요." 여기서 cid=".$setting['cid']." morder로 순서 asc;"); foreach($columns는 $thiscolumn으로) { $key=$thiscolumn['mname']; if(!isset($article[$key]) && $setting['default']) { $article[$key]=$thiscolumn['strdefault']; if($thiscolumn['mkind']==9) { if($thiscolumn['strdefault']=='지금') { $article[$key]=시간(); }또 다른{ $thiscolumn['strdefault']=@strtotime($thiscolumn['strdefault']); if($thiscolumn['strdefault']) { $article[$key]=$thiscolumn['strdefault']; }또 다른 { $article[$key]=0; } } } }if(isset($article[$key])) { $thismsetting=json_decode($thiscolumn['msetting'],1); $thismsetting['ifonly']=$thiscolumn['ifonly']; $thismsetting['테이블 이름']=$setting['테이블 이름']; $thismoudlevalue=$article[$key]; if($thismsetting['filterhtml']==1) { require_once(SystemRoot.AdminDir.'/input/kses.php'); $thismoudlevalue= kses($thismoudlevalue); }elseif($thismsetting['filterhtml']==2) { $thismoudlevalue=htmlspecialchars($thismoudlevalue); } $acheck=acheck($key,$thismoudlevalue,$setting['cid'],$thismsetting); if($acheck==='error') {$key를 반환합니다.' 오류';} if($acheck==='short') {$key를 반환합니다.' 짧은';} if($acheck==='long') {$key를 반환합니다.' 긴';} if($acheck==='exist') {$key를 반환합니다.' 존재하다';} $article[$key]=$thismoudlevalue; } } } $article['cid']=$설정['cid']; if(!isset($article['posttime'])) {$article['posttime']=time();} if(!isset($article['adminuid'])) {$article['adminuid']=0;} $result = $GLOBALS['db'] -> insert($setting['테이블이름'],$article); if($result) {$result를 반환;}else {false를 반환;} } 함수 aedit($article,$setting='') { if(!isset($article['id']) || !is_numeric($article['id']) || $article['id']<1) { 'ID 오류'를 반환합니다. } $id=$article['id']; unset($article['id']); if(!is_array($article)) {false를 반환;} if(비어 있음($setting)) {$setting=array();} if(!isset($setting['cid']) && !isset($article['cid'])) { if(정의됨('cid')) { $setting['cid']=cid; }또 다른 { '설정 없음 cid'를 반환합니다. } } if(!isset($setting['addslashes'])) {$setting['addslashes']=1;} if(!isset($setting['check'])) {$setting['check']=1;} if(!isset($setting['cid'])) {$setting['cid']=$article['cid'];} if(isset($article['cid'])) {unset($article['cid']);} $channel = getchannelcache($setting['cid']); if(!$channel) {'채널이 존재하지 않음'을 반환합니다.} $setting['cid']=$채널['cid']; $csetting=$채널['csetting']; if(!isset($setting['tablename']) || empty($setting['tablename'])) {$setting['tablename']=$csetting['articletable'];} if(count($article)==0) { '기사 열 위치'를 반환합니다. } foreach($article as $key=>$val) { $article[$key]=addslashes_str($article[$key],$setting['addslashes']); }if($setting['check']) { $columns = $GLOBALS['db'] -> all("".tableex('moudle')에서 mname,ifonly,strdefault,msetting을 선택하세요." 여기서 cid=".$setting['cid']." order by morder asc;"); foreach($columns는 $thiscolumn으로) { $key=$thiscolumn['mname']; if(isset($article[$key])) { $thismsetting=json_decode($thiscolumn['msetting'],1); $thismsetting['ifonly']=$thiscolumn['ifonly']; $thismsetting['테이블 이름']=$setting['테이블 이름']; $thismoudlevalue=$article[$key]; if($thismsetting['filterhtml']==1) { require_once(SystemRoot.AdminDir.'/input/kses.php'); $thismoudlevalue= kses($thismoudlevalue); }elseif($thismsetting['filterhtml']==2) { $thismoudlevalue=htmlspecialchars($thismoudlevalue); } $acheck=acheck($key,$thismoudlevalue,$setting['cid'],$thismsetting,$id); if($acheck==='error') {$key를 반환합니다.' 오류';} if($acheck==='short') {$key를 반환합니다.' 짧은';} if($acheck==='long') {$key를 반환합니다.' 긴';} if($acheck==='exist') {$key를 반환합니다.' 존재하다';} $article[$key]=$thismoudlevalue; } } } $result = $GLOBALS['db'] -> update($setting['tablename'],"id='$id'",$article); if($result) {true를 반환;}else {false를 반환;} } 함수 adel($cid,$id,$tablename='') { if(비어 있음($cid) && 비어 있음($tablename)) { if(정의됨('cid')) { $cid=cid; }또 다른 { 'cid 없음'을 반환합니다. } } if(empty($id)) {'id 없음'을 반환;}else {$id=intval($id);} if(비어 있음($tablename)) { $channel = getchannelcache($cid); if(!$channel) {'채널이 존재하지 않음'을 반환합니다.} $cid=$채널['cid']; $csetting=$채널['csetting']; $tablename=$csetting['articletable']; } $query = $GLOBALS['db'] -> query("`$tablename`에서 삭제 WHERE id='$id'"); if($쿼리) { true를 반환합니다. }또 다른 { false를 반환합니다. } } 함수 acheck($mname,$value,$cid='',$thismsetting='',$id=0) { if($cid=='') { if(정의됨('cid')) { $cid=cid; }또 다른 { 'cid 없음'을 반환합니다. } }if($thismsetting=='') { $column = $GLOBALS['db'] -> one("".tableex('moudle')에서 mname,ifonly,msetting을 선택합니다." 여기서 cid='".$cid."' 및 mname='".$mname."' 한도 1;"); $thismsetting=json_decode($column['msetting'],1); $thismsetting['ifonly']=$column['ifonly']; } if(isset($thismsetting['regular']) && strlen($thismsetting['regular'])>3 && !empty($value)) { if(!preg_match($thismsetting['regular'],$value)){ '오류'를 반환합니다. } } if(isset($thismsetting['lenmin']) && is_numeric($thismsetting['lenmin']) && $thismsetting['lenmin']>0) { if(strlen($value)<$thismsetting['lenmin']) { '짧음'을 반환합니다. } } if(isset($thismsetting['lenmax']) && is_numeric($thismsetting['lenmax']) && $thismsetting['lenmax']>0) { if(strlen($value)>$thismsetting['lenmax']) { '긴'을 반환합니다. } } if($thismsetting['ifonly']==1) { if(!isset($thismsetting['tablename'])) { $channel = getchannelcache($cid); $thismsetting['tablename']=$channel['csetting']['articletable']; } if($id>0) { $pagecount = $GLOBALS['db'] -> fetchcount("SELECT id FROM ".$thismsetting['tablename']." 여기서 $mname='$value' and cid='".$cid."' 및 id<>'$id' limit 1;") ; }또 다른 { $pagecount = $GLOBALS['db'] -> fetchcount("SELECT id FROM ".$thismsetting['tablename']." 여기서 $mname='$value' and cid='".$cid."' limit 1;"); } if($pagecount) { '존재'를 반환합니다. } } true를 반환합니다. } 함수 addslashes_str($val,$addslashes) { if($addslashes) { dbstr($val)을 반환합니다. }또 다른 { $val을 반환합니다. } } 함수 페이지 목록($alist,$url='',$returnarray=0) { if(!isset($alist['pagecount']) || !isset($alist['page'])) { false를 반환합니다. } $recordcount=$alist['pagecount']; $pagesize=$alist['페이지 크기']; $curpage=$alist['페이지']; $pages=isset($alist['showpages']) ? $alist['showpages'] :3 ; if(empty($url) && isset($alist['pageurl']) && !empty($alist['pageurl'])) { $url=$alist['pageurl']; if(isset($alist['cid'])) { $url=str_replace('(cid)',$alist['cid'],$url); } }또 다른 { if(UrlRewrite) { $url=$_SERVER['REQUEST_URI']; }또 다른 { $url=$_SERVER['SCRIPT_NAME'].$_SERVER['REQUEST_URI']; } if(stripos($url,'page=')===false) { if(stripos($url,'?')===false) { $url=$url."?page=(페이지)"; }또 다른 { $url=$url."&page=(페이지)"; } } $url = preg_replace("/page=([0-9]+)/is", "page=(페이지)", $url); } if($pagesize<1) { $페이지 크기=1; } $pagesarray=배열(); $totalpage = max(ceil($recordcount/$pagesize),1); if($curpage<0 || $curpage>$totalpage) $curpage=1; $outhtml = ""; $pageno = $curpage; if($pageno<0 || $pageno>$totalpage) $pageno=1; if($pageno==1) { $pagesarray[]=array('url'=>str_replace('(페이지)','1',$url),'title'=>'<<','class'=>'disabled '); }또 다른 { $pagesarray[]=array('url'=>str_replace('(페이지)','1',$url),'title'=>'<<','class'=>'' ); } if($페이지>$total페이지){ $시작페이지=1; $endpage=min($startpage+$pages,$totalpage); }또 다른{ $startpage=max($totalpage-$pages,1); $startpage=min($startpage,$curpage); $endpage=min($startpage+$pages,$totalpage); } if($pageno>1){ $pagesarray[]=array('url'=>str_replace('(페이지)',$pageno-1,$url),'title'=>'<','class'=>'') ; }또 다른{ $pagesarray[]=array('url'=>str_replace('(페이지)',1,$url),'title'=>'<','class'=>'disabled'); } for($i=$startpage;$i<=$endpage;$i++) { if($curpage==$i){ $pagesarray[]=array('url'=>str_replace('(페이지)',$i,$url),'title'=>$i,'class'=>'on'); }또 다른{ $pagesarray[]=array('url'=>str_replace('(페이지)',$i,$url),'title'=>$i,'class'=>''); } } if($pageno<$totalpage){ $pagesarray[]=array('url'=>str_replace('(페이지)',$pageno+1,$url),'title'=>'>','class'=>'') ; }또 다른{ $pagesarray[]=array('url'=>str_replace('(페이지)',$totalpage,$url),'title'=>'>','class'=>'disabled'); } if($pageno==$totalpage) { $pagesarray[]=array('url'=>str_replace('(페이지)',$totalpage,$url),'title'=>'>>','class'=>'disabled' ); }또 다른 { $pagesarray[]=array('url'=>str_replace('(페이지)',$totalpage,$url),'title'=>'>>','class'=>'') ; } if($returnarray) { $pagesarray를 반환합니다. }또 다른 { $outhtml=''; foreach($pagesarray as $val) { if(!empty($val['class'])) { $val['class']=' class="'.$val['class'].'"'; } $outhtml.=''.$val['title'] .''; } } 에코 $outhtml; } 함수 탐색($where=0) { $채널배열=배열(); if(!is_array($where)) { $thiscid=$where; $어디=배열(); $where['cid']=$thiscid; } if(!isset($where['cid'])) { $where['cid']=0; } $cid=$where['cid']; if(!isset($where['oncid'])) { if(정의됨('cid')) { $where['oncid']=cid; }또 다른 { $where['oncid']=0; } //당신의 모든 ID에서 꺼내기 } if(!isset($where['onstyle'])) { $where['onstyle']=' class="on"'; } if(!isset($where['bro'])) {$where['bro']=1;} if(!isset($where['papa'])) {$where['papa']=1;} if($where['cid']==0) { if(!isset($where['homepage'])) { $where['homepage']['name']='홈페이지'; $where['homepage']['url']=gethomeurl(); $where['homepage']['target']=''; }또 다른 { if(is_array($where['homepage'])) { if(!isset($where['homepage']['name'])) { $where['homepage']['name']='홈페이지'; } if(!isset($where['homepage']['url'])) { $where['homepage']['url']=gethomeurl(); } if(!isset($where['homepage']['target'])) { $where['homepage']['target']=''; } } } if(is_array($where['homepage'])) { $channelarray[]=array('cid'=>'0','fid'=>'0','name'=>$where['homepage']['name'],'url'= >$where['homepage']['url'],'target'=>$where['homepage']['target']); } } $allchannels=getchannelscache(); $채널=배열(); foreach($allchannels as $val) { if($val['ifshownav']==1) { $채널[]=$val; } } $카운트=0; $myfid=0; $papaid=0; foreach($channels를 $channel로) { if(is_numeric($cid)) { if($channel['cid']==$cid) { $myfid=$채널['fid']; if($cid>0 && $where['papa']==1) { $channelarray['papa']=$myfid;//显示父栏目 $papaid=$myfid; } } if($channel['fid']==$cid) { $카운트=1; $channelarray[]=$채널; } }elseif(is_array($cid)) { if(in_array($channel['cid'],$cid)) { $카운트=1; $channelarray[]=$채널; } } }if($count>0 && is_numeric($cid) && $cid>0 && $where['papa']==1) { $channelarray['papa']=$cid; } if($count==0) { $noonpapaid=$myfid; }또 다른 { $noonpapaid=false; } if(isset($channelarray['papa']) && $channelarray['papa']>0) { foreach($channels를 $channel로) { if($channel['cid']==$channelarray['papa']) { $channelarray['papa']=$채널; } } }또 다른 { unset($channelarray['papa']); } if(isset($where['bro']) && $where['bro']==1 && $count==0 && is_numeric($cid)) { //显示兄弟栏目 if(isset($myfid) && $myfid>0) { foreach($channels as $key=>$channel) { if($channel['fid']==$myfid) {$channelarray[]=$channel;} } }elseif(isset($myfid) && $myfid==0) { foreach($channels as $key=>$channel) { if($channel['cid']==$cid) {$channelarray[]=$channel;} } } } $onarray=배열(); if(정의됨('cid')) { $thiscid=cid; 동안(1<2) { $ifin=거짓; foreach($channels를 $channel로) { if($channel['cid']==$thiscid && $channel['cid']!=$noonpapaid) { $onarray[]=$채널['cid']; $thiscid=$channel['fid']; $ifin=참; 부서지다; } } if($ifin===false || $thiscid==0) { 부서지다; } } } $returnarray=배열(); $returnstr=''; if(!isset($where['html'])) { $where['html']='{이름}'; } if(isset($GLOBALS['nav'][$cid])) { if(is_array($GLOBALS['nav'][$cid])) { $channelarray=$GLOBALS['nav'][$cid]; }elseif(function_exists($GLOBALS['nav'][$cid])){ $channelarray=$GLOBALS['nav'][$cid]($cid); } } foreach($channelarray as $key=>$channel) { $thisstr=$where['html']; if(!isset($channel['onstyle']) || empty($channel['onstyle'])) { if(in_array($channel['cid'],$onarray)) { $channel['onstyle']=$where['onstyle']; }또 다른 { $channel['onstyle']=''; } } if(정의됨('cid') && cid==0 && $channel['cid']==0) {//홈페이지 $channel['onstyle']=$where['onstyle']; } $returnarray[]=$채널; if(!isset($where['returnarray']) || $where['returnarray']==0) { $thisstr=str_replace('{url}',@$channel['url'],$thisstr); $thisstr=str_replace('{target}',@$channel['target'],$thisstr); $thisstr=str_replace('{name}',@$channel['name'],$thisstr); $thisstr=str_replace('{onstyle}',@$channel['onstyle'],$thisstr); $returnstr.=$thisstr."rn"; } } if(!isset($where['returnarray']) || $where['returnarray']==0) { $returnstr 반환; }또 다른{ $returnarray를 반환합니다. } } 함수 cnav($cid='',$returnarray=false,$linktag=' > ',$homepage=SystemDir) { if(비어 있음($cid)) { if(정의됨('cid')){ $cid=cid; }또 다른 { $cid=0; } } $channels=getchannelscache(); $breadcrumb=''; $breadcrumbarray=배열(); 동안(1<2) { $this채널=거짓; foreach($channels를 $channel로) { if($channel['cid']==$cid) { $thischannel=$채널; } } if($thischannel==false) { if($breadcrumb=='') { $breadcrumb='유료'; }또 다른 { $breadcrumb='首页'.$linktag.$breadcrumb; } if($returnarray) { array_reverse($breadcrumbarray)를 반환합니다. }또 다른 { $breadcrumb을 반환합니다. } }또 다른 { if($breadcrumb=='') { $breadcrumb=''.$thischannel['name'].''; }또 다른 { $breadcrumb=''.$thischannel['name'].''.$linktag.$breadcrumb; } $breadcrumbarray[]=$this채널; $cid=$this채널['fid']; } } } 함수 getallchannelscache() { if(isset($GLOBALS['allchannelscache'])) { $GLOBALS['allchannelscache']를 반환합니다. } $channelcachekeyname='모든채널스카시'; $channelcache=cacheget($channelcachekeyname,604800,'채널'); if($channelcache) { $channels=json_decode($channelcache,1); }또 다른 { $channelslist=$GLOBALS['db']->all("SELECT cid,fid,ifshownav,cname,ckind,cvalue,newwindow,csetting FROM ".tableex('channel')." 여기서 ckind<>'4 ' corder로 주문 asc"); if($channelslist) { $채널=배열(); foreach($channelslist는 $val로 표시됨) { 설정 해제($thischannel); $thischannel=배열(); $thischannel['cid']=$val['cid']; $thischannel['fid']=$val['fid']; $thischannel['ckind']=$val['ckind']; $thischannel['ifshownav']=$val['ifshownav']; $thischannel['name']=$val['cname']; if($val['newwindow']==1) { $thischannel['target']=' target="_blank" '; }또 다른 { $thischannel['target']=''; } $thischannel['url']=getchannelurl($val); if(empty($thischannel['url'])) { $thischannel['url']='#'; $thischannel['target']=''; }$channels[]=$this채널; } 캐시셋($channelcachekeyname,json_encode($channels),604800,'채널'); }또 다른 { 배열()을 반환합니다. } } $GLOBALS['allchannelscache']=$채널; $channel을 반환합니다. } 함수 getchannelscache() { if(isset($GLOBALS['channelscache'])) { $GLOBALS['channelscache']를 반환합니다. } $channelcachekeyname='채널스카시'; $channelcache=cacheget($channelcachekeyname,604800,'채널'); if($channelcache) { $channels=json_decode($channelcache,1); }또 다른 { $channelslist=$GLOBALS['db']->all("SELECT cid,fid,ifshownav,cname,ckind,cvalue,newwindow,csetting FROM ".tableex('channel')." 여기서 ckind<>'4 ' 및 ifshow=1 order by corder asc"); if($channelslist) { $채널=배열(); foreach($channelslist는 $val로 표시됨) { 설정 해제($thischannel); $thischannel=배열(); $thischannel['cid']=$val['cid']; $thischannel['fid']=$val['fid']; $thischannel['ckind']=$val['ckind']; $thischannel['ifshownav']=$val['ifshownav']; $thischannel['name']=$val['cname']; if($val['newwindow']==1) { $thischannel['target']=' target="_blank" '; }또 다른 { $thischannel['target']=''; } $thischannel['url']=getchannelurl($val); if(empty($thischannel['url'])) { $thischannel['url']='#'; $thischannel['target']=''; } $channels[]=$this채널; } 캐시셋($channelcachekeyname,json_encode($channels),604800,'채널'); }또 다른 { 배열()을 반환합니다. } } $GLOBALS['channelscache']=$채널; $channel을 반환합니다. } 함수 getchannelcache($cid) { if(isset($GLOBALS['channelcache'][$cid])) { $GLOBALS['channelcache'][$cid] 반환; } $channelcachekeyname='channelcache_'.$cid; $channelcache=cacheget($channelcachekeyname,604800,'채널'); if($channelcache) { $channelcache=json_decode($channelcache,1); }또 다른 { if(is_numeric($cid)) { $channelcache=$GLOBALS['db']->one("SELECT * FROM ".tableex('channel')." 여기서 cid='$cid' 한도 1"); }또 다른 { $channelcache=$GLOBALS['db']->one("SELECT * FROM ".tableex('channel')." 여기서 cname='$cid' limit 1"); } if($channelcache) { $channelcache['csetting']=json_decode($channelcache['csetting'],1); 캐시셋($channelcachekeyname,json_encode($channelcache),604800,'채널'); }또 다른 { false를 반환합니다. } } $GLOBALS['channelcache'][$cid]=$channelcache; $channelcache를 반환합니다. }함수 getchannelurl($cid) { if(!is_array($cid)) { $cid=getchannelcache($cid); if(!$cid) {false를 반환;} $csetting=$cid['csetting']; }또 다른 { $csetting=json_decode($cid['csetting'],1); } $채널=$cid; if($channel['ckind']==3 || $channel['ckind']==4 || $channel['ckind']==5) { $channel['cvalue'] 반환; }elseif($channel['ckind']==1 || $channel['ckind']==2) { if(isset($csetting['template']) && empty($csetting['template'])) { 반품 ''; } } if(!isset($csetting['channel_url'])) {반환 '';} $channelurls=explode(';',$csetting['channel_url']); $channelurl=str_replace("(cid)",$cid['cid'],$channelurls[0]); if(빈($channelurl)) { 반품 ''; } if(!isset($csetting['channel_domain']) || empty($csetting['channel_domain'])) { $csetting['channel_domain']=SystemDomain; } if(isset($csetting['channel_domain']) && $csetting['channel_domain']<>'') { $channel_domains=explode(';',$csetting['채널_도메인']); $csetting['채널_도메인']=$채널_도메인[0]; foreach($channel_domains as $channel_domain) { if(stripos($channel_domain,'*')===false) { $csetting['채널_도메인']=$채널_도메인; 부서지다; } } foreach($channel_domains as $channel_domain) { if(서버_이름()==$channel_domain) { $csetting['채널_도메인']=''; 부서지다; } } } if(UrlRewrite) { if(empty($csetting['channel_domain'])) { $thisurl=$channelurl; }또 다른 { $thisurl='//'.$csetting['channel_domain'].server_port().$channelurl; } }또 다른 { if(empty($csetting['channel_domain'])) { $thisurl=SystemDir.IndexFile.$channelurl; }또 다른 { $thisurl='//'.$csetting['channel_domain'].server_port().SystemDir.IndexFile.$channelurl; } } $thisurl을 반환합니다. } 함수 gethomeurl() { if(isset($GLOBALS['homeurl'])) { $GLOBALS['homeurl'] 반환; } if(!UrlRewrite) { $indexfile=인덱스파일; }또 다른 { $indexfile=''; } $domains=explode(';',SystemDomain); foreach($domains를 $domain으로) { $domain=트림($domain); if($domain==서버_이름()) { $GLOBALS['homeurl']=SystemDir.$indexfile; $GLOBALS['homeurl'] 반환; } } if(SystemDomain=='') {$GLOBALS['homeurl']=SystemDir.$indexfile;Return&
七字铺
七字铺

모든 응답 (2)
欧阳

본 파일은 모두 메소드이며 데이터베이스를 사용해야 합니다. 어떻게 생각하나요?

그러면 한 번에 한 가지 방법만 시도해 볼 수 있습니다. 데이터베이스를 가져오고 데이터베이스가 삽입되었는지 확인합니다.

  • 회신하다 네, 아직 초보 단계입니다. 조언해 주셔서 감사합니다.
    七字铺 작가 2021-03-28 14:20:30
七字铺

글이 너무 길어서 재수정이 안되는 것 같습니다. 여기서는 네트워크 디스크를 이용하여 파일을 업로드합니다.

다운로드: https://wwa.lanzous.com/ iTtK9nbjdja 비밀번호: f2p0

    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!