게시판 글쓰기 후 올바른 방법으로 이용해 주십시오..ㅠㅠ
본문
그누보드 글쓰기 후 올바른 방법으로 이용해 주십시오, 라는 에러 문구가 나옵니다..
해결 방법을 다 확인해봤고, 그대로 했는데도 여전히 나오더라구요.
사실 테마를 바꾸고 난 후부터 저런 에러가 뜹니다.
예전 테마를 복사해서 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 동일한지 확인해 보세요.
!-->
토큰과 관련있을 가능성이 큽니다.
게시글 작성 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;
}
답변을 작성하시기 전에 로그인 해주세요.