cgi 초보입니다.

charom의 이미지

CGI를 공부하고 있는데,
하나의 cgi파일에서 사용자가 처음 액세스하면,
1.입력화면(html)을 보여주고,
2.그것을 다시 cgi파일로 보내면(form의 action으로)
3.cgi파일에서 그것을 Query string의 Get으로 파싱하여,
4.다시 HTML로 결과를 보여주고자 합니다.

로직의 큰 그림중에서 사용자가 처음 접속한것인지 알아내는 방법이 있나요?
ENV{REQUEST_METHOD}를 해보면 첫 접속임에도 'GET'이 나오던데,

turningPoint의 이미지

요즘들어(요즘이라 할것도 없지만) 시니컬한 댓글들이 많이 있어 답변하기가 매우 조심스럽지만(실은 별로;;), 아는대로 답해봅니다.

우선 먼저 사용자가 처음 접속한것 이라는 말은 여러가지 의미를 내포하고 있습니다만
해당페이지를 접속한적이 있다/없다를 말씀하시는것이라면 구별해 낼수 있는 방법은 없습니다.

하지만 보통 이런경우 (예를들면 오늘하루 이창 보지 않기) 등등은 쿠키 존재 여부를 가지고 체크합니다만,
이부분이 client에 의존적이므로 사용자가 임의로 쿠키를 지워버린다던지, 타 브라우져로 접속해버리면 아무런 의미가 없는것 입니다.

"ENV{REQUEST_METHOD}를 해보면 첫 접속임에도 'GET'이 나오던데"
-> 이부분이 RFC2616 에서 정의한 Http header에 있는 값을 말씀하시는 것이라면,요청한 페이지에서 GET 방식으로 요청했다는 말입니다.
파일이나 DB를 이용하여 UID 저장하고 서버에서 Session Id를 가지고 체크 할수도 있겠지만, 위 내용만으로 봤을때 배보다 배꼽이 더 클듯 보입니다.

그렇다고 QueryString으로 input hidden atrribute를 이용하여 구분하는것은, 보안적인측에서 상당히 위험합니다.

Form Tag의 Method Attribute가 GET이 였을수도 있고 default(GET), 또 경유 페이지에서 dispatch 될 수도 있으므로 정확한 답을 드리기가 힘듭니다만,
적어도 Get이나 Post를 가지고 무엇을 판단할 수는 없습니다.
(간단히 proxy tool로 input 값들을 바꿔서 GET/POST 자유자재로 요청할수 있으므로)

P.S 입력과 출력 페이지를 따로 가지가는것이 바람직하다고 생각합니다.