PHP


게시글 '그누보드 비밀글 패스워드 입력 시 팝업 사용하기'에 대한 정보
그누보드 비밀글 패스워드 입력 시 팝업 사용하기
등록일 2009-10-26 조회 10,237
bbs/list.php 파일의 해당부분을 수정 합니다.
107 Line 부근
while {
               중략...
    $i++;
    $k++;
}

$i++; 바로 윗 부분에
// 자신의 글이거나 관리자라면 통과
    if (($list[$i][mb_id] && $list[$i][mb_id] == $member[mb_id]) || $is_admin)
        ;
    else
    {
        // 비밀글이라면
        if (strstr($list[$i][wr_option], "secret"))
        {
            // 회원이 비밀글을 올리고 관리자가 답변글을 올렸을 경우
            // 회원이 관리자가 올린 답변글을 바로 볼 수 없던 오류를 수정
            $is_owner = false;
            if ($list[$i][wr_reply] && $member[mb_id])
            {
                $sql = " select mb_id from $write_table
                          where wr_num = '{$list[$i][wr_num]}'
                            and wr_reply = ''
                            and wr_is_comment = '0' ";
                $row = sql_fetch($sql);
                if ($row[mb_id] == $member[mb_id])
                    $is_owner = true;
            }

            $ss_name = "ss_secret_{$bo_table}_{$list[$i][wr_num]}";
            if (!$is_owner)
            {
                //$ss_name = "ss_secret_{$bo_table}_{$wr_id}";
                // 한번 읽은 게시물의 번호는 세션에 저장되어 있고 같은 게시물을 읽을 경우는 다시 패스워드를 묻지 않습니다.
                // 이 게시물이 저장된 게시물이 아니면서 관리자가 아니라면
                //if ("$bo_table|$write[wr_num]" != get_session("ss_secret"))
                if (!get_session($ss_name)) {
                    // 로그인된 회원의 권한이 설정된 읽기 권한보다 작다면
                    if ($member[mb_level] < $board[bo_read_level])
                    { } else {
                        $list[$i]['href'] = "javascript:popup_window("./password.php?w=s&bo_table=$bo_table&wr_id={$list[$i][wr_id]}{$qstr}", "password_popup", "width=700, height=500");";
                    }
                    //goto_url("./password.php?w=s&bo_table=$bo_table&wr_id=$wr_id{$qstr}");
                    //$g4[bbs_path]/board.php?bo_table=$board[bo_table]&wr_id=$list[wr_id]
                }
            }
        }
    }

    $i++;
    $k++;
}

이렇게 수정 합니다.

bbs/password_check.php 파일을 아래와 같이 수정 합니다.

<?
include_once("./_common.php");

if ($w == "s") {
    $qstr = "bo_table=$bo_table&sfl=$sfl&stx=$stx&wr_id=$wr_id&page=$page";

    $wr = get_write($write_table, $wr_id);

    if (sql_password($wr_password) != $wr[wr_password])
        alert("패스워드가 틀립니다.");

    // 세션에 아래 정보를 저장. 하위번호는 패스워드없이 보아야 하기 때문임.
    //$ss_name = "ss_secret_{$bo_table}_{$wr_id}";
    $ss_name = "ss_secret_{$bo_table}_{$wr[wr_num]}";
    //set_session("ss_secret", "$bo_table|$wr[wr_num]");
    set_session($ss_name, TRUE);

} else
    alert("w 값이 제대로 넘어오지 않았습니다.");


if($w == "s") {
    echo "
    <script type='text/javascript'>
    opener.location.href = './board.php?$qstr';
    this.name = 'opener';
    this.close();
    </script>
    ";
} else {
    goto_url("./board.php?$qstr");
}
?>

bbs/password.php 파일을 아래와 같이 수정 합니다.
<?
include_once("./_common.php");

if ($w == "u")
    $action = "./write.php";
else if ($w == "d")
    $action = "./delete.php";
else if ($w == "x")
    $action = "./delete_comment.php";
else if ($w == "s")
{
    // 패스워드 창에서 로그인 하는 경우 관리자 또는 자신의 글이면 바로 글보기로 감
    if ($is_admin || ($member[mb_id] == $write[mb_id] && $write[mb_id]))
        goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id");
    else
        $action = "./password_check.php";
}
else
    alert("w 값이 제대로 넘어오지 않았습니다.");

$g4[title] = "패스워드 입력";
include_once("$g4[path]/head.sub.php");

if ($w != "s") {
    if ($board[bo_include_head]) { @include ($board[bo_include_head]); }
    if ($board[bo_content_head]) { echo stripslashes($board[bo_content_head]); }
}

$member_skin_path = "$g4[path]/skin/member/$config[cf_member_skin]";

include_once("$member_skin_path/password.skin.php");

if ($w != "s") {
    if ($board[bo_content_tail]) { echo stripslashes($board[bo_content_tail]); }
    if ($board[bo_include_tail]) { @include ($board[bo_include_tail]); }
}

include_once("$g4[path]/tail.sub.php");
?>


* 패스워드 입력창 사용 기준 :
 읽기권한 1 일 때 만 작동.

 비회원은 리스트에서 비밀글 클릭시 팝업으로 패스워드 입력.

* 해당 팁은 게시물 수정,삭제 시에는 팝업이 아닌 기존의 방식대로 작동 합니다.

*주의사항 :
 만약 리스트에 마우스 오버되었을때 javascript:popup_window( 라고만 링크가 표시 된다면
스킨 파일의 list.skin.php 파일내에
echo "<a href="{$list[$i][href]}">{$list[$i][subject]}</a>";
부분의 " 따옴표를 ' 이렇게 바꿔 주세요..