2, // 템플릿 사용 // 1 list, 2 read, 4 write, 8 upload, 16 cate 'useBoard3' =>26 ); require($_SERVER['DOCUMENT_ROOT'].'/hk_gamsungdb/sinc/header.php'); //page_security('', $_SERVER['HTTP_HOST']); $thisPath = dirname(__FILE__) .'/'; // 마지막이 '/'으로 끝나야함 //======================================================= // Ready... (변수 초기화 및 넘어온값 필터링) //======================================================= // 1. 넘어온값 체크 $_GET['uid'] = (int)$_GET['uid']; // 2. 기본 URL QueryString $qs_basic = 'mode=&limitno=&limitrows=&time=&utf8='; if($_GET['getinfo']!='cont') $qs_basic .= '&pern=&row_pern=&page_pern=&html_type=&html_skin=&skin='; $qs_basic .= '&data_pn='.$_GET['data_pn']; $qs_basic .= '&cate_sort='.$_GET['cate_sort']; $qs_basic = href_qs($qs_basic); // 해당값 초기화 // 3. $dbinfo 가져오기 include_once($thisPath.'config.php'); // - redirect 유무 if($dbinfo['redirect']) go_url($dbinfo['redirect']); // - 업로드 기본 디렉토리 설정 // 2015-05-17 디렉토리를 등록자 사이트로 강제 설정. 윤상근 변경 $folder_link_recorder = "../../../recorder.gamsung.org"; // 2015-05-17 업로드 폴더를 등록자사이트 폴더로 강제 지정해줌. 윤상근 추가 // - 업로드 기본 디렉토리 설정 if(trim($dbinfo['upload_dir'])) $dbinfo['upload_dir'] = $folder_link_recorder.'/hk_gamsungdb/sboard3/upload/'.$dbinfo['table']; else $dbinfo['upload_dir'] = $folder_link_recorder.'/hk_gamsungdb/sboard3/upload/'.$dbinfo['table']; // 4. SQL문 where절 $sql_where = $dbinfo['sql_where']; // init if(!$sql_where) $sql_where= ' 1 '; // 값이 없다면 //==================== // 4. 해당 게시물 읽음 //==================== $sql = "SELECT * FROM `$dbinfo[table]` WHERE uid='$_GET[uid]' and $sql_where LIMIT 1"; $list=db_arrayone($sql) or back('데이터가 없습니다.'); // passwd_read가 있으면 if($list['bid']>0 and $list['passwd_read']) { if(!$_POST['passwd']) { back('비밀번호를 입력하여 주십시오','delete.php?'.$_SERVER['QUERY_STRING'] . "&passwdgoto=".urlencode($_SERVER['REQUEST_URI'])); } if($list['passwd_read']!=crypt($_POST['passwd'])) { back('비밀번호를 정확히 입력하여 주십시오','delete.php?'.$_SERVER['QUERY_STRING'] . "&passwdgoto=".urlencode($_SERVER['REQUEST_URI'])); } } //====================== // 4. 카테고리 정보 구함 //====================== if($dbinfo['enable_cate']=='Y') { // 카테고리정보구함 (dbinfo, cateuid, sw_catelist, string_view_firsttotal) // return : highcate[], samecate[], subcate[], subsubcate[], subcateuid[], catelist $sw_catelist = CATELIST_VIEW | CATELIST_VIEW_TOPCATE_TITLE; if(strlen($_GET['sc_string'])) $sw_catelist |= CATELIST_NOVIEW_NODATA; $cateinfo=b3CateInfo_cate($dbinfo, $list['cateuid'], $sw_catelist,'(전체)'); // 카테고리 정보가 없다면 if(!$cateinfo['uid']) { $cateinfo['title'] = '(전체)'; } else { // redirect 유무 if($cateinfo['redirect']) go_url($cateinfo['redirect']); // 카테고리 정보에 따른 dbinfo 변수 변경 if($dbinfo['enable_cateinfo']=='Y') { if($cateinfo['bid']>0) $dbinfo['cid'] = $cateinfo['bid']; // 카테고리 관리자도 모든 권한을 if( $cateinfo['skin'] and is_file($thisPath.'skin/'.$cateinfo['skin'].'/read.html') ) $dbinfo['skin'] = $cateinfo['skin']; if($cateinfo['html_type']) { $dbinfo['html_type'] = $cateinfo['html_type']; if( $cateinfo['html_skin'] and is_file($thisPath.'skin/'.$_GET['skin'].'/list.html') ) $dbinfo['html_skin'] = $cateinfo['html_skin']; $dbinfo['html_head'] = $cateinfo['html_head']; $dbinfo['html_tail'] = $cateinfo['html_tail']; } // 나머지 dbinfo값 일괄 변경 $aTmp = array('orderby' , 'pern' , 'row_pern' , 'page_pern' , 'cut_length' , 'enable_memo' , 'enable_vote' , 'enable_hidelevel' , 'enable_listreply' , 'enable_getinfo' , 'enable_getinfoskins', 'include_listphp', 'priv_list', 'priv_write', 'priv_modify', 'priv_memowrite' , 'priv_reply' , 'priv_read', 'priv_download' , 'priv_delete'); foreach($aTmp as $tmp_field) { if($cateinfo[$tmp_field]!==NULL) $dbinfo[$tmp_field] = $cateinfo[$tmp_field]; } } } // end if } // end if //=================== // 6. 넘어온 값에 따라 $dbinfo값 변경 if($dbinfo['enable_getinfo']=='Y') { // skin 변경 if( isset($_GET['skin']) and preg_match('/^[_a-z0-9]+$/',$_GET['skin']) and is_file($thisPath.'skin/'.$_GET['skin'].'/read.html') ) { if($dbinfo['enable_getinfoskins']) { // 특정 스킨만 get값으로 사용할 수 있도록 했다면 $aTmp = explode(',',$dbinfo['enable_getinfoskins']); foreach($aTmp as $v) { if($v == $_GET['skin']) $dbinfo['skin'] = $_GET['skin']; } } else $dbinfo['skin'] = $_GET['skin']; } // 사이트 해더테일 변경 if(isset($_GET['html_type'])) $dbinfo['html_type'] = $_GET['html_type']; if( isset($_GET['html_skin']) and preg_match('/^[_a-z0-9]+$/',$_GET['html_skin']) and is_file($thisPath.'skin/'.$_GET['skin'].'/list.html') ) $dbinfo['html_skin'] = $_GET['html_skin']; } //==================== // 5. 해당 게시물 처리 //==================== // 인증 체크(자기 글이면 무조건 보기) // - 게시물에 priv값이 있으면, 해당 권한으로 변경 if($list['priv_read']) $dbinfo['priv_read']=$list['priv_read']; if(!privAuth($dbinfo, 'priv_read',1)) { if(!$list['bid'] or $list['bid']!=$_SESSION['seUid'] or 'nobid'==substr($dbinfo['priv_read'],0,5) ) { // 답변글이고 부모글이 자신이면 읽을 수 있도록 if(strlen($list['re'])==0) { back('조회할 권한이 없습니다.'); } else { // ( re='' or re='a' or re='ac' ) 만들기, re='aca"일때 $sql_where_privRead = " num='$list[num]' and (re='' "; for($i=0;$i 표출양상 --> 결과 클릭에 따른 내용 보여주기 if($_GET['data_detail']==1) { $list['data_txt'] = $list['data1_txt']; } elseif($_GET['data_detail']==2) { $list['data_txt'] = $list['data2_txt']; } elseif($_GET['data_detail']==3) { $list['data_txt'] = $list['data3_txt']; } else{ $list['data_txt'] = $list['data1_txt']; } */ // 윤상근추가 2015.04.11 칠정 반응형 디비 작업.. if ($list['cateuid']==1){ $list['data_7_han']="희(喜)"; } elseif ($list['cateuid']==2){ $list['data_7_han']="노(怒)"; } elseif ($list['cateuid']==3){ $list['data_7_han']="애(哀)"; } elseif ($list['cateuid']==4){ $list['data_7_han']="구(懼)"; } elseif ($list['cateuid']==5){ $list['data_7_han']="애(愛)"; } elseif ($list['cateuid']==6){ $list['data_7_han']="오(惡)"; } elseif ($list['cateuid']==7){ $list['data_7_han']="욕(欲)"; } if ($list['data_pn']){ if ($list['data_pn']=="p"){ $list['data_pn_han']="긍정적 감성"; } elseif ($list['data_pn']=="n"){ $list['data_pn_han']="부정적 감성"; } } if ($list['ebook']){ $ebook= explode("/", $list['ebook']); $ebook[0] = trim($ebook[0]); $ebook[1] = trim($ebook[1]); if($ebook[0] == "7"){ $list['ebook_1'] = $ebook[0]; $list['ebook_2'] = $ebook[1]; $list['ebook_h'] = "[감성총서 제".$ebook[0]."권]우리시대의 슬픔, ".$ebook[1]."페이지"; } elseif($ebook[0] == "8"){ $list['ebook_1'] = $ebook[0]; $list['ebook_2'] = $ebook[1]; $list['ebook_h'] = "[감성총서 제".$ebook[0]."권] 우리시대의 분노, ".$ebook[1]."페이지"; } elseif($ebook[0] == "9"){ $list['ebook_1'] = $ebook[0]; $list['ebook_2'] = $ebook[1]; $list['ebook_h'] = "[감성총서 제".$ebook[0]."권] 우리시대의 사랑, ".$ebook[1]."페이지"; } else{ $list['ebook']=""; } } // Search 단어 색깔 표시 - 리스트에 있던것을 리드파일에도 넣음 2015-05-16 윤상근추가 $_GET['sc_column']="title,content,content2,data4,data5,data6"; // 컬럼 선택 안해도 이러한 필드에서 검색되도록 - 윤상근 2015-05-16 추가 if($_GET['sc_string'] and $_GET['sc_column']) { $aTemp = explode(',',$_GET['sc_column']); for($k=0;$k\\0', $list['content']); $list[$aTemp[$k]] = preg_replace("/$_GET[sc_string]/", '\\0', $list[$aTemp[$k]]); } } // 업로드파일 처리 if($dbinfo['enable_upload']!='N' and $list['upfiles']) { $upfiles=unserialize($list['upfiles']); if(!is_array($upfiles)) { // 시리얼화된 변수가 아닌 파일 명으로 되어 있을 경우 $upfiles['upfile']['name']=$list['upfiles']; $upfiles['upfile']['size']=(int)$list['upfiles_totalsize']; } $thumbimagesize=explode('x',$dbinfo['imagesize_read']); if((int)$thumbimagesize[0]==0) $thumbimagesize[0]=300; //if((int)$thumbimagesize[1]==0) $thumbimagesize[1]=300; // height는 설정않함 foreach($upfiles as $key => $value) { if($value['name']) { // $filename구함(절대디렉토리포함) $filename=$dbinfo['upload_dir'].'/'.(int)$list['bid'].'/'.$value['name']; if( !is_file($filename) ) { // 한단계 위에 파일이 있다면 그것으로.. $filename=$dbinfo['upload_dir']. '/' . $value['name']; if( !is_file($filename) ) { unset($upfiles[$key]); continue; } // end if } // end if $url_link_recorder = "http://recorder.gamsung.org"; // 2015-05-17 링크를 강제로 등록자사이트로 지정해줌. 윤상근 추가 $upfiles[$key]['href']= $url_link_recorder.'/hk_gamsungdb/sboard3/download.php?'.href_qs("uid=$list[uid]&upfile=$key",$qs_basic); // 이미지 파일이면 // $upfiles[$key][imagesize]를 width='xxx'(height는 설정 않함)로 저장 if( is_array($tmp_imagesize=@getimagesize($filename)) ) { $upfiles[$key]['imagesize'] = ' width="' . (($tmp_imagesize[0] > $thumbimagesize[0]) ? $thumbimagesize[0] : $tmp_imagesize[0]) . '"'; if(strlen($dbinfo['imagesize_read'])>0 and $tmp_imagesize[2]==4) { // 플래쉬(swf)이면 $appendContent .= "
"; } else { // 본문에 그림파일 삽입 if( strlen($dbinfo['imagesize_read'])>0 and $dbinfo['enable_upload']!='image' ) $appendContent .= "
" ; } } elseif( strlen($dbinfo['imagesize_read'])>0 and preg_match('/avi|asx|wax|m3u|wpl|wvx|mpeg|mpg|mp2|mp3|wav|au|wmv|asf|wm|wma|mid/',substr(basename($value['name']), strrpos(basename($value['name']), '.') + 1)) ) { // movie 파일이면 $appendContent .= " " ; } else { if($dbinfo['enable_upload']=='image') unset($upfiles[$key]); } } // end if } // end foreach $list['upfiles']=$upfiles; unset($upfiles); // 이미지등을 본문 앞에 붙임 if($appendContent) $list['content'] = '
' . $appendContent . '

' . $list['content']; } // end if 업로드파일 처리 // 6. URL Link... $href['listdb'] = $dbinfo['thisUrl'].'list.php?db='.$dbinfo['db']; $href['reply'] = $dbinfo['thisUrl'].'reply.php?'.href_qs('mode=reply',$qs_basic); $href['list'] = $dbinfo['thisUrl'].'list.php?'.href_qs('uid=',$qs_basic); $href['write'] = $dbinfo['thisUrl'].'write.php?'.href_qs('mode=write',$qs_basic); $href['modify'] = $dbinfo['thisUrl'].'modify.php?'.href_qs("mode=modify&uid=$list[uid]&num=$list[num]",$qs_basic); $href['delete'] = $dbinfo['thisUrl'].'ok.php?'.href_qs('mode=delete&uid='.$list['uid'],$qs_basic); $href['download'] = $dbinfo['thisUrl'].'download.php?'.href_qs('uid='.$list['uid'],$qs_basic); //===== // misc //===== // 관리자이거나 로그거부 ip라면 로그를 남기지 않음 if( $_SESSION['seClass']!='root' or !$dbinfo['ipnolog'] or !in_array($_SERVER['REMOTE_ADDR'],explode(',',$dbinfo['ipnolog'])) ) { // 조회수 증가 $sql = "UPDATE LOW_PRIORITY $dbinfo[table] SET hit=hit +1, hitip='$_SERVER[REMOTE_ADDR]' WHERE uid='$_GET[uid]' and hitip<>'$_SERVER[REMOTE_ADDR]' and (bid<>'$_SESSION[seUid]' or 1>'$_SESSION[seUid]') LIMIT 1"; db_query($sql); // 유저별 읽은 유무 로그화(readlog 테이블에) if( $dbinfo['enable_readlog']=='Y' ) { if(!isset($_COOKIE["$dbinfo[table]_$_GET[uid]"]) ) { if($_SERVER['HTTP_REFERER']) { $http_referer_host = parse_url($_SERVER['HTTP_REFERER']); $http_referer_host = $http_referer_host['host']; } if($_SESSION['seUserid']) { // 로그인 회원이면 $sql = "insert into $dbinfo[table]_readlog set pid='{$list[uid]}', bid='$_SESSION[seUid]', userid='$_SESSION[seUserid]',ip='$_SERVER[REMOTE_ADDR]', http_referer_host = '$http_referer_host', http_referer='".preg_replace('/PHPSESSID=[0-9a-z]+/','',$_SERVER['HTTP_REFERER']).'\',rdate=UNIX_TIMESTAMP()'; db_query($sql); setcookie("$dbinfo[table]_$_GET[uid]", 'log',time()+300); // 로그인이후에 로그가 남긴 이후에 다시 않남게 } else { // 비로그인이면 $sql = "insert into $dbinfo[table]_readlog set pid='{$list[uid]}', ip='$_SERVER[REMOTE_ADDR]', http_referer_host = '$http_referer_host', http_referer='".preg_replace('/PHPSESSID=[0-9a-z]+/','',$_SERVER['HTTP_REFERER']).'\',rdate=UNIX_TIMESTAMP()'; db_query($sql); setcookie("$dbinfo[table]_$_GET[uid]", @mysql_insert_id(),time()+300); // 5분간 재방문시 로그 않남게 } } elseif( $_COOKIE["$dbinfo[table]_$_GET[uid]"]!='log' and $_SESSION['seUserid'] ) { // 로그인이후에 다시 방문이라면 $sql = "update $dbinfo[table]_readlog set bid='$_SESSION[seUid]', userid='$_SESSION[seUserid]' where uid='".$_COOKIE["$dbinfo[table]_$_GET[uid]"]."' and ip='$_SERVER[REMOTE_ADDR]'"; db_query($sql); setcookie("$dbinfo[table]_$_GET[uid]", 'log',time()+300); // 로그인이후에 로그가 남긴 이후에 다시 않남게 } // readlog를 content에 삽입 if( privAuth($dbinfo, 'priv_readlog') or ($list['bid'] and $list['bid']==$_SESSION['seUid']) ) { // 글쓴이라면, 로그 안남기고, 본문에데가 읽은 사람 리스트화함 $sql = "select * from $dbinfo[table]_readlog where pid='{$list[uid]}'"; $rs_readlog=db_query($sql); if(db_count($rs_readlog)) { $tmp_readlog = '


<> 읽은 사람 리스트
'; while($rows=db_array($rs_readlog)) { $tmp_readlog .= date('Y-m-d [H:i]',$rows['rdate']) . "- $rows[userid]
\n"; } // end while $list['content'] .= $tmp_readlog . '
'; } db_free($rs_readlog); } } // end if } //======================================================= // Start... (DB 작업 및 display) //======================================================= // 템플릿 기반 웹 페이지 제작 $skinfile=basename(__FILE__,'.php').'.html'; if( !is_file('skin/'.$dbinfo['skin'].'/'.$skinfile) ) $dbinfo['skin']='basic'; $tpl = new phemplate('skin/'.$dbinfo['skin']); // 템플릿 시작 $tpl->set_file('html',$skinfile,TPL_BLOCK); // 템플릿 마무리 할당 $tpl->tie_var('list' ,$list); // 게시물 할당 $tpl->tie_var('get' ,$_GET); // get값으로 넘어온것들 $tpl->set_var('get.cateuid.'.$_GET[cateuid] ,true); $tpl->tie_var('dbinfo' ,$dbinfo); // dbinfo 정보 변수 $tpl->tie_var('cateinfo' ,$cateinfo);// cateinfo 정보 변수 $tpl->tie_var('href' ,$href); // 블럭 : 카테고리(상위, 동일, 서브) 생성 if($dbinfo['enable_cate']=='Y') { if(is_array($cateinfo['highcate'])) { foreach($cateinfo['highcate'] as $key => $value) { $tpl->set_var('href.highcate',$dbinfo['thisUrl'].'list.php?'.href_qs('cateuid='.$key,$qs_basic)); $tpl->set_var('highcate.uid',$key); $tpl->set_var('highcate.title',$value); $tpl->process('HIGHCATE','highcate',TPL_OPTIONAL|TPL_APPEND); $tpl->set_var('blockloop',true); } $tpl->drop_var('blockloop'); } // end if if(is_array($cateinfo['samecate'])) { foreach($cateinfo['samecate'] as $key => $value) { if($key==$cateinfo['uid']) $tpl->set_var('samecate.selected',' selected '); else $tpl->set_var('samecate.selected',''); $tpl->set_var('href.samecate',$dbinfo['thisUrl'].'list.php?'.href_qs('cateuid='.$key,$qs_basic)); $tpl->set_var('samecate.uid',$key); $tpl->set_var('samecate.title',$value); $tpl->process('SAMECATE','samecate',TPL_OPTIONAL|TPL_APPEND); $tpl->set_var('blockloop',true); } $tpl->drop_var('blockloop'); } // end if if(is_array($cateinfo['subcate'])) { foreach($cateinfo['subcate'] as $key => $value) { // subsubcate... $tpl->drop_var('SUBSUBCATE'); if(is_array($cateinfo['subsubcate'][$key])) { $blockloop = $tpl->get_var('blockloop'); $tpl->drop_var('blockloop'); foreach($cateinfo['subsubcate'][$key] as $subkey => $subvalue) { $tpl->set_var('href.subsubcate',$dbinfo['thisUrl'].'list.php?'.href_qs('cateuid='.$subkey,$qs_basic)); $tpl->set_var('subsubcate.uid',$subkey); $tpl->set_var('subsubcate.title',$subvalue); $tpl->process('SUBSUBCATE','subsubcate',TPL_OPTIONAL|TPL_APPEND); $tpl->set_var('blockloop',true); } $tpl->set_var('blockloop',$blockloop); } // end if $tpl->set_var('href.subcate',$dbinfo['thisUrl'].'list.php?'.href_qs('cateuid='.$key,$qs_basic)); $tpl->set_var('subcate.uid',$key); $tpl->set_var('subcate.title',$value); $tpl->process('SUBCATE','subcate',TPL_OPTIONAL|TPL_APPEND); $tpl->set_var('blockloop',true); } $tpl->drop_var('blockloop'); } // end if } // end if // 블럭 : 글쓰기 if(privAuth($dbinfo, 'priv_write')) $tpl->process('WRITE','write'); else $tpl->process('WRITE','nowrite'); // 블럭 : 글답변 if(privAuth($dbinfo, 'priv_reply')) $tpl->process('REPLY','reply'); // 블럭 : 글수정,삭제 if(privAuth($dbinfo, 'priv_modify') or $list['bid']==$_SESSION['seUid'] or $list['bid']==0) { $tpl->process('MODIFY','modify'); } if(privAuth($dbinfo, 'priv_delete') or $list['bid']==$_SESSION['seUid'] or $list['bid']==0) { $tpl->process('DELETE','delete'); } // 블럭 : 업로드파일 처리 if( ($dbinfo['enable_upload']!='N') and is_array($list['upfiles']) and count($list['upfiles']) ) { foreach($list['upfiles'] as $key => $value) { if($value['name']) { // 파일 이름이 있다면 $tpl->set_var('upfile',$value); $tpl->set_var('upfile.size',number_format($value['size'])); $tpl->process('UPFILE','upfile',TPL_APPEND); } } $tpl->process('UPFILES','upfiles'); } if ($list['ebook']){ $tpl->process('EBOOK','ebook'); } //=============================================== // $dbinfo[include_readphp]에 따라서 모듈 include //=============================================== // 현재 게시물과 관련된 글 List 뿌리기 /*if($dbinfo['enable_readlist']=='Y' and $dbinfo['row_pern']<2 ) @include_once($thisPath . 'read_readlist.php'); // 메모 부분 처리 if($dbinfo['enable_memo']=='Y') include_once($thisPath . 'read_memo.php'); // include_readphp if(trim($dbinfo['include_readphp'])) { $aInclude = explode(',',$dbinfo['include_readphp']); foreach($aInclude as $value) { if($value=='readlist' or $value=='memo') continue; if( eregi('^[a-z0-9_-]+$',$value) and is_file($thisPath.'read_'.$value.'.php') ) include_once($thisPath.'read_'.$value.'.php'); } }*/ //=============================================== // ========= // VOTE 부분 // ========= $form_vote =" action='{$dbinfo['thisUrl']}ok.php' method='post' ENCTYPE='multipart/form-data'>"; $form_vote .= substr(href_qs("mode=vote&uid=$listuid]",$qs_basic,1),0,-1); $tpl->set_var('form_vote',$form_vote); // =========// // 마무리 $tpl->echoHtml($dbinfo, $SITE, $dbinfo['thisUrl']); ?>