au_auth('r','w','d')와 wr_option('html1', 'html2', 'secret', 'mail') ... > 그누4 질문답변

그누4 질문답변

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

au_auth('r','w','d')와 wr_option('html1', 'html2', 'secret', 'mail') ... 정보

au_auth('r','w','d')와 wr_option('html1', 'html2', 'secret', 'mail') ...

본문

$au_auth는
[adm] auth_list.php와 auth_update.php에서...
checkbox를 이용하여 $r='r' or '' / $w='w' or '' / $d='d' or '' 를 받아서
sql 문에 au_auth='$r,$w,$d' 로 처리하고 있네요.

* 참고로, 이런 방법은 어떨런지...(au_auth는 3개면 되죠, wr_option 이 4개라...)
au_auth SET('read', 'write', 'delete') NOT NULL
SET member Decimal ValueBinary Value
read10001
write20010
delete40100
extra81000


checkbox에서 $read=1, '' / $write=2,'' / $delete=4,''를 넘겨주면
$new_auth=$read+$write+$delete;

insert into TABLE ..., set au_auth = $new_auth, ...;
NUM으로 삽입(생성)
1 -- read
2 -- write
4 -- delete
8 -- extra

3 -- read, write (1+2)
5 -- read, delete (1+4)
6 -- write, delete (2+4)
7 -- read, write, delete (1+2+4)
...

update TABLE set au_auth = au_auth | NUM;
NUM으로 수정

update TABLE set au_auth = au_auth & ~NUM;
NUM을 삭제

SELECT * FROM TABLE WHERE ((au_auth & (1+2+8) == 0) AND(au_auth & (4+16) == 4+16));
* 그누보드에서는 권한 체크를 하고 있으니, 이렇게 검색할 필요는 없겠죠... 서버에 부하가 많이 걸리나 봅니다.

PHP에서 ...
$result=mysql_query($query);
if(mysql_num_rows($result)>0){
$row=mysql_fetch_row($result);
$options=explode("','",preg_replace("/(enum|set)\('(.+?)'\)/","\\2",$row[1]));
}
* 그누보드도 이와 비슷하게 처리하고 있죠.

댓글 전체

* adm/auth_list.php Line:184

        <tr align=center><!--  r,w,d를 1,2,4로 수정 -->
        <td width=33%><input type=checkbox name='r' value='1' checked></td>
        <td width=33%><input type=checkbox name='w' value='2'></td>
        <td width=33%><input type=checkbox name='d' value='4'></td>
        </tr>


* adm/auth_update.php Line:12

$sql = " insert into $g4[auth_table]
            set mb_id = '$mb_id',
                au_menu = '$au_menu',
                au_auth = $r+$w+$d ";//au_auth = '$r,$w,$d' "; 수정
$result = sql_query($sql, FALSE);
if (!$result) {
    $sql = " update $g4[auth_table]
                set au_auth = $r+$w+$d
              where mb_id = '$mb_id'
                and au_menu = '$au_menu' ";//set au_auth = '$r,$w,$d' 수정
    sql_query($sql);
그누보드5+PHP5+MySQL5를 기다리며...늘 감사드립니다.

현재(PHP4,MySQL4 환경일테죠) 문제 없지만,
PHP5+MySQL5 환경에 맞추려 소스를 훑어보며 몇차례 질문아닌 질문을 올렸다가...
게시판만 어질러 놓는 느낌도 있고 해서 지웠었습니다.
PHP의 변화에 맞춰 그누보드5 역시 많은 변화가 예상되어, 필요한 부분 수정하여 적용한다는 게 부질없다는 생각도 듭니다.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT