CI 묻고 답하기

제목 페이지 만료 시키기 관련
글쓴이 마PD 작성시각 2016/06/03 15:53:03
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 14351   RSS

안녕하세요.

구글링도 해보고 포럼도 열심히 뒤져봤는데...

비슷한 질문은 있어도 제가 원하는 내용은 잘 안나오네요 ㅜㅜ

 

사용자가 서비스를 이용하던 도중 새로고침, 뒤로가기를 이용하여 이미 지나온 페이지로 돌아가는 것을 막으려고 합니다.

헤더값을 고치라는 php  관련 대답이 있어서 해보았으나 실패,

ci에서는 $this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate"); 을 이용하여 막는 방법이 소개되어 해보았으나 역시 실패.. ㅠㅠ

제가 개념을 잘못잡고 있는 것인지, 설계를 잘못한것인지 모르겠습니다...

 

조언 부탁드립니다.

 

 

- 작동 순서

A페이지 : input 5개 받음.

(submit)

B페이지 : A에서 받은 내용을가지고 DB조회 후 적절한 값으로 input 5개를 또 받음

(submit)

C페이지 : B에서 가져온 내용을 체크 후 DB 작업(증감) 후 결과 페이지 리턴.

 

상황1)

사용자가 C페이지까지 정상적으로 이용 후 새로고침을 누를경우 같은 작업이 반복되며 중복작업이 일어남

 

상황2)

사용자가 C페이지까지 갔다가 B페이지로 뒤로가기로 이동 후 다시 C페이지로 이동하면 중복 작업

 

 

원하는 조치

사용자가 C페이지에서 새로고침하거나 뒤로가기를 할 경우, B페이지에서 새로고침이나 뒤로가기를 할 경우

지금까지 입력된 값들을 전부 무시하고 A페이지로 가야하며 다른 DB작업이 중복적으로 일어나서는 안됨

 

 

하다하다가...

각 페이지를 들어갈때마다 세션값을 주고 체크하는 방법을 써야하나 싶어지기까지 했습니다. ㅜㅜ

가령, B페이지에 들어왔을때 세션을 검사해서 A페이지에서 넘어온게 아니면 A페이지로 강제 리다이렉트.

C페이지에서 들어왔을때 B에서 넘어온게 아니라면 A페이지로 강제 리다이렉트.

 

최종적으로는 이 방법을 써야하나 싶어졌습니다. ㅜㅜ

이런 방법 외엔 다른 수가 없으려나요?

그리고 제가 위에서 쓴 $this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate"); 이런 소스코드는 제가 원하는 것과는 전혀 다른 동작이 일어나는 거라서 제대로 작동을 하지 않은걸까요?

 다음글 session에 저장된 데이터 사용법좀... (2)
 이전글 session 공부 중에 궁금증이 생겨 글을 올리게 되... (4)

댓글

kaido / 2016/06/03 16:08:20 / 추천 0

submit 단위면 referrer 체크하면 될것 같습니다.

$this->agent->referrer();

 

천재작곡가 / 2016/06/03 18:07:50 / 추천 0

음.. 저라면 그냥

A페이지와 B페이지를 실제론 한페이지로 만들고

A페이지(display:none)->B(display:block) 하면서

필요한 input 값들은 ajax 이용해서 가져오고

B에서 서브밋하기전 B부분 가져온값들을 초기화 -> A페이지(display:block) -> B페이지(display:none)

해버리면 C에서 뒤로가기해도 A페이지로 돌아오지 않을까요?

그리고 중복입력은 쿠키나 세션생성으로 몇초 이내에 연속 입력금지같은걸 처리하구요