다중검색이 왜 관리자로만 되는것일까요?
고수님들 도와주세욤~~
http://평창펜션안내.kr/bbs/board.php?bo_table=pension_r#tab-2">http://평창펜션안내.kr/bbs/board.php?bo_table=pension_r#tab-2
다중검색 여행형태, 여행테마, 편의시설 체크박스로 조건검색할경우
관리자 로그인 했을때는 잘 검색이 되는데요.
비회원으로 검색하면 검색이 안되는데 왜 그런걸까요..ㅠㅠ.
댓글을 작성하려면 로그인이 필요합니다.
답변 3개
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
이미영ㅇㅇ
7년 전
skin.lib.php인데요.
</p>
<p><?
// 추가 및 변경 함수 시작</p>
<p>$arr_search = array();
for($j = 1; $j < 11; $j++){
if($_GET["wr_".$j] && strlen($_GET["wr_".$j]) > 0){
$qstr .= "&wr_".$j."=".urlencode($_GET["wr_".$j]);
}
}</p>
<p>// 검색 구문을 얻는다.
//function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator=false)
function get_sql_search3($search_ca_name, $search_field, $search_text, $search_operator='and',$search_arr='')
{
global $g4;</p>
<p> $str = "";
if ($search_ca_name)
$str = " ca_name = '$search_ca_name' ";</p>
<p> $search_text = trim($search_text);</p>
<p> if (!$search_text && !$search_arr)
return $str;
if(count($search_arr[name]) > 0){
$se_flag = 0;
for($j = 0; $j < count($search_arr[name]); $j++){
if(is_array($search_arr[val][$j])){
$str2 = "";</p>
<p> for($x = 0; $x < count($search_arr[val][$j]);$x++){
$str2 = append_sql2($str2, " or ", " {$search_arr[name][$j]} like '%{$search_arr[val][$j][$x]}%' ");
}
$str2 = " (".$str2.") ";
$str = append_sql2($str, " and", $str2);</p>
<p>
}else if(strlen($search_arr[val][$j]) > 0 && $search_arr[val][$j] ){</p>
<p>
$str = append_sql2($str, " and ", " {$search_arr[name][$j]} like '%{$search_arr[val][$j]}%' ");
}
}
}
</p>
<p>
// 쿼리의 속도를 높이기 위하여 ( ) 는 최소화 한다.
$op1 = "";</p>
<p> // 검색어를 구분자로 나눈다. 여기서는 공백
$s = array();</p>
<p> $s = explode(" ", $search_text);
if(count($s) > 0 && strlen($s[0]) > 0 ){</p>
<p> if ($str)
$str .= " and ";
// 검색필드를 구분자로 나눈다. 여기서는 +
//$field = array();
//$field = explode("||", trim($search_field));
$tmp = array();
$tmp = explode(",", trim($search_field));
$field = explode("||", $tmp[0]);
$not_comment = $tmp[1];</p>
<p> $str .= "(";
for ($i=0; $i<count($s); $i++) {
// 검색어
$search_str = trim($s[$i]);
if ($search_str == "") continue;</p>
<p> // 인기검색어
/*
$sql = " insert into $g4[popular_table] set pp_word = '$search_str', pp_date = '$g4[time_ymd]', pp_ip = '$_SERVER[REMOTE_ADDR]' ";
sql_query($sql, FALSE);
*/
if(count($field) > 0){
$str .= $op1;
$str .= "(";</p>
<p> $op2 = "";
for ($k=0; $k<count($field); $k++) { // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
$str .= $op2;
switch ($field[$k]) {
case "mb_id" :
case "wr_name" :
$str .= " $field[$k] = '$s[$i]' ";
break;
case "wr_hit" :
case "wr_good" :
case "wr_nogood" :
$str .= " $field[$k] >= '$s[$i]' ";
break;
// 번호는 해당 검색어에 -1 을 곱함
case "wr_num" :
$str .= "$field[$k] = ".((-1)*$s[$i]);
break;
case "wr_5" :
case "wr_6" :
$str .= "$field[$k] > ".((-1)*$s[$i]);
break;
// LIKE 보다 INSTR 속도가 빠름
default :
if (preg_match("/[a-zA-Z]/", $search_str))
$str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";
else
$str .= "INSTR($field[$k], '$search_str')";
break;
}
$op2 = " or ";
}
$str .= ")";
}
//$op1 = ($search_operator) ? ' and ' : ' or ';
$op1 = " $search_operator ";
}</p>
<p> $str .= " ) ";
}
if ($not_comment){
$str .= " and wr_is_comment = '0' ";
}
return $str;
}</p>
<p>function append_sql2($sql, $appender, $text) {
if(strlen($sql) > 0) {
$sql = $sql.$appender.$text;
} else {
$sql = $text;
}
return $sql;
}
// 추가 및 변경 함수 끝</p>
<p>//$_GET[wr_9] = "1";</p>
<p>
$arr_search = array();
for($j = 1; $j < 11; $j++){
if(($_GET["wr_".$j] && strlen($_GET["wr_".$j]) > 0 ) || is_array($_GET["wr_".$j])) {
$arr_search[name][] = "wr_".$j;
$arr_search[val][] = $_GET["wr_".$j];
}
}</p>
<p>/* 뷰 시작 */
// 게시판에서 두단어 이상 검색 후 검색된 게시물에 코멘트를 남기면 나오던 오류 수정
$sop = strtolower($sop);
if ($sop != 'and' && $sop != 'or')
$sop = 'and';</p>
<p>@include_once($board_skin_path.'/view.head.skin.php');</p>
<p>$sql_search = "";
// 검색이면
if ($sca || $stx || count($arr_search) > 0) {</p>
<p> // where 문을 얻음
$se_arr = array();
$se_arr = $arr_search;</p>
<p> $sql_search = get_sql_search3($sca, $sfl, $stx, $sop, $se_arr);
$search_href = './board.php?bo_table='.$bo_table.'&page='.$page.$qstr;
$list_href = './board.php?bo_table='.$bo_table;
} else {
$search_href = '';
$list_href = './board.php?bo_table='.$bo_table.'&page='.$page;
}</p>
<p>
if (!$board['bo_use_list_view']) {
if ($sql_search)
$sql_search = " and " . $sql_search;</p>
<p> // 윗글을 얻음
$sql = " select wr_id, wr_subject from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply < '{$write['wr_reply']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
$prev = sql_fetch($sql);
// 위의 쿼리문으로 값을 얻지 못했다면
if (!$prev['wr_id']) {
$sql = " select wr_id, wr_subject from {$write_table} where wr_is_comment = 0 and wr_num < '{$write['wr_num']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
$prev = sql_fetch($sql);
}</p>
<p> // 아래글을 얻음
$sql = " select wr_id, wr_subject from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply > '{$write['wr_reply']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
$next = sql_fetch($sql);
// 위의 쿼리문으로 값을 얻지 못했다면
if (!$next['wr_id']) {
$sql = " select wr_id, wr_subject from {$write_table} where wr_is_comment = 0 and wr_num > '{$write['wr_num']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
$next = sql_fetch($sql);
}
}</p>
<p>// 이전글 링크
$prev_href = '';
if (isset($prev['wr_id']) && $prev['wr_id']) {
$prev_wr_subject = get_text(cut_str($prev['wr_subject'], 255));
$prev_href = './board.php?bo_table='.$bo_table.'&wr_id='.$prev['wr_id'].$qstr;
}</p>
<p>// 다음글 링크
$next_href = '';
if (isset($next['wr_id']) && $next['wr_id']) {
$next_wr_subject = get_text(cut_str($next['wr_subject'], 255));
$next_href = './board.php?bo_table='.$bo_table.'&wr_id='.$next['wr_id'].$qstr;
}</p>
<p>// 쓰기 링크
$write_href = '';
if ($member['mb_level'] >= $board['bo_write_level'])
$write_href = './write.php?bo_table='.$bo_table;</p>
<p>// 답변 링크
$reply_href = '';
if ($member['mb_level'] >= $board['bo_reply_level'])
$reply_href = './write.php?w=r&bo_table='.$bo_table.'&wr_id='.$wr_id.$qstr;</p>
<p>// 수정, 삭제 링크
$update_href = $delete_href = '';
// 로그인중이고 자신의 글이라면 또는 관리자라면 비밀번호를 묻지 않고 바로 수정, 삭제 가능
if (($member['mb_id'] && ($member['mb_id'] == $write['mb_id'])) || $is_admin) {
$update_href = './write.php?w=u&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
$delete_href = './delete.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.urldecode($qstr);
if ($is_admin)
{
set_session("ss_delete_token", $token = uniqid(time()));
$delete_href ='./delete.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&token='.$token.'&page='.$page.urldecode($qstr);
}
}
else if (!$write['mb_id']) { // 회원이 쓴 글이 아니라면
$update_href = './password.php?w=u&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
$delete_href = './password.php?w=d&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
}</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>// 최고, 그룹관리자라면 글 복사, 이동 가능
$copy_href = $move_href = '';
if ($write['wr_reply'] == '' && ($is_admin == 'super' || $is_admin == 'group')) {
$copy_href = './move.php?sw=copy&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
$move_href = './move.php?sw=move&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
}</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>
$scrap_href = '';
$good_href = '';
$nogood_href = '';
if ($is_member) {
// 스크랩 링크
$scrap_href = './scrap_popin.php?bo_table='.$bo_table.'&wr_id='.$wr_id;</p>
<p> // 추천 링크
if ($board['bo_use_good'])
$good_href = './good.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&good=good';</p>
<p> // 비추천 링크
if ($board['bo_use_nogood'])
$nogood_href = './good.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&good=nogood';
}</p>
<p>$view = get_view($write, $board, $board_skin_path);</p>
<p>if (strstr($sfl, 'subject'))
$view['subject'] = search_font($stx, $view['subject']);</p>
<p>$html = 0;
if (strstr($view['wr_option'], 'html1'))
$html = 1;
else if (strstr($view['wr_option'], 'html2'))
$html = 2;</p>
<p>$view['content'] = conv_content($view['wr_content'], $html);
if (strstr($sfl, 'content'))
$view['content'] = search_font($stx, $view['content']);</p>
<p>//$view['rich_content'] = preg_replace("/{이미지\:([0-9]+)[:]?([^}]*)}/ie", "view_image(\$view, '\\1', '\\2')", $view['content']);</p>
<p>$view['rich_content'] = @preg_replace_callback("/{이미지\:([0-9]+)[:]?([^}]*)}/i", "conv_rich_content", $view['content']);</p>
<p> </p>
<p> </p>
<p>
$is_signature = false;
$signature = '';
if ($board['bo_use_signature'] && $view['mb_id']) {
$is_signature = true;
$mb = get_member($view['mb_id']);
$signature = $mb['mb_signature'];</p>
<p> $signature = conv_content($signature, 1);
}</p>
<p> </p>
<p>
/* 리스트 시작 */
// 분류 사용 여부
$is_category = false;
$category_option = '';
if ($board['bo_use_category']) {
$is_category = true;
$category_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table;
$style_str= "";
if ($sca=='')
$style_str .= ' srtn_on ';
/*
$category_option .= '<li><a href="'.$category_href.'" class="srtn_typea '.$style_str.'" ';
if ($sca=='')
$category_option .= ' ';
$category_option .= '>전체</a></li>';
*/
$categories = explode('|', $board['bo_category_list']); // 구분자가 , 로 되어 있음
for ($i=0; $i<count($categories); $i++) {
$style_str = "";</p>
<p> $category = trim($categories[$i]);
if ($category=='') continue;
$tmp_sca = str_replace("<a href="file://\\","",$sca">\\","",$sca</a>);
if ($category==$tmp_sca){
$style_str = ' srtn_on ';
}
$category_option .= '<li><a href="'.($category_href."&sca=".urlencode($category)).'"';
$category_msg = '';
if ($category==$sca) { // 현재 선택된 카테고리라면
$category_option .= ' id="bo_cate_on"';
$category_msg = '<span class="sound_only">열린 분류 </span>';
}
$category_option .= 'class="srtn_typea '.$style_str.'">'.$category_msg.$category.'</a></li>';
}
}</p>
<p> </p>
<p> </p>
<p>$sop = strtolower($sop);
if ($sop != 'and' && $sop != 'or')
$sop = 'and';</p>
<p>// 분류 선택 또는 검색어가 있다면
$stx = trim($stx);
if ($sca || $stx || count($arr_search) > 0) {
</p>
<p> $se_arr = array();
$se_arr = $arr_search;</p>
<p> $sql_search = get_sql_search3($sca, $sfl, $stx, $sop, $se_arr);</p>
<p> // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];</p>
<p> if (!$spt) $spt = $min_spt;</p>
<p> $sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";</p>
<p> // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = mysql_num_rows($result);
} else {
$sql_search = "";</p>
<p> $total_count = $board['bo_count_write'];
}</p>
<p>if($bo_table == "pension_r") {
if($sch_wr_1) {
$tmp1 = " and wr_1 in (".stripslashes($sch_wr_1).") ";
}
if($sch_wr_2) {
$tmp2 = " and wr_2 in (".stripslashes($sch_wr_2).") ";
}
if($sch_wr_3) {
$tmp3 = " and wr_3 in (".stripslashes($sch_wr_3).") ";
}
$tmp = $tmp1 . $tmp2 . $tmp3;
if($tmp) {
/*if($sql_search) {
$sql_search .= $tmp;
} else {
$sql_search .= substr($tmp,4,strlen($tmp));
}*/
$sql_search .= $tmp;
}
}</p>
<p>
if(G5_IS_MOBILE) {
$page_rows = $board['bo_mobile_page_rows'];
$list_page_rows = $board['bo_mobile_page_rows'];
} else {
$page_rows = $board['bo_page_rows'];
$list_page_rows = $board['bo_page_rows'];
}</p>
<p>if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)</p>
<p>// 년도 2자리
$today2 = G5_TIME_YMD;</p>
<p>$list = array();
$i = 0;
$notice_count = 0;
$notice_array = array();</p>
<p>// 공지 처리
if (!$sca && !$stx) {
$arr_notice = explode(',', trim($board['bo_notice']));
$from_notice_idx = ($page - 1) * $page_rows;
if($from_notice_idx < 0)
$from_notice_idx = 0;
$board_notice_count = count($arr_notice);</p>
<p> for ($k=0; $k<$board_notice_count; $k++) {
if (trim($arr_notice[$k]) == '') continue;</p>
<p> $row = sql_fetch(" select * from {$write_table} where wr_id = '{$arr_notice[$k]}' ");</p>
<p> if (!$row['wr_id']) continue;</p>
<p> $notice_array[] = $row['wr_id'];</p>
<p> if($k < $from_notice_idx) continue;</p>
<p> $list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
$list[$i]['is_notice'] = true;</p>
<p> $i++;
$notice_count++;</p>
<p> if($notice_count >= $list_page_rows)
break;
}
}</p>
<p>$total_page = ceil($total_count / $page_rows); // 전체 페이지 계산
$from_record = ($page - 1) * $page_rows; // 시작 열을 구함</p>
<p>// 공지글이 있으면 변수에 반영
if(!empty($notice_array)) {
$from_record -= count($notice_array);</p>
<p> if($from_record < 0)
$from_record = 0;</p>
<p> if($notice_count > 0)
$page_rows -= $notice_count;</p>
<p> if($page_rows < 0)
$page_rows = $list_page_rows;
}</p>
<p>// 관리자라면 CheckBox 보임
$is_checkbox = false;
if ($is_member && ($is_admin == 'super' || $group['gr_admin'] == $member['mb_id'] || $board['bo_admin'] == $member['mb_id']))
$is_checkbox = true;</p>
<p>// 정렬에 사용하는 QUERY_STRING
$qstr2 = 'bo_table='.$bo_table.'&sop='.$sop;</p>
<p>// 0 으로 나눌시 오류를 방지하기 위하여 값이 없으면 1 로 설정
$bo_gallery_cols = $board['bo_gallery_cols'] ? $board['bo_gallery_cols'] : 1;
$td_width = (int)(100 / $bo_gallery_cols);</p>
<p>// 정렬
// 인덱스 필드가 아니면 정렬에 사용하지 않음
//if (!$sst || ($sst && !(strstr($sst, 'wr_id') || strstr($sst, "wr_datetime")))) {
if (!$sst) {
if ($board['bo_sort_field']) {
$sst = $board['bo_sort_field'];
} else {
$sst = "wr_num, wr_reply";
$sod = "";
}
} else {
// 게시물 리스트의 정렬 대상 필드가 아니라면 공백으로 (nasca 님 09.06.16)
// 리스트에서 다른 필드로 정렬을 하려면 아래의 코드에 해당 필드를 추가하세요.
// $sst = preg_match("/^(wr_subject|wr_datetime|wr_hit|wr_good|wr_nogood)$/i", $sst) ? $sst : "";
$sst = preg_match("/^(wr_datetime|wr_hit|wr_good|wr_nogood|coco|wr_9)$/i", $sst) ? $sst : "";
}</p>
<p>if ($sst) {
$sql_order = " order by {$sst} {$sod} ";
}
if($_GET[sst] == "wr_9"){
$sql_order = " order by wr_9 asc ";
}
if ($sca || $stx || count($arr_search) > 0) {
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";
} else {
$sql = " select * from {$write_table} where wr_is_comment = 0 ";
if(!empty($notice_array))
$sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
$sql .= " {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";
}
//echo $sql;
// 페이지의 공지개수가 목록수 보다 작을 때만 실행
if($page_rows > 0) {
$result = sql_query($sql);</p>
<p> $k = 0;</p>
<p> while ($row = sql_fetch_array($result))
{
// 검색일 경우 wr_id만 얻었으므로 다시 한행을 얻는다
if ($sca || $stx || count($arr_search) > 0)
$row = sql_fetch(" select * from {$write_table} where wr_id = '{$row['wr_parent']}' ");</p>
<p> $list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
if (strstr($sfl, 'subject')) {
$list[$i]['subject'] = search_font($stx, $list[$i]['subject']);
}
$list[$i]['is_notice'] = false;
$list_num = $total_count - ($page - 1) * $list_page_rows - $notice_count;
$list[$i]['num'] = $list_num - $k;</p>
<p> $i++;
$k++;
}
}</p>
<p>$write_pages = get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, './board.php?bo_table='.$bo_table.$qstr.'&page=');</p>
<p>$list_href = '';
$prev_part_href = '';
$next_part_href = '';
if ($sca || $stx || count($arr_search) > 0) {
$list_href = './board.php?bo_table='.$bo_table;</p>
<p> //if ($prev_spt >= $min_spt)
$prev_spt = $spt - $config['cf_search_part'];
if (isset($min_spt) && $prev_spt >= $min_spt) {
$prev_part_href = './board.php?bo_table='.$bo_table.$qstr.'&spt='.$prev_spt.'&page=1';
$write_pages = page_insertbefore($write_pages, '<a href="'.$prev_part_href.'" class="pg_page pg_prev">이전검색</a>');
}</p>
<p> $next_spt = $spt + $config['cf_search_part'];
if ($next_spt < 0) {
$next_part_href = './board.php?bo_table='.$bo_table.$qstr.'&spt='.$next_spt.'&page=1';
$write_pages = page_insertafter($write_pages, '<a href="'.$next_part_href.'" class="pg_page pg_end">다음검색</a>');
}
}</p>
<p>$list_href = './board.php?bo_table='.$bo_table.'&page='.$page;</p>
<p>$write_href = '';
if ($member['mb_level'] >= $board['bo_write_level']) {
$write_href = './write.php?bo_table='.$bo_table;
}</p>
<p>$nobr_begin = $nobr_end = "";
if (preg_match("/gecko|firefox/i", $_SERVER['HTTP_USER_AGENT'])) {
$nobr_begin = '<nobr>';
$nobr_end = '</nobr>';
}</p>
<p>// RSS 보기 사용에 체크가 되어 있어야 RSS 보기 가능 061106
$rss_href = '';
if ($board['bo_use_rss_view']) {
$rss_href = './rss.php?bo_table='.$bo_table;
}</p>
<p>$stx = get_text(stripslashes($stx));</p>
<p>/* 리스트 끝 */
/* 뷰 끝 */
?>
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
7년 전
http://평창펜션안내.kr/bbs/board.php?bo_table=pension_r 의 스킨이 어떻게 구현되었는지
관리자일때와 비관리자일때 소스가 어떻게 다른지를 확인할 수 가 없습니다.
list.skin.php 소스를 모두 올리면 뭔가 살펴볼수는 있겠지만..
지금 질문으로는 ... 도통
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인전체 질문 목록
답변대기
채택
채택
채택
채택
채택
채택
답변대기
채택
채택
채택
답변대기
채택
채택
답변대기
채택
채택
채택
채택