채택완료

게시판 리스트보기에 비번걸기

비회원이 사용할 수 있는 게시판을 보면 일단 리스트가 바로 보이게 되는데,

비회원중에서 특정 암호를 아는 사람만 쓸수 있는 게시판으로 운영하려고 합니다.

즉, 모임에서 공통 비번을 공유하고, 특정 게시판에 들어가려면 바로 리스트가 보이는 게 아니라

비번 입력창이 뜨게 하려면 어떻게 하면 될까요?

답변 1개 / 댓글 1개

채택된 답변
+20 포인트

이건 그누보드 비밀글을 볼때의 방식을 이해하면 만들수 있습니다.

 

비밀글 열람하는 방식 참고해서 코드 대충 짜보았으니 참고해보세요.

 

사전 작업 : 패스워드를 적용할 게시판 설정 여분필드1에 비밀번호를 입력을 합니다.

(게시글 목록 보기와 뷰는 레벨 1로 합니다)

 

1.  그누보드5/bbs/에 파일 생성 

 - 파일명 : board_password.php

 

Copy
<?php
include_once('./_common.php');
  
$action = https_url(G5_BBS_DIR).'/board_password_check.php'; 

include_once(G5_PATH.'/head.sub.php');
$g5['title'] = "게시판 비밀번호 입력";
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>


<!-- 비밀번호 확인 시작 { -->
<div id="pw_confirm" class="mbskin">
    <h1><?php echo $g5['title'] ?></h1>
    <p>비밀번호를 입력해주세요. </p>
    <form name="fboardpassword" action="<?php echo $action;  ?>" method="post">
    <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
    <fieldset>
        <label for="pw_wr_password" class="sound_only">비밀번호<strong>필수</strong></label>
        <input type="password" name="wr_password" id="password_wr_password" required class="frm_input required" size="15" maxLength="20" placeholder="비밀번호">
        <input type="submit" value="확인" class="btn_submit">
    </fieldset>
    </form>
</div>
<!-- } 비밀번호 확인 끝 -->
<?


include_once(G5_PATH.'/tail.sub.php');

 

2.  그누보드5/bbs/에 파일 생성 

 - 파일명 : board_password_check.php

 

Copy
<?php
include_once('./_common.php');

    $qstr = 'bo_table='.$bo_table;

    if($wr_password != $board['bo_1']) { //폼에너 넘긴 비밀번호와 여분필드1에서 설정한 비밀번호가 다르다면
        alert('비밀번호가 틀립니다.');
    }

   //비밀번호가 맞다면

    $ss_name = 'ss_board_pw_'.$bo_table; 
    set_session($ss_name, TRUE);//세션을 생성(다시 접근시 비번 없이 접근 가능하고 게시글도 읽을수 있어야 하기 때문에)

goto_url(short_url_clean(G5_HTTP_BBS_URL.'/board.php?'.$qstr));

 

3. 비번을 적용할 해당 게시판 스킨의

- list.skin.php 상단

 

Copy
if ($is_guest && $board['bo_1']){    //비회원이고 비번설정이 되어있으면
    $ss_name = 'ss_board_pw_'.$bo_table; 
    if (!get_session($ss_name)) //세션을 확인하여 패스워드 통과 못했으면 패스워드 입력 칸으로 이동
        goto_url(G5_BBS_URL.'/board_password.php?bo_table='.$bo_table);
}

 

4. 비번을 적용할 해당 게시판 스킨의

- view.skin.php 상단

Copy
if ($is_guest && $board['bo_1']){    
    $ss_name = 'ss_board_pw_'.$bo_table; 
    if (!get_session($ss_name)) alert("잘못된 접근입니다"); //비번 통과를 못했으면 게시글 열람 불가(그누보드 구조를 아는 회원은 게시글로 다이렉트로 올수 있기 때문)
}

 

대략 이런식으로 가능할것 같습니다.

 

허점이 많은 코드이긴 하지만 참고해보세요.

 

답변에 대한 댓글 1개

상세한 답변 정말 감사 드립니다. 제가 확인이 늦어서 채택이 늦었네요.
하나씩 살펴보면서 적용해 보겠습니다. 감사합니다.

답변을 작성하려면 로그인이 필요합니다.