head	1.5;
access;
symbols;
locks
	root:1.5; strict;
comment	@# @;


1.5
date	2009.11.15.20.17.00;	author root;	state Exp;
branches;
next	1.4;

1.4
date	2009.11.15.20.03.31;	author root;	state Exp;
branches;
next	1.3;

1.3
date	2009.11.15.20.02.43;	author root;	state Exp;
branches;
next	1.2;

1.2
date	2009.11.15.19.41.09;	author root;	state Exp;
branches;
next	1.1;

1.1
date	2009.11.15.19.35.36;	author root;	state Exp;
branches;
next	;


desc
@/opt/nforge/var/wiki/jsboard/data/text/JSBoard_2fOperate
@


1.5
log
@211.37.104.183;;oops 김정균 ;;
@
text
@#title JSBoard 운영 매뉴얼

[[TableOfContents]]

<!> 외부 회원 DB를 사용할 경우, 1, 4번 항목은 무시하고, 6번 항목으로 건너 뛰도록 한다.

== 유저 가입 ==

JSBoard 의 로그인 기능을 이용하기 위한 유저 가입기능이다. '''''http://domain.com/jsboard/regist.php''''' 로 접근을 하면 된다.

단, 주의할 것은 로그인 모드를 사용하지 않더라도 게시판 관리자 권한을 다른 사람에게 주기 위해서는 유저 가입이 되어 있어야 한다. 해당 게시판 설정에서 지정된 유저 ID를 userdb 에서 찾아서 비교하기 때문에 여기서 등록이 되어 있어야 한다.

== 전체 관리자 모드 ==

전체 관리자는 어떤 로그인 모드에 상관없이 모든 권한을 행사할 수 있다. 심지어는 수정삭제에 인증을 필요로 하지 않는다. 또한 패스워드를 요구하는 경우 어드민 로그인 상태가 아니라도 전체 관리자 패스워드나 해당 게시판 관리자의 패스워드로만으로도 수정삭제가 가능하다.

전체 관리자의 설정은 처음 설치를 할때 '''''Installer''''' 를 사용하였다면 임의의 유저 ID 로 로그인을 할 수 있으나 수동 설치를 하였다면 특별하게 수정하지 않는한 admin 이라는 ID로 생성이 되었을 것이다.

전체 관리자 설정을 하기 위해서는 '''''http://domian.com/jsboard/login.php?type=admin'''''으로 로그인을 한다. 어떤 경우 '''''페이지를 열수 없습니다'''''라는 메세지가 나오는 경우가 있는데 이 때엔 페이지를 한번 리로드해 주면 들어가진다. 또는 관리자 모드로 이미 로그인을 해 있는 상태라면 '''''http:/domain.com/jsboard/admin/''''' 으로 접근을 하면 된다.

어드민에 로그인을 하면 다음과 같은 화면을 볼수가 있다

[[attachment(jsadmin.jpg)]]

한글을 읽을 줄 알면 현재 보이는 페이지에서는 별 어려움이 없을 줄 안다. 일단 제일 하단의 알파벳 별이라는 것은 게시판 이름을 알파벳 별로 분류를 하여 보여주게 된다. 알파벳별 위의 1-10까지의 숫자는 게시판이 많을 경우에 페이지 별로 분리를 해서 보여주게 되는 것이다.

합계에서  51582 [ 51584 ] 과 같이 출력되는 이유는 이 어드민 관리자에서는 JSBoard 에서 사용하는 테이블만 보여주기 때문에 여기서 안보이는 것들중 나머지는 [ ] 에 합쳐져서 나오게 되는 것이다.

옵션에서는 [ 보기 ] 는 해당 게시판을 접근한다. [ 설정 ] 은 해당 게시판의 관리자 모드로 들어가게 된다. [ 통계 ] 는 해당 게시판의 통계를 보여주게 되는 것이다.

다음 중앙부분의 우측에 [ 유저관리 ] 는 JSBoard 의 유저들을 관리를 한다. 유저 관리에서는 해당 유저의 패스워드, 이름, 이메일, 홈페이지를 변경할수 있다. ID 는 수정이 불가능 하다.

[ 로그아웃 ] 은 말 그대로 관리자를 종료 하는데 사용한다. 사용후에는 꼭 로그아웃을 해 주는 것이 좋다.

[ 전역변수 설정 ] 은 이 문서가 있는 디렉토리의 [wiki:JSBoard/Operate 설정 파일 매뉴얼]을 참고하도록 한다.


== 게시판 관리자 모드 ==

전체 관리자 또는 각 게시판 관리자 모드로 로그인을 했을 경우 게시판에 admin 링크가 나타나게 된다. 이곳으로 들어가 설정을 하면 된다. 또는 직접 '''''data/*/config.php'''''를 수정을 할수 있다. 이때에는 [wiki:JSBoard/Operate 설정 파일 매뉴얼]을 참조하면 된다.


== 로그인 모드 ==

JSBoard 의 로그인 모드는 총 7가지 단계를 가진다. 각 단계의 설정은 다음과 같다. 모드 6 은 아직 지원하지 않으며 곧 추가할 예정이다. 현재 구현은 0-5 까지 이다

|| 0 ||공개 게시판[[br]]로그인을 안해도 상관이 없지만 admin 로그인을 했을 경우에는 인증이 필요없음. ||
|| 1 ||공개 게시판(공지전용)[[br]]admin 인증을 하지 않는 한 로그인을 하든 말든 read 만 가능함. admin 의 경우 모든 기능을 사용가능 ||
|| 2 ||로그인 게시판[[br]]로그인시 모든 기능 사용가능. 수정, 삭제에 한해서는 자신의 글만 가능 (admin의 경우 제한 없음) ||
|| 3 ||로그인 게시판(공지전용)[[br]]로그인시 읽기만 가능. admin 에게만 모든 권한이 있음. ||
|| 4 ||공개 게시판(읽기와 답장, 그리고 자기글만 삭제 가능)[[br]]admin 로그인 시에만 쓰기가 가능함. 읽기, 댓글은 누구나 가능. 그 외에는 패스워드로 수정 삭제가 가능함. ||
|| 5 ||로그인 게시판(읽기와 답장, 그리고 자기글만 삭제 가능)[[br]]admin 로그인 시에만 쓰기가 가능. 읽기와 댓글은 로그인을 한 유저들만 가능. 그 외에는 자신의 글만 수정 삭제 가능. ||
|| 6 ||공개 게시판(어드민만 답장 가능)[[br]]admin 로그인 시에만 답장이 가능하며 글 등록은 누구나 할 수 있음 ||
|| 7 ||로그인 게시판(어드민만 답장 가능)[[br]]admin 로그인 시에만 답장이 가능하며 글 등록은 로그인 유저만 가능 ||


== 활용 ==
=== 게시판 링크 하기 ===

게시판을 생성후 게시판을 링크하기 위해서는 링크를 하려는 파일에 {{{<a href="http://domain.com/jsboard/list.php?table=게시판이름">게시판</a>}}}와 같이 추가해 주면 된다.

=== 게시판 디자인 붙이기 ===

게시판에 디자인을 붙이는 방법은 각 게시판 관리자의 하단에 보면 '''''HTML Header/Tail'''''이 존재를 한다. 이것을 이용하여 할수 있다. 일단 간단하게 예를 들자면

{{{#!vim html
<html>
<head>
........
</head>

<body>
.......


 ───────────────────────────────────────┐
                      게시판 테이블                                            │  
 ───────────────────────────────────────┘

.......
</body>
</html>
}}}

이 하나의  html file을 이루어야 한다고 가정을 하도록 하겠다. 그렇다면 게시판 테이블을 기준으로 하여 위쪽의 코드들은 HTML Header의 자리에 넣어 주면 되며
하단 부분은 HTML tail 에 넣어주면 되는 것이다. 단 주의 할것은 상단과 하단을 넣어줄 경우에 이미  '''''<html>~<body>''''' 의 경우에는 게시판에서 제공을 하고 있는것이기 때문에 기존의 게시판의 html 소스를 잘 보고 판단해서 넣어야 한다. tail 의 '''''</body>~</html>''''' 역시 넣을 필요는 없다.

게시판 html source 에서

{{{#!vim html
<!-- ======================= A foreword  ======================= --> 

<!-- ======================= A foreword  ======================= --> 
}}}

의 부분에 Header 의 내용이 들어가게 되는 것이고

{{{#!vim html
<!-- ========================= Tail ========================= --> 

<!-- ========================= Tail ========================= --> 
}}}

의 부분에 tail 의 내용이 들어가는 것이니 꼭 html souce를 확인한 후에 필요없는 코드는 삭제를 하고 넣도록 한다.

=== 전체 관리자 링크 하기 ===

어느곳에서나 상관 없이 '''''http://domain.com/jsboard/login.php?type=admin''''' 으로 링크를 하면 된다. 만약 admin login 상태에서만 전체 관리자 링크를 보여주고 싶다면 '''''http://domain.com/jsboard/admin/''''' 으로 링크를 해 주면 된다.

전체 어드민 로그인 상태를 알고 싶다면 다음의 코드를 활용할 수 있다. 일단 코드를 적기 전에 알아두어야 할 부분은 '''''config/global.php''''' 의 '''''$jsboard''''' 변수값을 알아 놓아야 한다. 이 값에 따라 달라지기 때문이다. 만약 {{{$jsboard = "login";}}} 이라고 지정이 되어 있다면 로그인에 관련된 변수명은 login+jsboard 즉 '''''$loginjsboard'''''가 되는 것이다.

{{{#!php
<?
if(session_is_registered("$loginjsboard") && $loginjsboard[pos] == 1) {
    echo "<a href=http://domain.com/jsboard/admin/>전체 관리자</a>";
}
?>
}}}

=== 로그인 창 만들기 ===

로그인 화면은 어디에서나 다음의 코드를 원하는 위치에 넣어주면 된다. 

{{{#!vim html
<form method="post" action="http://domain.com/jsboard/session.php">
<input type="text" name="lu"> ID
<input type="password" name="lp"> Password
<input type="submit" value="ENTER">
<input type="hidden" name="m" value="login">
</form>
}}}

위의 코드만 원하는 페이지에 넣어주면 된다. 즉 ID를 '''''lu''''' 에 password 를 '''''lp''''' 에 넣어서 session.php 에 넘겨 주면 된다. 좀더 자세한 것을 원하면 jsboard 안에 들어있는 session.php 를 분석해 보도록 한다.

=== 로그아웃 링크 만들기 ===

로그아웃 링크는 일단 '''''<a href="./session.php?m=logout&table=table_name">logout</a>'''''이 가장 기본적이다. 이렇게 로그아웃이 구성되어 있을 경우에는 로그아웃 후에는 각 게시판의 로그인 페이지로 이동을 한다. 

만약 로그아웃 후에 각 게시판의 로그인 페이지가 아닌 다른 페이지로 이동을 하고 싶을 경우에는 다음의 2 가지 방법 중 하나를 사용한다. 

 1. 각 게시판 관리자에서 Logout Page 를 지정한다. (설정 파일을 직접 수정 할 경우에는 '''''$print['dopage']''''' 를 지정을 한다. 
 1. 로그아웃 페이지를 다음과 같이 만든다.
 {{{#!php
<?
$url = rawurlencode("http://domain.com/test/test.html");
echo "<a href=./session.php?m=logout&urls=$url>logout</a>\n";
?>
}}}

1 번과 2 번의 경우중 2번의 경우가 1 번의 경우보다 우선한다


== 외부 회원 DB 연동 ==

<!> 외부의 회원 DB와 연동을 할 경우, 기존의 jsboard 의 회원 DB 는 무조건 무시하고 생각을 해야 한다.

=== jsboard 설정 ===

외부의 회원 DB를 사용하기 위해서는 사용 하려는 회원 DB에 '''''ID, 이름, 패스워드, 이메일, 홈페이지''''' 와 같이 5개의 필드가 존재해야 한다. 이것을 명심하고 진행하자.

외부회원 DB 의 설정은 jsboard/config/external.php에서 하도록한다. 없으면 새로 만들면 되며 이 파일의 소유권과 퍼미션은 global.php와 동일하게 한다. 이 파일은
기본적으로 위치가 안되어 있으니 필요하면 '''''jsboard/INSTALLER/sample/admin/external.php.orig'''''를 '''''jsboard/config/external.php'''''로 복사하여 사용을 하면 된다. 외부 회원 DB를 사용 할 경우에는 관리자 페이지에서 회원 정보를 관리할 수 없게 된다.

일단 JSBoard 에서 외부 회원  DB 와 연동을 할때 필요한 external.php의 변수들을 나열하겠다

{{{#!php
<?
###############################################################################
#  외부 DB 를 이용한 인증 정보
#  JSBoard 의 인증을 JSBoard 의 user table 을 이용하지 않고 싶을 경우
#  사용하는 기능
###############################################################################
# 외부 DB 사용여부 표시 
$edb['uses'] = 1;
    
# 외부 DB 정보
$edb['server'] = "$db['server']";  # DB address
$edb['user'] = "test";           # DB user name
$edb['pass'] = "test";           # DB password
$edb['name'] = "test";           # DB database name
$edb['table'] = "user_info";     # 회원관리 DB 테이블 이름
}}}

위의 값들은 회원 정보가 들어있는 DB의 정보들이다. 위의 JSBoard 관련 DB정보와 별 다를 바는 없을 것이나 여기서는 table 이름까지 지정해 줘야 한다는 점이 조금 틀리다.

{{{#!php
# 필요한 필드 정의
$edb['userid'] = "id";
$edb['username'] = "name";
$edb['useremail'] = "mail";
$edb['userurl'] = "homepage";
$edb['userpasswd'] = "pass";
}}}

여기서는 만약 필요한 필드 이름이 jsboard 와 틀릴 경우 매핑을 시키기 위한 변수들을 지정한다.

||userid ||회원 DB 에서 사용하는 회원 ID 필드 이름을 지정한다. ||
||username ||회원 DB 에서 사용하는 회원 이름 필드 이름을 지정한다. ||
||useremail ||회원 DB 에서 사용하는 회원 이메일  필드 이름을 지정한다. ||
||userurl ||회원 DB 에서 사용하는 회원  홈페이지 필드 이름을 지정한다. ||
||userpasswdv회원 DB 에서 사용하는 회원  암호 필드 이름을 지정한다. ||

{{{#!php
# 회원 정보를 가져오는 SQL 문을 직접 작성할 경우 또는
# 회원 정보를 조인을 해서 가져와야 할 경우 사용
$edb['sql'] = "";
}}}

이 부분은 만약 필요한 필드가 모자르다거나 또는 회원 DB를 join을 해야할 경우에 직접 필요한 결과들은 불러 올 SQL 문을 지정을 한다. 만약 회원 table 이 하나이고 JSBoard 에 필요한 5개의 필드를 모두 가지고 있다면 굳이 $edb['sql'] 은 지정할 필요가 없다.

예를 들면 다음과 같이 할 수 있다.

{{{#!vim sql
SELECT id AS nid,name AS name,mail AS email,homepage AS url
       password AS passwd
  FROM user_info WHERE id = '$id'
}}}

여기서 주의해야 할 것은 쿼리결과로 나오는 필드이름들을 jsboard 에 필요한 이름으로 alias 를 해야 한다. 각각은 다음과 같다.

||nid ||회원 ID ||
||name ||회원이름 ||
||email ||회원 이메일 ||
||url ||회원 홈페이지 ||
||passwd ||회원 패스워드 ||

{{{#!php
# super user 의 id 정의
$edb['super'] = "admin";
}}}

JSBoard 전체를 관리 할 유저의 id를 적는다. 물론 회원 DB에 존재하는 관리자를 지정해야 한다. 이 유저는 JSBoard 에 대해서는 막강한 권력을 가지게 된다.


{{{#!php
# 패스워드 필드 암호화 여부
# crypt() 암호화일 경우 0, PLAIN 일 경우 1
$edb['crypts'] = 0;
?>
}}}

회원 DB의 패스워드가 암호화가 되어 저장이 되는지 아닌지를 결정한다. 암호화는 php 의 crypt() 함수를 기준으로 한다. 그 외에는 필자가 어떻게 할 역량이 없다.

=== 외부 login과 연동 ===

일단 기존의 회원인증 로그인 페이지에서 인증을 성공을 하면 다음과 같이 값을 세션에 같이 올려 주면 된다. 

{{{#!php
session_start();

# JSBoard session 등록
$jsboardoopslogin = array("id"=>"$USER_ID","pass"=>"$USER_PASSWORD",
                          "name"=>"$USER_NAME","email"=>"$USER_EMAIL",
                          "url"=>"$USER_HOMEPAGE","pos"=>"$관리자여부",
                          "super"=>"$전체관리자_ID","external"=>1);
}}}

여기서 주의할 것은 pos 에는 전체관리자로 로그인을 했을 경우에는 1의 값이 들어가야 하며, 전체 관리자가 아닐 경우에는 0 을 주도록 한다. 또한 유저 패스워드는 crypt() 암호화를 한 다음 세션에 올려 주도록 한다. 

{{{#!php
session_register("$세션이름"); 
}}}

세션 등록시에 위의 예제에서 세션이름은 jsboard의 global.php 의 $jsboard 의 변수 값을 넣어주도록 한다. 즉 global.php 에

{{{#!php
##############################################################################
#  login mode Configuration
##############################################################################
# login variation name (This value must be modified as security problem)
$jsboard         = "ummha";

# Don't touch this line.
$jsboard         = "jsboard".$jsboard;
}}}

라고 지정이 되어 있다면 세션이름은 jsboardummha 가 된다. 즉 세션 등록은 '''''session_register("jsboardummha");'''''와 같이 되어야 한다.

=== 로그아웃 연동하기 ====

로그 아웃 시에는 일단 global.php에서 위에서 설명을 했듯이 '''''$edb['logout']'''''' 을 지정하여 로그아웃을 보내도록 한다. 로그아웃 할때 jsboard를 위해 올렸던 세션과 쿠키는 아래와 같이 삭제를 한다.    

{{{#!php
# 세션을 삭제
session_unregister("세션이름"); 
}}}

세션이름은 세션 등록시의 세션이름과 동일하다. 또는 5.5 로그아웃 링크 만들기를 참고한다.
@


1.4
log
@211.37.104.183;;oops 김정균 ;;
@
text
@d5 1
a5 1
<!> 외부 회원 DB를 사용할 경우, 1~4 항목은 무시하고, 6번 항목으로 건너 뛰도록 한다.
d152 137
@


1.3
log
@211.37.104.183;;oops 김정균 ;;
@
text
@d5 1
a5 1
<!> 외부 회원 DB를 사용할 경우, 1, 4 항목은 무시하고, 5번 항목으로 건너 뛰도록 한다.
@


1.2
log
@211.37.104.183;;oops 김정균 ;;
@
text
@d36 116
@


1.1
log
@211.37.104.183;;oops 김정균 ;;
@
text
@d11 1
a11 1
단, 주의 할것은 로그인 모드를 사용하지 않더라도 게시판 관리자 권한을 다른 사람에게 주기 위해서는 유저 가입이 되어 있어야 한다. 해당 게시판 설정에서 지정된 유저 ID를 userdb 에서 찾아서 비교하기 때문에 여기서 등록이 되어 있어야 한다.
d15 1
a15 1
전체 관리자는 어떤 로그인 모드에 상관없이 모든권한을 행사할수 있다. 심지어는 수정삭제에 인증을 필요로 하지 않는다.  또한 패스워드를 요구하는 경우 어드민 로그인 상태가 아니라도 전체 관리자 패스워드나 해당 게시판 관리자의 패스워드로만으로도 수정삭제가 가능하다.
d17 1
a17 1
전체 관리자의 설정은 처음 설치를 할때 '''''Installer''''' 를 사용하였다면 임의의 유저 ID 로 로그인을 할수 있으나 수동설치를 하였다면 특별하게 수정하지 않는한 admin 이라는 ID로 생성이 되었을 것이다.
d25 1
a25 1
한글을 읽을줄 알면 현재 보이는 페이지에서는 별 어려움이 없을줄 안다. 일단 제일 하단의 알파벳별이라는 것은 게시판이름을 알파벳 별로 분류를 하여 보여주게 된다. 알파벳별 위의 1-10까지의 숫자는 게시판이 많을 경우에 페이지 별로 분리를 해서 보여주게 되는 것이다.
d27 1
a27 1
합계에서  9 [13] 과 같이 출력되는 이유는 이 어드민 관리자에서는 JSBoard 에서 사용하는 테이블만 보여주기 때문에 여기서 안보이는 것들중 나머지는  [ ] 에 합쳐져서 나오게 되는 것이다.
d29 1
a29 1
옵션에서는  [보기] 는 해당 게시판을 접근한다. [설정] 은 해당 게시판의 관리자 모드로 들어가게 된다. [통계] 는 해당 게시판의 통계를 보여주게 되는 것이다.
@
