html 사용시 비밀글 노출 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

html 사용시 비밀글 노출 정보

html 사용시 비밀글 노출

본문

안녕하세요. 방명록형 게시판에서 비밀글을 사용할 때 html 을 사용하면 아래 소스에서 지정한게 전혀 안먹힙니다. 비밀글 아이콘이 뜨는 걸 보면 비밀글로 등록되는 것 같기는 한데 글이 다 보여지네요. 태그를 사용해도 제대로 기능하게 하려면 어떻게 해야할까요.

if($lists[$ii][wr_option]=="secret"){
if($member[mb_id]==$lists[$ii][mb_id] || $is_admin){
$a_update = str_replace("w=u","w=u&mode=secret",$a_update);
$lists[$ii][name]="<b>{$lists[$ii][name]}</b>";
$l_reply = "<a href=".$re_href." title=".답글." class='notisub'><span class='button2' style='padding:3;font-weight:bold;'>* REPLY</span></a>";
}else{
$lists[$ii][name]="<span style='color:#ff6600;'>비밀글 입니다. </span>";
$l_reply = "";
}
} else {
$lists[$ii][name]="<b>{$lists[$ii][name]}</b>";
}




---------------list.skin.php 전체 내용-----------------------------------------------





<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 3;

//if ($is_category) $colspan++;
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;

if($is_admin) set_session("ss_delete_token", $token = uniqid(time()));
// 제목이 두줄로 표시되는 경우 이 코드를 사용해 보세요.
// <nobr style='display:block; overflow:hidden; width:000px;'>제목</nobr>
?>
<style>
/* 게시판용 */
.notice { color:#99AACC; }
.color_point { color:#868686; }
.font_point { color:#A9A9A9; }
.td_color { background-color:#CCD8D7; }
.span_bg { background-color:#CCCCCC; }
.board_list { clear:both; width:100%; table-layout:fixed; margin:0; }

.line { background-color:#DDDDDD; height:1px; }
.bnum { font:bold 18px Georgia; color:333333; margin-right:10px; }
}
</style>

<table width="<?=$width?>" border=0 cellpadding="0" cellspacing="0">
<? if ($write_href) { ?>
<tr>
<td align="center" class="gulim" style="padding:5px;" colspan="<?=$i_count?>">
<a href="javascript:writeopen()"><b>:: 글쓰기 ::</b></a>
<script language="JavaScript">
function writeopen(){
window.open('<?=$write_href?>&pop_mode=on','write_popup','width=650,height=400,toolbars=no,resizable=yes,scrollbars=yes');
}
</script>
    </td>
</tr>
        <? } ?>
<tr>
<td align="center">
<!-- 게시물 리스트 시작 -->
<?
$lists = array();
for ($i=0; $i<count($list); $i++) {
$lists[$i] = $list[$i];
}
?>
<? for ($ii=0; $ii < count($lists); $ii++) {
$profile = get_member($lists[$ii][mb_id]);
include "$board_skin_path/inc.list.skin.php";
$secret_msg="";
$reply_allow="";
if($lists[$ii][wr_option]=="secret"){
if($member[mb_id]==$lists[$ii][mb_id] || $is_admin){
$a_update = str_replace("w=u","w=u&mode=secret",$a_update);
$lists[$ii][name]="<b>{$lists[$ii][name]}</b>";
$l_reply = "<a href=".$re_href." title=".답글." class='notisub'><span class='button2' style='padding:3;font-weight:bold;'>* REPLY</span></a>";
}else{
$lists[$ii][name]="<span style='color:#ff6600;'>비밀글 입니다. </span>";
$l_reply = "";
}
} else {
$lists[$ii][name]="<b>{$lists[$ii][name]}</b>";
}
?>

<table border="0" cellpadding="0" cellspacing="0" class=board_list>
<form name="fboardlist" method="post" action="" style="margin:0">
<input type="hidden" name="bo_table" value="<?=$bo_table?>">
<input type="hidden" name="sfl"      value="<?=$sfl?>">
<input type="hidden" name="stx"      value="<?=$stx?>">
<input type="hidden" name="spt"      value="<?=$spt?>">
<input type="hidden" name="page"    value="<?=$page?>">
<input type="hidden" name="sw"      value="">

<tr>
<td height="25">
<div style="padding-left:5px; float:left;">
<? if ($lists[$ii][is_notice]) { ?>
                <span class=bnum><i>Notice</i></span>
</div>
    <div style="padding-right:5px;width:100%" align=right>
<?=$l_edit?><?=$l_delete?>
</div>
</td></tr>
<tr><td class="line"></td></tr>
<tr><td>
<div style="text-align:justify;line-height:1.8em;letter-spacing:0.01em;border:1px solid #dddddd;margin:5 0;padding:5;">
<? echo nl2br(url_auto_link($lists[$ii][wr_content])); ?>
</div>
<?=$l_reply?>
</td></tr>
<?} else {?>
                <span class=bnum><?= abs($lists[$ii][num]) ?></span>
<!-- use element of num instead of wr_num to increase numbers in order -->
<!-- also change the link title below, wr_num to num, line 70 -->
        <?=$lists[$ii][name]?>&nbsp;
                <font class="point"><?=$lists[$ii][datetime]?></font>
<?
            echo " " . $lists[$ii][icon_secret];
echo " " . $lists[$ii][icon_new];
            ?>
</div>
    <div style="padding-right:5px;width:100%" align=right>
<?=$l_edit?><?=$l_delete?>
</div>
</td></tr>
<? if(($lists[$ii][wr_option]!=="secret")||($member[mb_id]==$lists[$ii][mb_id] || $is_admin)){?>
<tr><td class="line"></td></tr>
<tr><td style="padding:15 5;" align="right">
<div style="text-align:justify;line-height:1.8em;letter-spacing:0.01em;">
<? echo nl2br(url_auto_link($lists[$ii][wr_content])); ?>
</div>
<?=$l_reply?>
</td></tr>
<? } ?>
<? } ?>
</form>
<!-- 게시물 내용 보기 끝 -->
<tr>
<td valign="top" align="right">

<?
$wr_id = $lists[$ii][wr_id];
include ("$board_skin_path/view_comment.php");
?>
</td>
</tr>
<? if ($ii+1 < count($lists)) { //마지막 라인 생략?>
<tr><td height="1" class="line"></td></tr>
<tr><td height="40"></td></tr>
<? } ?>
</table>
<?
}
// 필터
echo "<script language='javascript'> var g4_cf_filter = '$config[cf_filter]'; </script>\n";
echo "<script language='javascript' src='$g4[path]/js/filter.js'></script>\n";

if (!$member[mb_id]) // 비회원일 경우에만
echo "<script language='javascript' src='$g4[path]/js/md5.js'></script>\n";
?>

<? if (count($lists) == 0) { echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr><td align=center colspan='2' height=100 class='small'>방문 흔적이 없습니다.</td></tr></table>"; } ?>


<table width="100%" cellspacing="0" cellpadding="0">
<tr><td height="1" class="line"></td></tr>
<tr>
    <td align=center>
<!-- 페이지 표시 시작 -->
    <div style="margin:15 0">
        <? if ($prev_part_href) { echo "<a href='$prev_part_href'><img src='$board_skin_path/img/page_search_prev.gif' border='0' align=absmiddle title='이전검색'></a>"; } ?>
        <?
        // 기본으로 넘어오는 페이지를 아래와 같이 변환하여 이미지로도 출력할 수 있습니다.
        //echo $write_pages;
        $write_pages = str_replace("처음", "<img src='$board_skin_path/img/page_begin.gif' border='0' align='absmiddle' title='처음'>", $write_pages);
        $write_pages = str_replace("이전", "<img src='$board_skin_path/img/page_prev.gif' border='0' align='absmiddle' title='이전'>", $write_pages);
        $write_pages = str_replace("다음", "<img src='$board_skin_path/img/page_next.gif' border='0' align='absmiddle' title='다음'>", $write_pages);
        $write_pages = str_replace("맨끝", "<img src='$board_skin_path/img/page_end.gif' border='0' align='absmiddle' title='맨끝'>", $write_pages);
        //$write_pages = preg_replace("/<span>([0-9]*)<\/span>/", "$1", $write_pages);
        $write_pages = preg_replace("/<b>([0-9]*)<\/b>/", "<b>$1</b>", $write_pages);
        ?>
        <?=$write_pages?>
        <? if ($next_part_href) { echo "<a href='$next_part_href'><img src='$board_skin_path/img/page_search_next.gif' border='0' align=absmiddle title='다음검색'></a>"; } ?>
    </div>
<!-- 페이지 표시 끝 -->
<!-- 검색 시작 -->
    <div style="text-align:right;">
        <form name="fsearch" method="get">
        <input type="hidden" name="bo_table" value="<?=$bo_table?>">
        <input type="hidden" name="sca"      value="<?=$sca?>">
        <select name="sfl" style="width:60px;">
            <option value="wr_subject">제목</option>
            <option value="wr_content">내용</option>
            <option value="wr_subject||wr_content">제목+내용</option>
            <option value="mb_id,1">회원아이디</option>
            <option value="mb_id,0">회원아이디(코)</option>
            <option value="wr_name,1">글쓴이</option>
            <option value="wr_name,0">글쓴이(코)</option>
        </select>
        <input name="stx" class="input2" maxlength="15" size="15" itemname="검색어" required value='<?=stripslashes($stx)?>'>
        <input type="radio" name="sop" value="and">and
        <input type="radio" name="sop" value="or">or
        </form>
    </div>
<!-- 검색 끝 -->
    </td>
</tr>
</table>

</td>
</tr>
</table>

<script language="JavaScript">
//if ("<?=$sca?>") document.fcategory.sca.value = "<?=$sca?>";
if ("<?=$stx?>") {
    document.fsearch.sfl.value = "<?=$sfl?>";
    document.fsearch.sop.value = "<?=$sop?>";
}
</script>

<script language="JavaScript">
// HTML 로 넘어온 <img ... > 태그의 폭이 테이블폭보다 크다면 테이블폭을 적용한다.
function resize_image()
{
    var target = document.getElementsByName('target_resize_image[]');
    var image_width = parseInt('<?=$board[bo_image_width]?>');
    var image_height = 0;

    for(i=0; i<target.length; i++) {
        // 원래 사이즈를 저장해 놓는다
        target[i].tmp_width  = target[i].width;
        target[i].tmp_height = target[i].height;
        // 이미지 폭이 테이블 폭보다 크다면 테이블폭에 맞춘다
        if(target[i].width > image_width) {
            image_height = parseFloat(target[i].width / target[i].height)
            target[i].width = image_width;
            target[i].height = parseInt(image_width / image_height);
        }
    }
}

window.onload = resize_image;

function win_min_pop(URL){
var xpos = screen.availWidth;
var ypos = screen.availHeight;
window.open(URL,'write_popup','width=650,height=400,toolbars=no,resizable=yes,scrollbars=yes');
}
</script>

<? if ($is_checkbox) { ?>
<script type="text/javascript">
function all_checked(sw) {
    var f = document.fboardlist;

    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]")
            f.elements[i].checked = sw;
    }
}

function check_confirm(str) {
    var f = document.fboardlist;
    var chk_count = 0;

    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
            chk_count++;
    }

    if (!chk_count) {
        alert(str + "할 게시물을 하나 이상 선택하세요.");
        return false;
    }
    return true;
}

// 선택한 게시물 삭제
function select_delete() {
    var f = document.fboardlist;

    str = "삭제";
    if (!check_confirm(str))
        return;

    if (!confirm("선택한 게시물을 정말 "+str+" 하시겠습니까?\n\n한번 "+str+"한 자료는 복구할 수 없습니다"))
        return;

    f.action = "./delete_all.php";
    f.submit();
}

// 선택한 게시물 복사 및 이동
function select_copy(sw) {
    var f = document.fboardlist;

    if (sw == "copy")
        str = "복사";
    else
        str = "이동";
                     
    if (!check_confirm(str))
        return;

    var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");

    f.sw.value = sw;
    f.target = "move";
    f.action = "./move.php";
    f.submit();
}
</script>
<? } ?>
  • 복사

댓글 전체

안녕하세요 균이님! 매번 답변 너무 감사드립니다
말씀해주신대로 했더니 한번에 적용이 안 돼서
if (strpos($lists[$ii][wr_option], "secret") !==false)
이렇게 고쳤더니 제대로 적용이 되네요. 정말 감사드립니다. 혹시 댓글로 추가 질문드려도 될런지..
글쓰기에서 html 체크를 안해도 태그가 그냥 먹혀버리네요ㅠㅠ write.skin.php의 문제는 아닌 것 같은데 혹시 짐작가시는게 있으시면 염치불구하고 답변 좀 부탁드립니다.
그렇네요 $lists[$ii][wr_option] 이라고 해야하는데...
$list 로 충분한데 필요없는 $lists를 만든 것을 보고 뭐하러 저렇게 했을까 살펴보다가 빼먹었네요

html 체크를 안해도 <--- echo $lists[$ii][wr_option]; 해보세요. 무엇이 나오는지...그걸봐야 일단 진단을..
답변확인이 늦어서 죄송합니다.
html 체크한 글에는 html2
비밀글 체크한 글에는 secret
둘다 체크한 글은 콤마찍고 둘다 나와있습니다.
공지는 체크해도 옵션이 안뜨네요. 방명록게시판이 참.. 어렵네요ㅠㅠ
© SIRSOFT
현재 페이지 제일 처음으로