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

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

QA

SIR 제작의뢰 - 견적무료/익명보정/호스팅, DB 이전/단기개발. 이젠 ' 의뢰인'이 원하는 '제작자'에게만 연락처를 알릴 수 있습니다.

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

본문

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

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

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

예전 테마를 복사해서 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태그를 이용해 이미지로 처리한경우 해당 코드가 작동하지 않았던 적이 있습니다. 참고하세요.
답변을 작성하시기 전에 로그인 해주세요.
전체 66,729 | RSS
고마운 분의 도움으로 질문을 해결하셨다면, 채택을 눌러서 감사의 마음을 전하세요.
어떻게 질문해야 할지 모른다면 질문하는 방법을 읽어 보신후 질문해 보세요.
QA 내용 검색

회원로그인

(주)에스아이알소프트 (06253) 서울특별시 강남구 도곡로1길 14, 6층 624호 (역삼동, 삼일프라자) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT