제목 | 페이지 만료 시키기 관련 | ||
---|---|---|---|
글쓴이 | 마PD | 작성시각 | 2016/06/03 15:53:03 |
|
|||
안녕하세요. 구글링도 해보고 포럼도 열심히 뒤져봤는데... 비슷한 질문은 있어도 제가 원하는 내용은 잘 안나오네요 ㅜㅜ
사용자가 서비스를 이용하던 도중 새로고침, 뒤로가기를 이용하여 이미 지나온 페이지로 돌아가는 것을 막으려고 합니다. 헤더값을 고치라는 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
|
천재작곡가
/
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페이지로 돌아오지 않을까요? 그리고 중복입력은 쿠키나 세션생성으로 몇초 이내에 연속 입력금지같은걸 처리하구요 |
submit 단위면 referrer 체크하면 될것 같습니다.
$this->agent->referrer();