그누보드 글쓰기 후 올바른 방법으로 이용해 주십시오, 라는 에러 문구가 나옵니다..
해결 방법을 다 확인해봤고, 그대로 했는데도 여전히 나오더라구요.
사실 테마를 바꾸고 난 후부터 저런 에러가 뜹니다.
예전 테마를 복사해서 head, index, tail 이런 메인 스킨정도만 바꿨는데 게시판 글쓰기 후에
에러가 뜨더라구요.
왜 그런걸까요?ㅠㅠ..
답변 2개 / 댓글 5개
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 동일한지 확인해 보세요.
답변에 대한 댓글 3개
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;
}
답변에 대한 댓글 2개
말씀해주신대로 lib/common.lib.php 에 있는 저 부분을 수정해서 확인해봤더니
홈페이지가 아예 안열렸어요ㅜㅜ...;;;
답변을 작성하려면 로그인이 필요합니다.