게시판을 바꿔(필드추가)보자 3 (gbview.php편) ver1.0정식 정보
일반 게시판을 바꿔(필드추가)보자 3 (gbview.php편) ver1.0정식
본문
자 이제 gbview.php를 수정해 보도록 하겠습니다.
gblist.php에서는 전체글을 보여주는 소스이고 지금은 선택한 글만 보여주는 파일이죠
근데 사실 여기서도 크게 수정볼게 없습니다. 간단하게 추가만해주면되죠!
$body->테스트 = $bd[bd_test]; 요 변수선언이 전부다입니다.
그럼 소스에서 추가해보겟습니다.
<?
//@set_time_limit(0);
require_once "./lib.inc.php";
require_once "./ets.php";
if (!$gb_table) message($table, "게시판 TABLE 값이 넘어오지 않았습니다.<br>$_SERVER[PHP_SELF]{$uc1}gb_table{$uc2}name 과 같은 방식으로 넘겨 주세요.");
if (!is_board($table)) message($table, "{$gb_table} 게시판이 존재하지 않습니다.");
if (!$cfg[use_access] && ($login_mb[mb_level] < $cfg[level_group_admin]) && ($login_mb[gr_id] != $cfg[id]))
message($table, "타그룹 회원은 접근할 수 없습니다.", "{$absdir}/");
// 게시판에서 하나의 게시물을 얻음
$bd = get_table($table, $bd_id);
if (!$bd[0]) message($table, "게시물을 찾을 수 없습니다.");
// 넘어온 변수를 QUERY_STRING 형식으로 만듬
$qstr1 = "gb_table{$uc2}$gb_table{$uc3}sselect{$uc2}$sselect{$uc3}stext{$uc2}$stext";
$qstr2 = "bd_id{$uc2}$bd[bd_id]";
$qstr = $qstr1 . "{$uc2}" . $qstr2;
// 로그인된 회원의 권한이 설정된 읽기 권한보다 작다면
if ($login_mb[mb_level] < $cfg[read_level]) {
if ($login_mb[mb_id]) {
message($table, "글을 읽을 권한이 없습니다.", "{$absdir}/gblist.php{$uc1}$qstr1");
} else {
message($table, "글을 읽을 권한이 없습니다.<p>회원이시라면 로그인 후 이용해 보십시오.", "{$absdir}/mblogin.php{$uc1}$qstr{$uc2}url={$absdir}/gbview.php");
}
}
// 비밀글이라면
if ($bd[bd_secret]) {
// 한번 읽은 게시물의 번호는 세션에 저장되어 있습니다.
// 이 게시물이 저장된 게시물이 아니면서 관리자가 아니라면
if (("$gb_table|$bd[bd_num]" != $_SESSION[ss_secret]) && ($login_mb[mb_level] < $cfg[level_board_admin])) {
header("location:{$absdir}/gbpasswd.php{$uc1}w{$uc2}s{$uc3}$qstr1{$uc2}$qstr2{$uc3}msg{$uc2}이 게시물은 비밀글입니다.");
exit;
}
}
// IP 차단
check_intercept_ip($cfg[intercept_ip]);
$body->게시판 = $gb_table;
$body->검색선택 = $sselect;
$body->검색어 = $stext;
$body->회원디렉토리 = $cfg[dir_member];
$body->파일디렉토리 = $cfg[dir_file];
$body->게시판크기 = $cfg[table_width] . (($cfg[table_width] <= 100) ? "%" : "");
$body->제목길이 = $cfg[subject_len];
$body->분류사용 = $cfg[category];
$body->페이지 = $page;
$body->게시물아이디 = $bd[bd_id];
// 코멘트 쓰기 권한 (코멘트 입력이 가능한지?)
$body->코멘트쓰기권한 = false;
if ($login_mb[mb_level] >= $cfg[comment_level]) {
$body->코멘트쓰기권한 = true;
}
// 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 Hit 수를 증가 시킴
if ("$gb_table|$bd_id" != $_SESSION[ss_view]) {
session_register("ss_view");
$ss_view = "$gb_table|$bd_id";
sql_query_error(" update $table set bd_hit = bd_hit + 1 where bd_id = '$bd_id' ");
}
$body->제목 = cut_str($bd[bd_subject], 255);
$head->문서제목 = "$cfg[subject] : {$body->제목}";
$sql_search = "";
$body->검색목록링크 = false;
// 검색이면
if ($stext) {
$body->검색목록링크 = true;
// where 문을 얻음
$sql_search = get_sql_search($sselect, $stext);
}
// 이전 열을 얻음
$sql = " select bd_id, bd_subject from $table where bd_comment = '0' and bd_notice = '$bd[bd_notice]' and bd_num = '$bd[bd_num]' and bd_reply < '$bd[bd_reply]' $sql_search order by bd_notice desc, bd_num desc, bd_reply desc limit 1 ";
$prev = sql_fetch_array($sql);
// 위의 쿼리문으로 값을 얻지 못했다면
if (!$prev[0]) {
$sql = " select bd_id, bd_subject from $table where bd_comment = '0' and bd_notice = '$bd[bd_notice]' and bd_num < '$bd[bd_num]' $sql_search order by bd_notice desc, bd_num desc, bd_reply desc limit 1 ";
$prev = sql_fetch_array($sql);
if (!$prev[0]) {
$sql = " select bd_id, bd_subject from $table where bd_comment = '0' and bd_notice < '$bd[bd_notice]' $sql_search order by bd_notice desc, bd_num desc, bd_reply desc limit 1 ";
$prev = sql_fetch_array($sql);
}
}
// 다음 열을 얻음
$sql = " select bd_id, bd_subject from $table where bd_comment = '0' and bd_notice = '$bd[bd_notice]' and bd_num = '$bd[bd_num]' and bd_reply > '$bd[bd_reply]' $sql_search order by bd_notice, bd_num, bd_reply limit 1 ";
$next = sql_fetch_array($sql);
// 위의 쿼리문으로 값을 얻지 못했다면
if (!$next[0]) {
$sql = " select bd_id, bd_subject from $table where bd_comment = '0' and bd_notice = '$bd[bd_notice]' and bd_num > '$bd[bd_num]' $sql_search order by bd_notice, bd_num, bd_reply limit 1 ";
$next = sql_fetch_array($sql);
// 위의 쿼리문으로 값을 얻지 못했다면
if (!$next[0]) {
$sql = " select bd_id, bd_subject from $table where bd_comment = '0' and bd_notice > '$bd[bd_notice]' $sql_search order by bd_notice, bd_num, bd_reply limit 1 ";
$next = sql_fetch_array($sql);
}
}
$body->이전글링크 = false;
if ($prev[0]) {
$body->이전글제목 = get_text(cut_str($prev[bd_subject], 255));
$body->이전글아이디 = $prev[bd_id];
$body->이전글링크 = true;
}
$body->다음글링크 = false;
if ($next[0]) {
$body->다음글제목 = get_text(cut_str($next[bd_subject], 255));
$body->다음글아이디 = $next[bd_id];
$body->다음글링크 = true;
}
$body->글입력링크 = false;
if ($login_mb[mb_level] >= $cfg[write_level]) {
$body->글입력링크 = true;
}
$body->글답변링크 = false;
if ($bd[bd_notice] == 0 && ($login_mb[mb_level] >= $cfg[reply_level])) {
$body->글답변링크 = true;
}
$body->글수정링크 = $body->글삭제링크 = 0;
// 회원이 쓴 글이 아니라면
if (!$bd[mb_id]) {
$body->글수정링크 = $body->글삭제링크 = 1;
}
// 로그인중이고 자신의 글이라면 또는 관리자라면 암호를 묻지 않고 바로 수정, 삭제 가능
if (($login_mb[mb_id] && is_owner($bd[mb_id])) ||
($login_mb[mb_level] >= $cfg[level_board_admin])) {
$body->글수정링크 = $body->글삭제링크 = 2;
}
$body->글복사링크 = $body->글이동링크 = false;
// 관리자라면 글 복사, 이동 가능
if ($bd[bd_reply] == "") { // 원글만
if (($login_mb[mb_level] == $cfg[level_group_admin] && $login_mb[gr_id] == $cfg[id]) ||
($login_mb[mb_level] == $cfg[level_super_admin])) {
$body->글복사링크 = $body->글이동링크 = true;
}
}
$body->이름 = get_text(cut_str($bd[bd_name], 20));
$body->회원아이콘 = null;
$body->회원 = false;
if ($bd[mb_id]) {
$mb = get_member($bd[mb_id]);
$body->회원아이콘 = $mb[mb_icon];
$body->회원 = true;
}
// 메일 주소가 있다면 @ 대신 @ 캐릭터 엔티티로 변환 (스팸방지)
$body->이메일 = null;
if ($bd[bd_email]) {
$bd_name = "<a href='mailto:" . preg_replace("/@/", "@", $bd[bd_email]) . "'>$bd_name</a>";
$body->이메일 = $bd[bd_email];
}
$body->테스트 = $bd[bd_test]; //########### 이부분에 추가하겠습니다.
//########### 너무 간단하니깐 설명할게 없네요 *^^*
//########### 이렇게 한개필드에서 읽어온걸 테스트랑변수로 넘깁니다.
//########### 그럼이걸 다시 gbview.ets에서 출력만해주면끝나겠죠 *^^*
$body->일시 = $bd[bd_datetime];
$body->조회수 = $bd[bd_hit];
// 관리자가 아니라면 중간 IP 주소 두개를 감춘다
$body->아이피 = $bd[bd_ip];
if ($login_mb[mb_level] < $cfg[level_board_admin]) {
$body->아이피 = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", "\\1.*.*.\\4", $body->아이피);
}
$body->이름 = get_text($bd[bd_name]);
$body->홈페이지 = null;
if ($bd[bd_homepage]) {
$bd_homepage = get_text(cut_str($bd[bd_homepage], 255));
if (!eregi("^(http|https)://", $bd_homepage)) {
$bd_homepage = "http://" . $bd_homepage;
}
$body->홈페이지 = urlautolink($bd_homepage);
}
for ($i=1; $i<=$cfg[link_count]; $i++) {
$bd_link = $bd["bd_link$i"];
if ($bd_link) {
$bd_link = get_text(cut_str($bd_link, 255));
if (!eregi("^(http|https)://", $bd_link)) {
$bd_link = "http://" . $bd_link;
}
$body->링크[$i]->첨자 = $i;
$body->링크[$i]->링크 = urlautolink($bd_link, $cfg[link_target]);
}
}
for ($i=1; $i<=$cfg[file_count]; $i++) {
if ($bd["bd_file$i"]) {
$body->파일[$i]->첨자 = $i;
$body->파일[$i]->파일 = substr($bd["bd_file$i"], 33, strlen($bd["bd_file$i"]));
}
}
if ($bd[ca_id]) $body->분류 = get_category_name($table_category, $bd[ca_id]);
$bd_subject = cut_str($bd[bd_subject], 255);
$bd_content = $bd[bd_content];
if ($stext && preg_match("/bd_subject/", $sselect)) {
$bd_subject = set_search_font($stext, $bd_subject);
}
if ($stext && preg_match("/bd_content/", $sselect)) {
$bd_content = set_search_font($stext, $bd_content);
}
$bd_subject = get_text($bd_subject);
// 텍스트이면
if (!$bd[bd_html]) {
$bd_content = get_text($bd_content, 1);
}
if ($stext && preg_match("/bd_subject/", $sselect)) {
$bd_subject = get_search_font($bd_subject);
}
if ($stext && preg_match("/bd_content/", $sselect)) {
$bd_content = get_search_font($bd_content);
}
if (!$bd[bd_html]) {
$bd_content = urlautolink($bd_content);
}
$body->제목 = $bd_subject;
$source[] = "/<script/i";
$source[] = "/<\/script/i";
$source[] = "/}/";
$source[] = "/javascript:/i"; // 자바스크립트 태그 테러 방지
$target[] = "<x-script";
$target[] = "</x-script";
$target[] = "}";
$target[] = "x-javascript:";
$body->내용 = preg_replace($source, $target, $bd_content);
for ($i=1; $i<=$cfg[file_count]; $i++) {
$bd_file = $bd["bd_file$i"];
if (eregi($cfg[image_extension], $bd_file) ||
eregi($cfg[swf_extension], $bd_file) ||
eregi($cfg[asf_extension], $bd_file)) {
$size = getimagesize("$reldir/$cfg[dir_file]/$bd_file");
$body->이미지[$i]->사이즈x = $size[0];
$body->이미지[$i]->사이즈y = $size[1];
if ($size[0] > $cfg[large_image_size]) {
$rate = $size[1] / $size[0];
$size[0] = $cfg[large_image_size];
$size[1] = (int)($size[0] * $rate);
}
if (eregi($cfg[image_extension], $bd_file)) {
$body->이미지[$i]->이미지 = $bd_file;
$body->이미지[$i]->이미지x = $size[0];
$body->이미지[$i]->이미지y = $size[1];
} else if (eregi($cfg[swf_extension], $bd_file)) {
$body->이미지[$i]->플래쉬 = $bd_file;
$body->이미지[$i]->플래쉬x = $size[0];
$body->이미지[$i]->플래쉬y = $size[1];
} else if (eregi($cfg[asf_extension], $bd_file)) {
$body->이미지[$i]->동영상 = $bd_file;
}
}
}
if ($bd[mb_id]) {
$sql = " select mb_signature from $cfg[table_member]
where mb_id = '$bd[mb_id]' ";
$row = sql_fetch_array($sql);
$body->서명 = convert_signature($row[mb_signature]);
}
$body->코멘트사용 = null;
if ($cfg[use_comment]) {
$body->코멘트사용 = true;
// 코멘트 출력
$sql = " select * from $table
where bd_parent_id = '$bd[bd_id]'
and bd_comment > 0
order by bd_comment ";
$result = sql_query_error($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
$bd_content = $row[bd_content];
if ($stext) {
$bd_content = set_search_font($stext, $bd_content);
}
$bd_content = get_text($bd_content, 1);
if ($stext) {
$bd_content = get_search_font($bd_content);
}
$bd_content = urlautolink($bd_content);
$body->코멘트[$i]->내용 = $bd_content;
$body->코멘트[$i]->이름 = get_text(cut_str($row[bd_name], 20));
$body->코멘트[$i]->회원아이콘 = null;
$body->코멘트[$i]->회원 = false;
if ($row[mb_id]) {
$mb = get_member($row[mb_id]);
$body->코멘트[$i]->회원아이콘 = $mb[mb_icon];
$body->코멘트[$i]->회원 = true;
} else {
$mb[mb_level] = $cfg[level_guest];
}
$body->코멘트[$i]->이메일 = null;
if ($row[bd_email]) {
$body->코멘트[$i]->이메일 = $row[bd_email];
}
$body->코멘트[$i]->이모티콘0 = false; //############헉수 소스를 보니 이모티콘 수정한놈이네요*^^*
$body->코멘트[$i]->이모티콘1 = false; // 이부분은 원래수정이 불필요하니깐 보지 마시고 넘어가세요
$body->코멘트[$i]->이모티콘2 = false;
$body->코멘트[$i]->이모티콘3 = false;
$body->코멘트[$i]->이모티콘4 = false;
$body->코멘트[$i]->이모티콘5 = false;
$body->코멘트[$i]->이모티콘6 = false;
$body->코멘트[$i]->이모티콘7 = false;
$body->코멘트[$i]->이모티콘8 = false;
$body->코멘트[$i]->이모티콘9 = false;
$body->코멘트[$i]->이모티콘10 = false;
$body->코멘트[$i]->이모티콘11 = false;
$body->코멘트[$i]->이모티콘12 = false;
if ($row[bd_good] ==0) {
$body->코멘트[$i]->이모티콘0 = true; }
if ($row[bd_good] ==1) {
$body->코멘트[$i]->이모티콘1 = true; }
if ($row[bd_good] ==2) {
$body->코멘트[$i]->이모티콘2 = true; }
if ($row[bd_good] ==3) {
$body->코멘트[$i]->이모티콘3 = true; }
if ($row[bd_good] ==4) {
$body->코멘트[$i]->이모티콘4 = true; }
if ($row[bd_good] ==5) {
$body->코멘트[$i]->이모티콘5 = true; }
if ($row[bd_good] ==6) {
$body->코멘트[$i]->이모티콘6 = true; }
if ($row[bd_good] ==7) {
$body->코멘트[$i]->이모티콘7 = true; }
if ($row[bd_good] ==8) {
$body->코멘트[$i]->이모티콘8 = true; }
if ($row[bd_good] ==9) {
$body->코멘트[$i]->이모티콘9 = true; }
if ($row[bd_good] ==10) {
$body->코멘트[$i]->이모티콘10 = true; }
if ($row[bd_good] ==11) {
$body->코멘트[$i]->이모티콘11 = true; }
if ($row[bd_good] ==12) {
$body->코멘트[$i]->이모티콘12 = true; }
$body->코멘트[$i]->일시 = $row[bd_datetime];
$body->코멘트[$i]->코멘트아이디 = $row[bd_id];
// 관리자가 아니라면 중간 IP 주소 두개를 감춘다
$body->코멘트[$i]->아이피 = $row[bd_ip];
if ($login_mb[mb_level] < $cfg[level_board_admin]) {
$body->코멘트[$i]->아이피 = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", "\\1.*.*.\\4", $body->코멘트[$i]->아이피);
}
$body->코멘트[$i]->삭제 = false;
if ($login_mb[mb_id]) {
if (is_owner($row[mb_id]) ||
($login_mb[mb_level] == $cfg[level_super_admin]) ||
($login_mb[mb_level] == $cfg[level_group_admin] && $login_mb[gr_id] == $cfg[id]) ||
($login_mb[mb_level] == $cfg[level_board_admin] && $login_mb[gb_table] == $cfg[table])) {
$body->코멘트[$i]->삭제 = 2;
}
} else {
if (!$row[mb_id]) $body->코멘트[$i]->삭제 = 1;
}
}
mysql_free_result($result);
if ($login_mb[mb_id]) {
$body->코멘트이름 = get_text($login_mb[mb_name]);
$body->코멘트이메일 = $login_mb[mb_email];
$body->코멘트회원아이콘 = $login_mb[mb_icon];
$body->코멘트회원 = true;
} else {
if ($cfg[use_cookie]) {
$body->코멘트이름 = get_text($_COOKIE[ck_bd_name]);
$body->코멘트이메일 = $_COOKIE[ck_bd_email];
}
$body->코멘트이메일사용 = $cfg[use_email] ? true : false;
$body->코멘트회원아이콘 = false;
$body->코멘트회원 = false;
}
$body->로그인중이면 = $login_mb[mb_id] ? true : false;
}
$head->절대경로 = $body->절대경로 = $tail->절대경로 = $absdir;
$head->스킨디렉토리 = $body->스킨디렉토리 = $tail->스킨디렉토리 = $cfg[dir_skin];
$head->스킨 = $body->스킨 = $tail->스킨 = $cfg[skin];
$head->uc1 = $body->uc1 = $tail->uc1 = $uc1;
$head->uc2 = $body->uc2 = $tail->uc2 = $uc2;
$head->uc3 = $body->uc3 = $tail->uc3 = $uc3;
if ($cfg[include_head]) require_once $cfg[include_head];
if ($cfg[content_head]) echo $cfg[content_head];
printt($head, "$reldir/$cfg[dir_skin]/$cfg[skin]/head.ets");
printt($body, "$reldir/$cfg[dir_skin]/$cfg[skin]/gbview.ets");
if ($cfg[content_tail]) echo $cfg[content_tail];
if ($cfg[include_tail]) require_once $cfg[include_tail];
printt($tail, "$reldir/$cfg[dir_skin]/$cfg[skin]/tail.ets");
?>
여기서도 $body->테스트 = $bd[bd_test]; 이게 전부입니다.
다른건 정말 만질필요도 없습니다. 너무 허무하다는 생각이 들까요?
gbview.ets는 설명안드려도 되겠죠 *^^* 이제 정말 필드추가부분인 gbform.php부분에 대해서 설명하겠습니다.
gblist.php에서는 전체글을 보여주는 소스이고 지금은 선택한 글만 보여주는 파일이죠
근데 사실 여기서도 크게 수정볼게 없습니다. 간단하게 추가만해주면되죠!
$body->테스트 = $bd[bd_test]; 요 변수선언이 전부다입니다.
그럼 소스에서 추가해보겟습니다.
<?
//@set_time_limit(0);
require_once "./lib.inc.php";
require_once "./ets.php";
if (!$gb_table) message($table, "게시판 TABLE 값이 넘어오지 않았습니다.<br>$_SERVER[PHP_SELF]{$uc1}gb_table{$uc2}name 과 같은 방식으로 넘겨 주세요.");
if (!is_board($table)) message($table, "{$gb_table} 게시판이 존재하지 않습니다.");
if (!$cfg[use_access] && ($login_mb[mb_level] < $cfg[level_group_admin]) && ($login_mb[gr_id] != $cfg[id]))
message($table, "타그룹 회원은 접근할 수 없습니다.", "{$absdir}/");
// 게시판에서 하나의 게시물을 얻음
$bd = get_table($table, $bd_id);
if (!$bd[0]) message($table, "게시물을 찾을 수 없습니다.");
// 넘어온 변수를 QUERY_STRING 형식으로 만듬
$qstr1 = "gb_table{$uc2}$gb_table{$uc3}sselect{$uc2}$sselect{$uc3}stext{$uc2}$stext";
$qstr2 = "bd_id{$uc2}$bd[bd_id]";
$qstr = $qstr1 . "{$uc2}" . $qstr2;
// 로그인된 회원의 권한이 설정된 읽기 권한보다 작다면
if ($login_mb[mb_level] < $cfg[read_level]) {
if ($login_mb[mb_id]) {
message($table, "글을 읽을 권한이 없습니다.", "{$absdir}/gblist.php{$uc1}$qstr1");
} else {
message($table, "글을 읽을 권한이 없습니다.<p>회원이시라면 로그인 후 이용해 보십시오.", "{$absdir}/mblogin.php{$uc1}$qstr{$uc2}url={$absdir}/gbview.php");
}
}
// 비밀글이라면
if ($bd[bd_secret]) {
// 한번 읽은 게시물의 번호는 세션에 저장되어 있습니다.
// 이 게시물이 저장된 게시물이 아니면서 관리자가 아니라면
if (("$gb_table|$bd[bd_num]" != $_SESSION[ss_secret]) && ($login_mb[mb_level] < $cfg[level_board_admin])) {
header("location:{$absdir}/gbpasswd.php{$uc1}w{$uc2}s{$uc3}$qstr1{$uc2}$qstr2{$uc3}msg{$uc2}이 게시물은 비밀글입니다.");
exit;
}
}
// IP 차단
check_intercept_ip($cfg[intercept_ip]);
$body->게시판 = $gb_table;
$body->검색선택 = $sselect;
$body->검색어 = $stext;
$body->회원디렉토리 = $cfg[dir_member];
$body->파일디렉토리 = $cfg[dir_file];
$body->게시판크기 = $cfg[table_width] . (($cfg[table_width] <= 100) ? "%" : "");
$body->제목길이 = $cfg[subject_len];
$body->분류사용 = $cfg[category];
$body->페이지 = $page;
$body->게시물아이디 = $bd[bd_id];
// 코멘트 쓰기 권한 (코멘트 입력이 가능한지?)
$body->코멘트쓰기권한 = false;
if ($login_mb[mb_level] >= $cfg[comment_level]) {
$body->코멘트쓰기권한 = true;
}
// 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 Hit 수를 증가 시킴
if ("$gb_table|$bd_id" != $_SESSION[ss_view]) {
session_register("ss_view");
$ss_view = "$gb_table|$bd_id";
sql_query_error(" update $table set bd_hit = bd_hit + 1 where bd_id = '$bd_id' ");
}
$body->제목 = cut_str($bd[bd_subject], 255);
$head->문서제목 = "$cfg[subject] : {$body->제목}";
$sql_search = "";
$body->검색목록링크 = false;
// 검색이면
if ($stext) {
$body->검색목록링크 = true;
// where 문을 얻음
$sql_search = get_sql_search($sselect, $stext);
}
// 이전 열을 얻음
$sql = " select bd_id, bd_subject from $table where bd_comment = '0' and bd_notice = '$bd[bd_notice]' and bd_num = '$bd[bd_num]' and bd_reply < '$bd[bd_reply]' $sql_search order by bd_notice desc, bd_num desc, bd_reply desc limit 1 ";
$prev = sql_fetch_array($sql);
// 위의 쿼리문으로 값을 얻지 못했다면
if (!$prev[0]) {
$sql = " select bd_id, bd_subject from $table where bd_comment = '0' and bd_notice = '$bd[bd_notice]' and bd_num < '$bd[bd_num]' $sql_search order by bd_notice desc, bd_num desc, bd_reply desc limit 1 ";
$prev = sql_fetch_array($sql);
if (!$prev[0]) {
$sql = " select bd_id, bd_subject from $table where bd_comment = '0' and bd_notice < '$bd[bd_notice]' $sql_search order by bd_notice desc, bd_num desc, bd_reply desc limit 1 ";
$prev = sql_fetch_array($sql);
}
}
// 다음 열을 얻음
$sql = " select bd_id, bd_subject from $table where bd_comment = '0' and bd_notice = '$bd[bd_notice]' and bd_num = '$bd[bd_num]' and bd_reply > '$bd[bd_reply]' $sql_search order by bd_notice, bd_num, bd_reply limit 1 ";
$next = sql_fetch_array($sql);
// 위의 쿼리문으로 값을 얻지 못했다면
if (!$next[0]) {
$sql = " select bd_id, bd_subject from $table where bd_comment = '0' and bd_notice = '$bd[bd_notice]' and bd_num > '$bd[bd_num]' $sql_search order by bd_notice, bd_num, bd_reply limit 1 ";
$next = sql_fetch_array($sql);
// 위의 쿼리문으로 값을 얻지 못했다면
if (!$next[0]) {
$sql = " select bd_id, bd_subject from $table where bd_comment = '0' and bd_notice > '$bd[bd_notice]' $sql_search order by bd_notice, bd_num, bd_reply limit 1 ";
$next = sql_fetch_array($sql);
}
}
$body->이전글링크 = false;
if ($prev[0]) {
$body->이전글제목 = get_text(cut_str($prev[bd_subject], 255));
$body->이전글아이디 = $prev[bd_id];
$body->이전글링크 = true;
}
$body->다음글링크 = false;
if ($next[0]) {
$body->다음글제목 = get_text(cut_str($next[bd_subject], 255));
$body->다음글아이디 = $next[bd_id];
$body->다음글링크 = true;
}
$body->글입력링크 = false;
if ($login_mb[mb_level] >= $cfg[write_level]) {
$body->글입력링크 = true;
}
$body->글답변링크 = false;
if ($bd[bd_notice] == 0 && ($login_mb[mb_level] >= $cfg[reply_level])) {
$body->글답변링크 = true;
}
$body->글수정링크 = $body->글삭제링크 = 0;
// 회원이 쓴 글이 아니라면
if (!$bd[mb_id]) {
$body->글수정링크 = $body->글삭제링크 = 1;
}
// 로그인중이고 자신의 글이라면 또는 관리자라면 암호를 묻지 않고 바로 수정, 삭제 가능
if (($login_mb[mb_id] && is_owner($bd[mb_id])) ||
($login_mb[mb_level] >= $cfg[level_board_admin])) {
$body->글수정링크 = $body->글삭제링크 = 2;
}
$body->글복사링크 = $body->글이동링크 = false;
// 관리자라면 글 복사, 이동 가능
if ($bd[bd_reply] == "") { // 원글만
if (($login_mb[mb_level] == $cfg[level_group_admin] && $login_mb[gr_id] == $cfg[id]) ||
($login_mb[mb_level] == $cfg[level_super_admin])) {
$body->글복사링크 = $body->글이동링크 = true;
}
}
$body->이름 = get_text(cut_str($bd[bd_name], 20));
$body->회원아이콘 = null;
$body->회원 = false;
if ($bd[mb_id]) {
$mb = get_member($bd[mb_id]);
$body->회원아이콘 = $mb[mb_icon];
$body->회원 = true;
}
// 메일 주소가 있다면 @ 대신 @ 캐릭터 엔티티로 변환 (스팸방지)
$body->이메일 = null;
if ($bd[bd_email]) {
$bd_name = "<a href='mailto:" . preg_replace("/@/", "@", $bd[bd_email]) . "'>$bd_name</a>";
$body->이메일 = $bd[bd_email];
}
$body->테스트 = $bd[bd_test]; //########### 이부분에 추가하겠습니다.
//########### 너무 간단하니깐 설명할게 없네요 *^^*
//########### 이렇게 한개필드에서 읽어온걸 테스트랑변수로 넘깁니다.
//########### 그럼이걸 다시 gbview.ets에서 출력만해주면끝나겠죠 *^^*
$body->일시 = $bd[bd_datetime];
$body->조회수 = $bd[bd_hit];
// 관리자가 아니라면 중간 IP 주소 두개를 감춘다
$body->아이피 = $bd[bd_ip];
if ($login_mb[mb_level] < $cfg[level_board_admin]) {
$body->아이피 = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", "\\1.*.*.\\4", $body->아이피);
}
$body->이름 = get_text($bd[bd_name]);
$body->홈페이지 = null;
if ($bd[bd_homepage]) {
$bd_homepage = get_text(cut_str($bd[bd_homepage], 255));
if (!eregi("^(http|https)://", $bd_homepage)) {
$bd_homepage = "http://" . $bd_homepage;
}
$body->홈페이지 = urlautolink($bd_homepage);
}
for ($i=1; $i<=$cfg[link_count]; $i++) {
$bd_link = $bd["bd_link$i"];
if ($bd_link) {
$bd_link = get_text(cut_str($bd_link, 255));
if (!eregi("^(http|https)://", $bd_link)) {
$bd_link = "http://" . $bd_link;
}
$body->링크[$i]->첨자 = $i;
$body->링크[$i]->링크 = urlautolink($bd_link, $cfg[link_target]);
}
}
for ($i=1; $i<=$cfg[file_count]; $i++) {
if ($bd["bd_file$i"]) {
$body->파일[$i]->첨자 = $i;
$body->파일[$i]->파일 = substr($bd["bd_file$i"], 33, strlen($bd["bd_file$i"]));
}
}
if ($bd[ca_id]) $body->분류 = get_category_name($table_category, $bd[ca_id]);
$bd_subject = cut_str($bd[bd_subject], 255);
$bd_content = $bd[bd_content];
if ($stext && preg_match("/bd_subject/", $sselect)) {
$bd_subject = set_search_font($stext, $bd_subject);
}
if ($stext && preg_match("/bd_content/", $sselect)) {
$bd_content = set_search_font($stext, $bd_content);
}
$bd_subject = get_text($bd_subject);
// 텍스트이면
if (!$bd[bd_html]) {
$bd_content = get_text($bd_content, 1);
}
if ($stext && preg_match("/bd_subject/", $sselect)) {
$bd_subject = get_search_font($bd_subject);
}
if ($stext && preg_match("/bd_content/", $sselect)) {
$bd_content = get_search_font($bd_content);
}
if (!$bd[bd_html]) {
$bd_content = urlautolink($bd_content);
}
$body->제목 = $bd_subject;
$source[] = "/<script/i";
$source[] = "/<\/script/i";
$source[] = "/}/";
$source[] = "/javascript:/i"; // 자바스크립트 태그 테러 방지
$target[] = "<x-script";
$target[] = "</x-script";
$target[] = "}";
$target[] = "x-javascript:";
$body->내용 = preg_replace($source, $target, $bd_content);
for ($i=1; $i<=$cfg[file_count]; $i++) {
$bd_file = $bd["bd_file$i"];
if (eregi($cfg[image_extension], $bd_file) ||
eregi($cfg[swf_extension], $bd_file) ||
eregi($cfg[asf_extension], $bd_file)) {
$size = getimagesize("$reldir/$cfg[dir_file]/$bd_file");
$body->이미지[$i]->사이즈x = $size[0];
$body->이미지[$i]->사이즈y = $size[1];
if ($size[0] > $cfg[large_image_size]) {
$rate = $size[1] / $size[0];
$size[0] = $cfg[large_image_size];
$size[1] = (int)($size[0] * $rate);
}
if (eregi($cfg[image_extension], $bd_file)) {
$body->이미지[$i]->이미지 = $bd_file;
$body->이미지[$i]->이미지x = $size[0];
$body->이미지[$i]->이미지y = $size[1];
} else if (eregi($cfg[swf_extension], $bd_file)) {
$body->이미지[$i]->플래쉬 = $bd_file;
$body->이미지[$i]->플래쉬x = $size[0];
$body->이미지[$i]->플래쉬y = $size[1];
} else if (eregi($cfg[asf_extension], $bd_file)) {
$body->이미지[$i]->동영상 = $bd_file;
}
}
}
if ($bd[mb_id]) {
$sql = " select mb_signature from $cfg[table_member]
where mb_id = '$bd[mb_id]' ";
$row = sql_fetch_array($sql);
$body->서명 = convert_signature($row[mb_signature]);
}
$body->코멘트사용 = null;
if ($cfg[use_comment]) {
$body->코멘트사용 = true;
// 코멘트 출력
$sql = " select * from $table
where bd_parent_id = '$bd[bd_id]'
and bd_comment > 0
order by bd_comment ";
$result = sql_query_error($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
$bd_content = $row[bd_content];
if ($stext) {
$bd_content = set_search_font($stext, $bd_content);
}
$bd_content = get_text($bd_content, 1);
if ($stext) {
$bd_content = get_search_font($bd_content);
}
$bd_content = urlautolink($bd_content);
$body->코멘트[$i]->내용 = $bd_content;
$body->코멘트[$i]->이름 = get_text(cut_str($row[bd_name], 20));
$body->코멘트[$i]->회원아이콘 = null;
$body->코멘트[$i]->회원 = false;
if ($row[mb_id]) {
$mb = get_member($row[mb_id]);
$body->코멘트[$i]->회원아이콘 = $mb[mb_icon];
$body->코멘트[$i]->회원 = true;
} else {
$mb[mb_level] = $cfg[level_guest];
}
$body->코멘트[$i]->이메일 = null;
if ($row[bd_email]) {
$body->코멘트[$i]->이메일 = $row[bd_email];
}
$body->코멘트[$i]->이모티콘0 = false; //############헉수 소스를 보니 이모티콘 수정한놈이네요*^^*
$body->코멘트[$i]->이모티콘1 = false; // 이부분은 원래수정이 불필요하니깐 보지 마시고 넘어가세요
$body->코멘트[$i]->이모티콘2 = false;
$body->코멘트[$i]->이모티콘3 = false;
$body->코멘트[$i]->이모티콘4 = false;
$body->코멘트[$i]->이모티콘5 = false;
$body->코멘트[$i]->이모티콘6 = false;
$body->코멘트[$i]->이모티콘7 = false;
$body->코멘트[$i]->이모티콘8 = false;
$body->코멘트[$i]->이모티콘9 = false;
$body->코멘트[$i]->이모티콘10 = false;
$body->코멘트[$i]->이모티콘11 = false;
$body->코멘트[$i]->이모티콘12 = false;
if ($row[bd_good] ==0) {
$body->코멘트[$i]->이모티콘0 = true; }
if ($row[bd_good] ==1) {
$body->코멘트[$i]->이모티콘1 = true; }
if ($row[bd_good] ==2) {
$body->코멘트[$i]->이모티콘2 = true; }
if ($row[bd_good] ==3) {
$body->코멘트[$i]->이모티콘3 = true; }
if ($row[bd_good] ==4) {
$body->코멘트[$i]->이모티콘4 = true; }
if ($row[bd_good] ==5) {
$body->코멘트[$i]->이모티콘5 = true; }
if ($row[bd_good] ==6) {
$body->코멘트[$i]->이모티콘6 = true; }
if ($row[bd_good] ==7) {
$body->코멘트[$i]->이모티콘7 = true; }
if ($row[bd_good] ==8) {
$body->코멘트[$i]->이모티콘8 = true; }
if ($row[bd_good] ==9) {
$body->코멘트[$i]->이모티콘9 = true; }
if ($row[bd_good] ==10) {
$body->코멘트[$i]->이모티콘10 = true; }
if ($row[bd_good] ==11) {
$body->코멘트[$i]->이모티콘11 = true; }
if ($row[bd_good] ==12) {
$body->코멘트[$i]->이모티콘12 = true; }
$body->코멘트[$i]->일시 = $row[bd_datetime];
$body->코멘트[$i]->코멘트아이디 = $row[bd_id];
// 관리자가 아니라면 중간 IP 주소 두개를 감춘다
$body->코멘트[$i]->아이피 = $row[bd_ip];
if ($login_mb[mb_level] < $cfg[level_board_admin]) {
$body->코멘트[$i]->아이피 = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", "\\1.*.*.\\4", $body->코멘트[$i]->아이피);
}
$body->코멘트[$i]->삭제 = false;
if ($login_mb[mb_id]) {
if (is_owner($row[mb_id]) ||
($login_mb[mb_level] == $cfg[level_super_admin]) ||
($login_mb[mb_level] == $cfg[level_group_admin] && $login_mb[gr_id] == $cfg[id]) ||
($login_mb[mb_level] == $cfg[level_board_admin] && $login_mb[gb_table] == $cfg[table])) {
$body->코멘트[$i]->삭제 = 2;
}
} else {
if (!$row[mb_id]) $body->코멘트[$i]->삭제 = 1;
}
}
mysql_free_result($result);
if ($login_mb[mb_id]) {
$body->코멘트이름 = get_text($login_mb[mb_name]);
$body->코멘트이메일 = $login_mb[mb_email];
$body->코멘트회원아이콘 = $login_mb[mb_icon];
$body->코멘트회원 = true;
} else {
if ($cfg[use_cookie]) {
$body->코멘트이름 = get_text($_COOKIE[ck_bd_name]);
$body->코멘트이메일 = $_COOKIE[ck_bd_email];
}
$body->코멘트이메일사용 = $cfg[use_email] ? true : false;
$body->코멘트회원아이콘 = false;
$body->코멘트회원 = false;
}
$body->로그인중이면 = $login_mb[mb_id] ? true : false;
}
$head->절대경로 = $body->절대경로 = $tail->절대경로 = $absdir;
$head->스킨디렉토리 = $body->스킨디렉토리 = $tail->스킨디렉토리 = $cfg[dir_skin];
$head->스킨 = $body->스킨 = $tail->스킨 = $cfg[skin];
$head->uc1 = $body->uc1 = $tail->uc1 = $uc1;
$head->uc2 = $body->uc2 = $tail->uc2 = $uc2;
$head->uc3 = $body->uc3 = $tail->uc3 = $uc3;
if ($cfg[include_head]) require_once $cfg[include_head];
if ($cfg[content_head]) echo $cfg[content_head];
printt($head, "$reldir/$cfg[dir_skin]/$cfg[skin]/head.ets");
printt($body, "$reldir/$cfg[dir_skin]/$cfg[skin]/gbview.ets");
if ($cfg[content_tail]) echo $cfg[content_tail];
if ($cfg[include_tail]) require_once $cfg[include_tail];
printt($tail, "$reldir/$cfg[dir_skin]/$cfg[skin]/tail.ets");
?>
여기서도 $body->테스트 = $bd[bd_test]; 이게 전부입니다.
다른건 정말 만질필요도 없습니다. 너무 허무하다는 생각이 들까요?
gbview.ets는 설명안드려도 되겠죠 *^^* 이제 정말 필드추가부분인 gbform.php부분에 대해서 설명하겠습니다.
추천
12
12
댓글 전체
감사합니다.

잘 활용하였습니다.