비밀글 버그 고치기...
그누 3.27에서 비밀글 버그가 발견되 아래와 같이 소스를 올립니다.
문제가 있을수도 있으니 문제가 생긴다면 답글 달아주십시오.
버그내용은 이렇습니다.
손님이 작성한 비밀글을 다른사람도 볼수있다는것이 문제입니다...
gnuboard.php 에서 50라인부터 //그룹접근 가능 주석이전까지 아래의 소스로
교체를 하시면 됩니다.
그리고 테스트를 하신후 문제가 생기면 코멘트 달아주시기 바랍니다.
--------------------소스---------------------
if ($write[wr_secret]) {
$readIn="$board_table|$write[wr_num]";
if ($write[mb_id]){ // 글쓴이가 회원 ID가 있다면...
if ($write[mb_id] == $member[mb_id]){ // 글쓴이와 로그인 ID 가 똑같다면 통과...
}else if ($is_admin){ //관리자라면 통과
}else if ($member[mb_id]=="") { //글작성된 회원의 비밀번호를 아는데 로그인이 안되어있을경우...
alert("이 비밀글은 작성자의 아이디로 로그인해야 볼수 있습니다.\\n로그인없이 암호를 안다고해도 회원이 작성한 비밀글은 열어볼수가 없습니다.^^;");
}else { //이것도 아니고 저것도 아니면 비밀글 암호묻기...
gotourl("./?doc=bbs/gnupasswd.php&w=s&wr_id=$wr_id&$qstr&msg=이 글은 비밀글입니다.");
exit;
}
}else if ($write[mb_id]==""){ // 글쓴이가 ID가 없다면...
if (($readIn != $_SESSION["ss_secret"]) && !$is_admin) {
gotourl("./?doc=bbs/gnupasswd.php&w=s&wr_id=$wr_id&$qstr&msg=이 글은 비밀글입니다.");
exit;
}
}
session_register("ss_secret");
$ss_secret = $_SESSION["ss_secret"] = $readIn;
}
---------------------------끝---------------------------------------------
문제가 있을수도 있으니 문제가 생긴다면 답글 달아주십시오.
버그내용은 이렇습니다.
손님이 작성한 비밀글을 다른사람도 볼수있다는것이 문제입니다...
gnuboard.php 에서 50라인부터 //그룹접근 가능 주석이전까지 아래의 소스로
교체를 하시면 됩니다.
그리고 테스트를 하신후 문제가 생기면 코멘트 달아주시기 바랍니다.
--------------------소스---------------------
if ($write[wr_secret]) {
$readIn="$board_table|$write[wr_num]";
if ($write[mb_id]){ // 글쓴이가 회원 ID가 있다면...
if ($write[mb_id] == $member[mb_id]){ // 글쓴이와 로그인 ID 가 똑같다면 통과...
}else if ($is_admin){ //관리자라면 통과
}else if ($member[mb_id]=="") { //글작성된 회원의 비밀번호를 아는데 로그인이 안되어있을경우...
alert("이 비밀글은 작성자의 아이디로 로그인해야 볼수 있습니다.\\n로그인없이 암호를 안다고해도 회원이 작성한 비밀글은 열어볼수가 없습니다.^^;");
}else { //이것도 아니고 저것도 아니면 비밀글 암호묻기...
gotourl("./?doc=bbs/gnupasswd.php&w=s&wr_id=$wr_id&$qstr&msg=이 글은 비밀글입니다.");
exit;
}
}else if ($write[mb_id]==""){ // 글쓴이가 ID가 없다면...
if (($readIn != $_SESSION["ss_secret"]) && !$is_admin) {
gotourl("./?doc=bbs/gnupasswd.php&w=s&wr_id=$wr_id&$qstr&msg=이 글은 비밀글입니다.");
exit;
}
}
session_register("ss_secret");
$ss_secret = $_SESSION["ss_secret"] = $readIn;
}
---------------------------끝---------------------------------------------
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기
댓글 3개
제가 그누를 수정을 해서 지금 홈을 만들고있어서 저런 상태로 그대로 올려져버렸네요;;
gotourl("./?run=bbs/gnupasswd.php&w=s&wr_id=$wr_id&$qstr&msg=이 글은 비밀글입니다.");
여기에서 ?run 이것을 ?doc 로
gnupasswd 를 gbpasswd 로 하시고,
구 버전인 사람들은
}else { //이것도 아니고 저것도 아니면 비밀글 암호묻기...
gotourl("./?run=bbs/gnupasswd.php&w=s&wr_id=$wr_id&$qstr&msg=이 글은 비밀글입니다.");
exit;
}
}else if ($write[mb_id]==""){ // 글쓴이가 ID가 없다면...
if (($readIn != $_SESSION["ss_secret"]) && !$is_admin) {
gotourl("./?run=bbs/gnupasswd.php&w=s&wr_id=$wr_id&$qstr&msg=이 글은 비밀글입니다.");
exit;
}
여기를 ... 밑에 것으로
}else { //이것도 아니고 저것도 아니면 비밀글 암호묻기...
header("location:./?doc=$cfg[bbs_dir]/gbpasswd.php&w=s&wr_id=$wr_id&$qstr&msg=이 글은 비밀글입니다.");
exit;
}
}else if ($write[mb_id]==""){ // 글쓴이가 ID가 없다면...
if (($readIn != $_SESSION["ss_secret"]) && !$is_admin) {
header("location:./?doc=$cfg[bbs_dir]/gbpasswd.php&w=s&wr_id=$wr_id&$qstr&msg=이 글은 비밀글입니다.");
exit;
}
로 하면 좋겠군요.
정말 좋은팁이군요. 수고많으셨습니다. 최장민님 !!