[문제가 발생하는 경우]
1. 워드프레스 관리자로 로그인 후 비밀글 작성을 할 때 첨부파일을 업로드함.
2. 워드프레스를 로그아웃하고, 해당 게시글에 비밀번호를 입력해서 접속 후 첨부파일을 선택하면 "권한이 없습니다"라고 경고참이 뜸.
3. 경고창의 "확인" 버튼을 누르면, 웹페이지가 "웹페이지가 만료되었습니다."로 변경됨. 그리고 F5를 눌려서 새로고침을 하면 다시 게시물로 이동됨.
[문제가 발생하지 않는 경우]
- 게시글이 "비밀글이 아닌 경우" 첨부파일 선택해도 아무런 문제가 없이 다운로드가 가능함.
[옵션 상태]
게시판 스킨: default
댓글, 본문 자동링크, 카테고리: 비활성화
리스트 항상 보기: 활성화
최대 첨부파일 개수: 5개
최고관리자 그룹: 관리자 체크
읽기 권한: 제한없음
쓰기 권한: 관리자
답글,댓글,추천: 제한없음
첨부파일 다운로드 권한: 제한없음
비밀글 기본 체크: 활성화
[참고]
KBOARD는 비밀글을 체크해도 해당 브라우저에서 비밀번호를 한 번만 입력하면, 목록으로 나갔다가 다시 들어갈 때 비밀번호를 재요구하지 않습니다.
그래서 꽤 오래전에 KBOARD에 문의글을 올렸고, 아래와 같이 답변을 주셨습니다. 현재 아래의 설정이 적용된 상태입니다.
FTP - 테마 - functions.php
// KBoard pass setting
add_filter('kboard_password_confirm_reauth', 'my_kboard_password_confirm_reauth', 10, 2);
function my_kboard_password_confirm_reauth($reauth, $board){
if($board->id == '1'){
$reauth = true;
}
return $reauth;
}
혹시나 위 설정이 문제인 경우 해결책을 주시면 감사하겠습니다.
[테스트]
- URL:
- 게시글 중 "테스트 입니다"를 클릭해주시면 됩니다. 비밀번호는 "1234"입니다. (답변을 달릴 경우 URL은 삭제할 예정입니다.)
안녕하세요~^^
본문에 코드를 올려주실 땐 에디터의 코드 스니펫 삽입 기능을 이용 부탁드립니다.
그렇지 않으면 코드가 이상해져서 에러 나는 코드로 바뀌거나,
질의응답 시 의사소통에 오해와 문제가 생길 수도 있기 때문입니다.
kboard_password_confirm_reauth 필터에서 첨부파일 다운로드 시
해당 코드가 적용되지 않게 해주셔야 할 듯합니다.
올려주신 코드 대신 아래의 코드로 교체해보시겠어요?
add_filter('kboard_password_confirm_reauth', 'kboard_password_confirm_reauth_2020_03_05', 10, 2);
function kboard_password_confirm_reauth_2020_03_05($reauth, $board){
$action = isset($_GET['action']) ? sanitize_text_field($_GET['action']) : '';
if($board->id == '1' && $action != 'kboard_file_download'){
$reauth = true;
}
return $reauth;
}
위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해보세요.
고맙습니다.
답변해주셔서 대단히 감사합니다!
말씀해주신 코드로 수정하니 정상적으로 작동합니다.
혹시 위 부분에 대한 사항이 Kboard 자체에 업데이트되기는 어려운 것인지 궁금합니다.
그리고 추가적인 문의사항이 있습니다.
구글 크롬, 인터넷 익스플로러에서는 모든게 정상입니다만,
엣지 브라우저에서 다운로드를 하면 파일명이 알수없는 문자로 깨진채 다운로드가 됩니다.
예를 들어서 "시리얼.zip"인데, 엣지 브라우저에서만 독일어,분수,처음보는기호 등으로 파일명이 변경된채 다운로드가 됩니다.
이 문제는 어느 부분을 수정해야 하나요?
KBoard 플러그인에서 비밀글에 비밀번호를 입력하면
기본적으로는 브라우저의 세션에 일시적으로 게시글 정보를 저장해둡니다.
그렇기 때문에 최초 비밀글에 비밀번호를 입력해서 게시글을 본다면
브라우저가 닫히기 전까지는 해당 게시글을 비밀번호를 입력하지 않고 볼 수 있습니다.
kboard_password_confirm_reauth 필터로 비밀글을 볼 때마다 비밀번호를 입력하게 했기 때문에
기본 기능으로 업데이트하기에는 어려움이 있을 듯합니다.
현재는 적용하신 것처럼 별도의 코드를 추가해주셔야 할 듯합니다.
엣지 브라우저에서 KBoard 플러그인 첨부파일 다운로드 시
한글 파일명이 깨지는 문제는
FTP로 접속해서 /wp-content/plugins/kboard/class/KBController.class.php 파일에
아래의 코드를 찾아서
$ie = isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false);
if($ie){
$file_info->file_name = iconv('UTF-8', 'EUC-KR//IGNORE', $file_info->file_name);
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
}
else{
header('Pragma: no-cache');
}
아래의 코드로 교체해보시겠어요?
$ie = isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false);
$edge = isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'Edge') !== false);
if($ie){
$file_info->file_name = iconv('UTF-8', 'EUC-KR//IGNORE', $file_info->file_name);
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
}
else if($edge){
$file_info->file_name = urlencode($file_info->file_name);
}
else{
header('Pragma: no-cache');
}
위 내용은 추후 업데이트에 반영하도록 하겠습니다.
코드 변경 사항은 아래 링크에서도 확인해보실 수 있습니다.
고맙습니다.