소스코드리뷰(XXXIV) 웹페이지에서 POST 방법 연구
[목차(도우미)]
고등학생때에 공부하는 홍성대씨의 수학정석에는 재미있는 말이 있었다. "호랑이는 죽어서 가죽을 남기고 변수는 치환되어 변역을
남긴다." 정확한 인용은 아닐 수 있으나 대략 이런 의미이다. 갑자기 수학 이야기를 할 작정은 아니지만 치환이라는 것은 단지
표기의 편리함을 위해서만이 아니라 관점의 변화를 가져온다는 점을 간과해서는 안된다. 그리고 이러한 관점의 변화를 통해서
프로그램의 발전을 가져올 수 있다는 것을 이야기하려고 한다.SQL 문을 자원화함으로 POST 구현이 단일화된다
일전에 소스코드리뷰(XXIX) SQL 문을 데이터베이스에 넣어두라 에서 SQL문을 자원으로 취급하는 것에 대해 집중적으로 논의했다. 자원으로 취급하는 것을 통해서 특정 SQL문을 문장이 아닌 키워드로 취급할 수 있다는 것에 귀착된다.예를 들어
key |
sql_statement |
get_employ |
select id, name, salary from
tableEmploy |
get_employ_by_id |
select name, salry from
tableEmploy where id=:id |
new_employ |
insert into
tableEmploy(:insert_keys) values(:insert_values) |
- <form method="post">
- <input type="hidden" name="key" value="new_employ">
- <input type="submit" value="SEND">
- :
- :
- </form>
POST 처리 후에 Location 점프에 대하여
Post 처리후에 이중 포스트 처리되지 않으려면 Location 점프가 필요하다 (PHP 에서 header("Location:url")의 처리). 다른 방식으로도 이중 포스트를 방지하는 방법이 있겠지만, 이방법이 간편하고도 안전한 방법이다. 이중 포스트는 포스트 처리후에 페이지를 리로드 해버리면 일어나는 일인데 브라우저가 기억하고 있는 포스트 요청이 연거퍼 일어나기 때문이다.기왕에 Post처리를 공통화하였다면 Location 점프처리도 공통화하는 것이다. 그것은 <input type="hidden" name="redirect_to_url" value='$url_to_go'>를 사용하면 된다. 그리하여 포스트 처리가 성공하면 받은 주소로 이동하면 된다.
파일명 규칙과 포스트 처리
홈페이지에서 포함되는 페이지용 파일과 포스트 처리를 사용하는 페이지용 파일을 구분하는 것이 좋다. 여러가지 경험으로 보아 각 페이지에 포함되어 내용을 표시하는 파일은 pagename.php로 명명하고 포스트 처리가 있는 파일은 index.php와 동등 계층으로 구성하면서 접두어를 붙이는 것이 좋다.메인 페이지(Main Page)라는 의미에서 mp를 붙여도 되고 man of pro의 앞자를 따서 mp를 붙여도 좋다. 굳이 의미까지 부여하자면 multi-purpose, multi-post라고 해도 좋겠다. 예를 들어 new_employ를 수행하는 페이지라면 mp-employ.php등으로 이름을 붙이는 것이다.
'연구개발 이야기' 카테고리의 다른 글
소스코드리뷰(XXXVI) 데이터베이스 테이블을 가지고 장난하냐 (0) | 2011.07.12 |
---|---|
소스코드리뷰(XXXV) 코드 프로파일러를 만들어 보자 (0) | 2011.07.10 |
소스코드리뷰(XXXIV) 웹페이지에서 POST 방법 연구 (0) | 2011.07.09 |
소스코드리뷰(XXXIII) 실행 속도를 높이려면 실행을 하지마라 (0) | 2011.06.25 |
클릭에 의해서 열고접기 (자바스크립트) (2) | 2011.06.14 |