토큰 에러에 대한 해결 방법 한 가지 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

토큰 에러에 대한 해결 방법 한 가지 정보

토큰 에러에 대한 해결 방법 한 가지

본문

안녕하세요.
오랜만에 글 남깁니다.

http://kimchulho.com/g4
여기서 개인적으로 그누보드 4.30.00을 웹 표준화 작업하고 있는데요.
테스트중에 토큰에러가 발생해서 여차저차 해보다가 언뜻 해결이 된것 같아 올려봅니다.

http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=14662
위와 같은 식으로 에러가 나는 부분을 주석 처리해도 되겠죠.

제가 운영하는 다른 홈페이지에서 회원분들이 정보수정할때 확인 버튼 눌렀는데 에러(입력규칙 위반 등)가 나서 경고창이 뜨고, 경고창 확인 버튼을 누르면 다시 정보수정으로 돌아오지요.
그 상태에서 정상적으로 정보를 수정하고 확인을 누르면 토큰 에러가 나지요.
그런 경우에는 정보수정 절차를 처음부터 해야하죠.(근데 회원분들이 다시 안해보고 한번 에러난다고 어쩌구 저쩌구하면 그게 한두번도 아니고 짜증납니다. - _-)
여튼 웹 상의 토큰 값과 세션의 토큰 값이 서로 달라서 그런것 같은데, 일단 한번 경고창 떠서 다시 돌아오면 세션의 토큰 값은 초기화가 되는 모양입니다. 값을 찍어보니 그렇게 나오네요.
뒤로 앞으로 버튼을 눌러서 회원 정보 수정 페이지로 가도 세션값이 초기화 되는 것도 같은 이치인것 같습니다.
여튼, 위와 같은 상황은 정상 상황이고.

회원 가입할때 부터 토큰 에러가 나서 뭐가 문제인지 $token 토큰 값이랑 세션의 토큰값을 찍어 보았는데, 회원 가입 페이지에서는 동일하게 나오다가 확인 버튼을 누르면 세션의 토큰값이 다른 값으로 바뀌더군요. 도저히 왜 그런지 모르겠더군요. 뭐 이것저것 해봤는데, 결론은 이겁니다. (서론이 길었네요.)

bbs/register_form.php 첫 부분에 아래와 같은 코드가 있습니다.

// 불법접근을 막도록 토큰생성
$token = md5(uniqid(rand(), true));
set_session("ss_token", $token);

토큰 값을 생성하고 동시에 세션에 기록하는 코드인것 같네요.
이 코드를 80번째 줄 쯤으로 이동시킵니다.

대략 아래와 같이 위치 됩니다.

77     alert("w 값이 제대로 넘어오지 않았습니다.");
78
79  // 불법접근을 막도록 토큰생성
80  $token = md5(uniqid(rand(), true));
81  set_session("ss_token", $token);
82
83  // 회원아이콘 경로

이렇게 하니 회원 가입할때 에러가 안나더군요. (에러가 안 나는 이유는 모릅니다. -_-)
그리고, 회원 정보 수정도 잘 되고, 회원 정보 수정에서 앞뒤로 막 이동시켜서 수정하니 토큰 에러나고 정상 작동하는 것 같습니다.

여튼 이게 잘 되는건지 뭐 어쩐건지 모르는데, 제 상황에서는 잘 되서 혹시라도 참고하실 분들 보시라고 써봅니다.

ps.
http://kimchulho.com/g4
그 놈의 웹표준이 뭐길래... -_-
itemname, required 등이 사용자 정의 속성이라고 하던것 같은데, 부득이 다 삭제하고 있습니다.
이거 없어도 잘 동작하는 것 같긴 한데, 주민번호나 그런게 잘못 입력되었을때는 에러창이 안뜨고 넘어가는 문제도 있고, 여러모로 대체할 수 있는 코드를 작성해야할것 같습니다.

지금 인덱스 페이지랑 회원가입쪽, 외부로그인, 기본게시판은 웹표준 작업이 다 끝난 것 같습니다. 와서 테스트 해보실 분들은 해보세요.

지에디터랑 지블로그에 쓰인 플래시 업로더 조합을 4.30.00에서도 접목시켜볼까 합니다.
체디터 또한 좋은 에디터이나 파일 첨부 시스템을 DB와 연동하려니 기존에 쓰던 지에디터와 플래시 업로더로 충분하고, 쓰던게 좋은 것 같아서 그쪽을 파보기로 했습니다.
추천
6

댓글 6개

사용자정의 속성은 저같은 경우 setAttribute로 처리하고 있습니다.
예를 들어 스크립트함수내에 다음과 같은 방식으로 속성을 부여할 수 있죠...
f.mb_id.setAttribute("itemname", "아이디");
f.mb_id.setAttribute("required", "required");

조금더 머리를 굴려서 특정함수를 만들어놓고
특정함수(f.mb_id, "아이디", "required", "kor+eng", "4", "12");
이런식으로 "아이디는 4자~12자 사이에 한글+영문으로 필수항목"의 속성을 한번에 넣어주면 좋죠.

개인적으로 사용하는 함수가 있는데 그누가 아니라서... 아무튼 수고하셨습니다^^
body 태그 내에있는 <?=isset($g4['body_script']) ? $g4['body_script'] : "";?> 이거 어떻게 해결하셨나보네요?
코드쪽은 모르겠고, 레이아웃만이라도 표준화작업 조금씩 하고는 있는데, 그것도 귀찮고 어렵더라구요.ㅎ
그건 그냥 냅뒀는데요.
body에 onload나 onunload 따위의 이벤트가 있을 경우에
$g4['body_script'] = "onload=\"alert('환영합니다.')\"";
뭐 이런식으로 적어줌으로 해서 적용시키는 것 같네요.

그 부분만 웹표준에 맞게 작성하면 될것 같습니다.
전체 15 |RSS
그누4 팁자료실 내용 검색

회원로그인

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