제로보드4는 공식적으로 더 이상 개발되지도 배포되지도 않습니다.
제로보드4를 사용하기 위한 팁보다 제로보드4를 안전하고 무사히 다른 툴로 이전하는 팁들을 게재해주시면 감사하겠습니다.
시간이 오래 지난 만큼 오래된 프로그램은 보안 및 사용성에 있어 문제가 많으니 이해 바랍니다.
글 수 4,549
제로보드 게시물 작성후 수정시에 비회원의 경우 미리 내용이 출력되게 됩니다.
이를 방지하기위해 비밀번호를 먼저 묻도록 수정하는 방법 입니다.
제로보드 디렉토리의 write.php 파일 74라인쯤 보시면
if($mode=="modify") { 라고 나옵니다. 이부분 다음에 다음 파란색 부분을 추가해주시면 됩니다.
// 관리자가 아니고, 본인작성글이 아닐때 패스워드를 먼저 묻고 틀리면 계속 묻기 ....
if(!$is_admin && $data[ismember]!=$member[no] ) {
$secret_check=mysql_fetch_array(mysql_query("select count(*) from $t_board"."_$id where no='$data[no]'+ '+ ' and password=password('$password')"));
if(!$member[no] && !$secret_check[0]) {
head();
$title="이 글을 수정하시려면 비밀번호를 입력하여 주십시요";
$input_password="<input type=password name=password size=20 maxlength=20 class=input>";
include $dir."/ask_password.php";
foot();
exit();
}
}
비밀번호를 두번 묻는게 싫으신분은 ^^; 사용하시는 스킨을 수정해주시면 한번만 묻도록 수정할수도 있습니다.
해당 스킨 디렉토리에서 write.php 파일을 열어서
<input type=password name=password ....
를 찾으셔서
<input type=password name=password value='<?=$password?>' ....
파란색 부분을 추가해주시면 됩니다.
사용하시는 스킨에따라 password입력부분의 태그가 약간씩 상이할수 있습니다.
^^; 제가 말하려는 의도를 이해 하셨으리라 생각 하겠습니다. ^^;
(ㅜ.ㅜ 이해가 안가시면 제홈페이지 질문과 답변 게시판을 한번더 이용해 주시기 바랍니다....)
다음부터는 수정시 비밀번호를 먼저 묻고 수정이 가능하도록 변경 됩니다.
김주영님의 Tip 추가 ^^;
이를 방지하기위해 비밀번호를 먼저 묻도록 수정하는 방법 입니다.
제로보드 디렉토리의 write.php 파일 74라인쯤 보시면
if($mode=="modify") { 라고 나옵니다. 이부분 다음에 다음 파란색 부분을 추가해주시면 됩니다.
// 관리자가 아니고, 본인작성글이 아닐때 패스워드를 먼저 묻고 틀리면 계속 묻기 ....
if(!$is_admin && $data[ismember]!=$member[no] ) {
$secret_check=mysql_fetch_array(mysql_query("select count(*) from $t_board"."_$id where no='$data[no]'+ '+ ' and password=password('$password')"));
if(!$member[no] && !$secret_check[0]) {
head();
$title="이 글을 수정하시려면 비밀번호를 입력하여 주십시요";
$input_password="<input type=password name=password size=20 maxlength=20 class=input>";
include $dir."/ask_password.php";
foot();
exit();
}
}
비밀번호를 두번 묻는게 싫으신분은 ^^; 사용하시는 스킨을 수정해주시면 한번만 묻도록 수정할수도 있습니다.
해당 스킨 디렉토리에서 write.php 파일을 열어서
<input type=password name=password ....
를 찾으셔서
<input type=password name=password value='<?=$password?>' ....
파란색 부분을 추가해주시면 됩니다.
사용하시는 스킨에따라 password입력부분의 태그가 약간씩 상이할수 있습니다.
^^; 제가 말하려는 의도를 이해 하셨으리라 생각 하겠습니다. ^^;
(ㅜ.ㅜ 이해가 안가시면 제홈페이지 질문과 답변 게시판을 한번더 이용해 주시기 바랍니다....)
다음부터는 수정시 비밀번호를 먼저 묻고 수정이 가능하도록 변경 됩니다.
김주영님의 Tip 추가 ^^;
curacura :// ㅜ.ㅜ 홈페이지가 일요일은 쉬었네요... 서버가 제께 아니다 보니... 사고처리에 미흡하네요 .. ㅜ.ㅜ 답변을 이쪽에도 남겨두어서 ^^; 다행이었네요.. ^^; 감사합니다.
영진 :// 단순히 비밀번호 묻는 화면에서 취소는 ㅜ.ㅜ 뒤로 가는 자바스크립트를 이용한거라서요.. 스킨을 따로 만든다면 가능하긴 하겠지만.. ㅜ.ㅜ 각 게시판의 스킨기능을 이용하여 보다 통일감(?)을 주는 방식으로 사용하다 보니 ^^; 비밀번호를 여러번 틀린경우 뒤로 여러번 가야 원하시는 화면을 만나실수 있으실듯 합니다. 스킨을 따로 만들기도 번거롭고할듯 하여, 또한 수정버튼을 눌러야만 그런현상을 만나실수 있는 상황이라 그냥 나두고 보는중입니다. ^^;
영진 :// 단순히 비밀번호 묻는 화면에서 취소는 ㅜ.ㅜ 뒤로 가는 자바스크립트를 이용한거라서요.. 스킨을 따로 만든다면 가능하긴 하겠지만.. ㅜ.ㅜ 각 게시판의 스킨기능을 이용하여 보다 통일감(?)을 주는 방식으로 사용하다 보니 ^^; 비밀번호를 여러번 틀린경우 뒤로 여러번 가야 원하시는 화면을 만나실수 있으실듯 합니다. 스킨을 따로 만들기도 번거롭고할듯 하여, 또한 수정버튼을 눌러야만 그런현상을 만나실수 있는 상황이라 그냥 나두고 보는중입니다. ^^;
제가 쓰는 스킨과 상관 관계가 있어 저만 그런지는 알 수 없지만, 아무튼 제 경우. 적용했더니 로그인한 회원이 비회원의 글을 수정하려고 하면 전처럼 바로 글 수정 화면이 나왔습니다. 게다가 로그인 상태라 비밀번호 입력창이 기본으로 보이지 않게 되기 때문에 화면만 나오고 수정을 할 수는 없었고요. 결국 회원은 로그인 상태로 자신의 가입 전 글을 수정할 수 없으며, 다른 비회원의 글을 막바로 복사할 수 있게 되었습니다.(제 사이트는 일단 읽기 화면에서는 복사를 막아 놨거든요)
그래서 두번째 이프문인 부분을 아래와 같이 수정했습니다.
if(!$member[no] && !$secret_check[0]) { => if(!$secret_check[0]) {
이렇게 해놓으면 로그인 상태든 로그아웃 상태든 무조건 비회원의 글은 비밀번호 묻는 화면이 나오는데요.
대신에 스킨의 ask_password.php 파일에서 패스워드 묻기가 로그인 상태일 때는 생략되도록 되어있어 그 부분도 수정했습니다.
<?if(!$member[no]) {?><?=$input_password?> => <?if($data[ismember]!=$member[no] || !$member[no]) {?><?=$input_password?>
이렇게 다 하고 났더니 잘 돌아가네요. (!$member[no] 부분을 삭제하지 않은 이유는 비회원의 비밀글 열람, 이후 수정이나 삭제 시도시 패스워드 입력창이 나오도록하기 위해서 입니다. 또 그 외에도 어떤 변수가 있을 지 모르니까요.)
전 php를 제대로 공부한 적은 없고 그냥 짜집기 수준입니다. 문제가 되는 부분이 있다면 알려주셨으면 좋겠습니다.
아이쿠님, 님이 올리신 여러가지 팁들 많은 도움을 받으며 쓰고 있습니다. :)
그래서 두번째 이프문인 부분을 아래와 같이 수정했습니다.
if(!$member[no] && !$secret_check[0]) { => if(!$secret_check[0]) {
이렇게 해놓으면 로그인 상태든 로그아웃 상태든 무조건 비회원의 글은 비밀번호 묻는 화면이 나오는데요.
대신에 스킨의 ask_password.php 파일에서 패스워드 묻기가 로그인 상태일 때는 생략되도록 되어있어 그 부분도 수정했습니다.
<?if(!$member[no]) {?><?=$input_password?> => <?if($data[ismember]!=$member[no] || !$member[no]) {?><?=$input_password?>
이렇게 다 하고 났더니 잘 돌아가네요. (!$member[no] 부분을 삭제하지 않은 이유는 비회원의 비밀글 열람, 이후 수정이나 삭제 시도시 패스워드 입력창이 나오도록하기 위해서 입니다. 또 그 외에도 어떤 변수가 있을 지 모르니까요.)
전 php를 제대로 공부한 적은 없고 그냥 짜집기 수준입니다. 문제가 되는 부분이 있다면 알려주셨으면 좋겠습니다.
아이쿠님, 님이 올리신 여러가지 팁들 많은 도움을 받으며 쓰고 있습니다. :)

깔끔하게 해결해 주셨네요 ^^ 이제 걱정없이
비회원 정보유출없이 게시판을 이용할 수 있겠네요
홈페이지에 들어가려고 했는데 접속이 안되서 못들어갔네요
다시한번 감사드리구요 복 많이 받으실 겁니다