게시판 글쓰기 후 올바른 방법으로 이용해 주십시오..ㅠㅠ

게시판 글쓰기 후 올바른 방법으로 이용해 주십시오..ㅠㅠ

QA

게시판 글쓰기 후 올바른 방법으로 이용해 주십시오..ㅠㅠ

본문

그누보드 글쓰기 후 올바른 방법으로 이용해 주십시오, 라는 에러 문구가 나옵니다..

해결 방법을 다 확인해봤고, 그대로 했는데도 여전히 나오더라구요.

사실 테마를 바꾸고 난 후부터 저런 에러가 뜹니다.

예전 테마를 복사해서 head, index, tail 이런 메인 스킨정도만 바꿨는데 게시판 글쓰기 후에 

에러가 뜨더라구요.

왜 그런걸까요?ㅠㅠ..

이 질문에 댓글 쓰기 :

답변 2


if (get_session('ss_bo_table') != $_POST['bo_table'] || get_session('ss_wr_id') != $_POST['wr_id']) {
    alert('올바른 방법으로 수정하여 주십시오.', G5_BBS_URL.'/board.php?bo_table='.$bo_table);
}

 

올바른 방법으로 수정해 주세요. 글을 수정할때만 보이는게 맞을 겁니다.

조건을 보시면 그 게시판의 목록을 보거나, 글을 읽은후 만든 [게시판 아이디]의 세션과 글을 쓸때의 게시판과 동일하지 않거나

게시판 수정을 할때 만든 [게시물 아이디의 세션]과 수정할때의 게시판 아이디가 동일하지 않으면 발생합니다.

 

디버깅을 하실려면 print_r($_SESSION)의 ss_bo_table, ss_wr_id 와

print_r($_POST)의 wr_id, bo_table 동일한지 확인해 보세요.

 

아 write_update.php 파일의
6번째 줄에

// 토큰체크
check_write_token($bo_table);

있습니다.

이건 글을 쓰거나 답변을 달때 모두 해당되므로 아래 휴란드 님의 체크 사항을 확인해 보셔야 할듯 합니다.

예전 테마로 설정해서 게시판 글을 써보면 그 오류가 안 뜨더라구요.
그 게시판 스킨을 복사해서 쓰는데도 혹시 테마를 바꾸면서 제가 놓친 부분이 있을까요?
계속 찾아보는데도 모르겠네요ㅜㅜ

토큰과 관련있을 가능성이 큽니다.

게시글 작성 submit이 일어나면 토큰을 생성해 세션과 input hidden에 담아 submit 전송을 합니다.

토큰 생성은 /js/common.js 파일에서 해당 소스를 볼 수 있습니다.

해당 소스가 잘 잘동하는지 세션은 정상적으로 생성되었는지 하나하나 추적해가며 확인해보면 됩니다.


$(function() {
    $(document).on("click", "form[name=fwrite] input:submit, form[name=fwrite] button:submit, form[name=fwrite] input:image", function() {
        var f = this.form;
        if (typeof(f.bo_table) == "undefined") {
            return;
        }
        var bo_table = f.bo_table.value;
        var token = get_write_token(bo_table);
        if(!token) {
            alert("토큰 정보가 올바르지 않습니다.");
            return false;
        }
        var $f = $(f);
        if(typeof f.token === "undefined")
            $f.prepend('<input type="hidden" name="token" value="">');
        $f.find("input[name=token]").val(token);
        return true;
    });
});

 

서브밋 후 액션페이지에서 토큰 채크 소스는 /lib/common.lib.php에 있습니다.


// POST로 넘어온 토큰과 세션에 저장된 토큰 비교
function check_write_token($bo_table)
{
    if(!$bo_table)
        alert('올바른 방법으로 이용해 주십시오.', G5_URL);
    $token = get_session('ss_write_'.$bo_table.'_token');
    set_session('ss_write_'.$bo_table.'_token', '');
    if(!$token || !$_REQUEST['token'] || $token != $_REQUEST['token'])
        alert('올바른 방법으로 이용해 주십시오.', G5_URL);
    return true;
}

개인적인 경험을 알려드리면 js 코드를 보시면 아시겠지만 input type 형식의 버튼일때만 토큰을 생성하기 때문에 간혹 서브밋 버튼 input이나 button을 사용하지 않고 a태그를 이용해 이미지로 처리한경우 해당 코드가 작동하지 않았던 적이 있습니다. 참고하세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 1,265
QA 내용 검색

회원로그인

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