이메일로 피드백을 받았는데,
확인안해보시고 당연한 로직대로 말씀해주신것 같아 재차 남깁니다.
상황 요약합니다.
- 비밀 글을 비회원으로 작성한다.(패스워드도 입력한다)
- 작성된 글은 비회원들도 볼 수 있지만 패스워드를 입력해야만 볼 수 있다.
- 그 외 볼 수 있는 사용자는 관리자여야만 한다.
속성 설정은 다음과 같이했습니다.
- 게시판 스킨 : default
- 읽기권한, 쓰기권한 : 제한 없음
한번 비밀번호를 입력하면 두번째는 입력 창 없이 화면이 보여진다고 피드백 받았습니다.
위 부분에 대한 기능은 서버의 세션 기능을 사용하신댓는데..
이 부분에서 기능상 잘못된 것 같습니다.
두가지 상황의 오류를 발견했습니다. 확인 해보시길 바랍니다.
첫째, 비회원 작성자가 글을 작성 후, 작성된 게시글을 보여줄 때 해당 글의 사용자이니까 세션이 열리는 것 같구요.
그 이후로 비회원의 비밀글들이 모두 볼 수 있는 상황이 됩니다.
두번째, 비회원 사용자가 접속합니다. 본인이 작성했던 글의 비밀번호를 풀고 읽습니다. 처음에는 비밀번호를 묻더군요.
하지만 그 뒤로는 다른 비회원 사용자가 쓴 글까지 볼 수 있습니다.
제 결론을 붙이자면,
결국 비밀번호를 연 최초의 사용자는 무조건 모든 비밀글을 다 볼 수 있게 처리가 되어있다는 겁니다.
확인 후 답글 부탁드립니다. 전화도 안받고 참 난감하네요.
확인안해보시고 당연한 로직대로 말씀해주신것 같아 재차 남깁니다.
=> 이분분은 검색 해보시면 아시겠지만, 주기적으로 수정 보완이 되고 있습니다.
충분히 확인해봤고 계속해서 문의가 올라오네요, 지금도 혹시나 놓친 부분이 있는지 확인해 보고 있습니다.
전화는 사정상 받지 못했습니다. 우천시인 관계로 사무실에 나가지 못했네요. (죄송합니다..)
또한 이메일은 기술지원 고객에 한해서 지원하고 있습니다.
프로그램 로직상은 큰 문제는 발견되지 않았습니다.
서버관리자에게 세션이 제대로 동작되는지 확인 해보시겠어요?
/kboard/class/KBoard.class.php 파일에서 아래 굵게 표시된 부분을 지우고 다시 해보시겠어요?
public function isConfirm($password, $content_uid){
if(!$password || $this->permission_write != 'all'){
return false;
}
if($_POST['password'] == $password || $_SESSION['kboard_confirm'][$content_uid] == $password){
$_SESSION['kboard_confirm'][$content_uid] = $password;
return true;
}
else{
return false;
}
}
이렇게요
public function isConfirm($password, $content_uid){
if(!$password || $this->permission_write != 'all'){
return false;
}
if($_POST['password'] == $password){
return true;
}
else{
return false;
}
}
문제되던 부분 보완된 버전으로 배포 하겠습니다.^^