게시판 수정시 다른사람도 수정 > 그누4 질문답변

그누4 질문답변

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

게시판 수정시 다른사람도 수정 정보

게시판 수정시 다른사람도 수정

본문

게시판을 수정할수 있는 권한을

같은 레벨 이상의 사람에게 주었는데

문제가

한사람이 글을쓰고

두번째 사람과 세번째 사람이

동시에 수정을 누르면

불러오는 값이 똑같은 상태에서

서로 수정을 하고 다른시간에

확인버튼을 누르면

먼저 올린사람의 글이 없어지는데

이걸 해결하기 위해 두번째 사람이 수정중이면

세번째 사람이 글을 못쓰게 막아야하는데 어떻게 해야 할지 막막하네요

제가 게시판상에서 수정한 소스는

view.php와 common.lib 파일 수정했습니다.
view.php 파일에서

if ( ($member[mb_id] && ($member[mb_id] == $write[mb_id])) || $is_admin 에 다음을 추가하시고

if ( ($member[mb_id] && ($member[mb_id] == $write[mb_id])) || $is_admin && (($write[mb_id] != $member[mb_id]) && ($member[mb_level] >= $write[mb_level]))) {

common.lib.php
파일에서
if ($board['bo_admin'] == $mb_id || ($member[mb_level] >= $write[mb_level])) return 'board';


글쓴 사람과 다른 회원의 레벨이 같거나 더 높으면 수정할수 있게 했는데

어떤 방식으로 해야하는지 모르겠습니다.

ㅠㅠ

제가 가진 포인트가 이거밖에 없어서 죄송합니다.

댓글 전체

예비필드에 int로 값을 넣으시고
수정모드일때 쿼리로 int값을 1을 넣습니다.
그리고 수정버튼을 누를때  int값이 0일때만 수정이 가능하도록 하면

먼저 수정누른사람만 수정이 가능하겠네요
일단 기본적인 부분으로는 조금 힘들듯 하구요 -_-;;

루리즈 님의 방법도 사용량이 많지 않으시거나 정밀한 작업이 아니시라면 충분히 사용해볼 가치가 있습니다.

그러나 좀더 철저한 컨트롤을 원하신다면

filelock() 또는 recodr lock 개념을 조금은 이해 해둘 필요가 있을듯 합니다.

mysql 자체도 lock 개념이 존재합니다.

근데 이게 file 단위 였던지 record 단위였던지 가물가물 하네요 -_-;;


물런 여태까지의 게시물은 1:1 작성 수정을 원칙으로 하였고

lock 개념을 거의 쓸 필요가 없었기 때문에 구현되지 않았습니다

일단 생각해보실 부분으로

수정하러 갈때 혹시 어느 분께서 고치시는 중인가 ? -> 체크하는 루틴
기존에 딴분이 이화일을 수정중이라면 그분은 lock 걸고 수정 모드 돌입
딴분이 수정중이라서 수정 불가능 처리 부분
아니라면 이제 본인이 수정모드로 변환 하면서 lock 걸기
-> 딴분 수정 불가능

대충 이렇게 처리 로직을 생각하실수 있으나 -_-;;

역시 락은 deadlock 부분의 관건일듯 ;;

역쉬 DB 로 삽질 하기는 귀찮은 ;;;
일종의 buffering(버퍼링) 모드라고 하죠 (DB 사용 개념 배울때 ㅠ.ㅠ)

수정완료 처리 부분에서
lock 일 가지고 있는 사람만 수정이 가능하니 정보 수정 완료후 lock 해제 ;;

그럼 처리는 끝나는 부분일듯 합니다.

이런 부분을 기초로 구현 하시면 될듯 합니다.

손이 조금 많이 가시겠지만...

게시물 한개 기능 추가하시는데 너무 황당한 부분을 말씀 드리는지도 모르겠습니다....
제가 연휴관계로 쉬느라 확인을 이제야 했습니다.
아직 미진한부분이 많이 수정이 오래 걸리네요
감사하고 새해 복 많이 받으세요~
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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