작심40

코스 전체목록

닫기

FORM

서버, 클라이언트

폼을 이해하기 위해서는 우선 서버와 클라이언트라는 개념을 이해해야 한다. 서버는 정보를 제공하는 쪽이고, 클라이언트는 정보를 제공 받는 쪽을 의미한다. 웹브라우저의 주소창에 생활코딩의 홈페이지인 http://opentutorials.org를 입력하면 웹브라우저는 opentutorials.org에 해당하는 컴퓨터에게 생활코딩 컨텐츠를 요청한다. 이 맥락에서 웹브라우저는 정보를 요청하는 쪽 다시 말해서 제공 받는 쪽이기 때문에 클라이언트가 되고, opentutorials.org의 컨텐츠를 제공하는 컴퓨터는 정보를 제공하기 때문에 서버가 된다.

아래 그림은 서버와 클라이언트의 관계를 나타낸 것이다.

폼 (form)

폼이란 사용자의 데이터를 서버에 전송하는 방법이다. 일반적으로 아래와 같은 작업을 하기 위해서는 폼을 이용한다.

  • 로그인을 위해서 아이디/비밀번호를 입력할 때
  • 회원가입을 하기 위해서 개인정보를 입력할 때
  • 블로그나 게시판에 글을 작성하거나, 파일을 전송할 때

문법

form의 문법은 아래와 같다. <form> 태그 안쪽에 텍스트를 입력 받는 텍스트 필드나, 원하는 항목을 선택 할 수 있는 라디오 버튼등이 위치한다. 이러한 요소들을 컨트롤 (control)이라고 부른다. 사용자가 컨트롤을 조작한 후에 전송 버튼을 누르면 <form> 태그의 속성인 action에 기술된 URL로 사용자가 입력한 정보를 전송한다. 서버는 이 정보를 받아서 저장하거나, 계산된 결과를 보여주는 등의 작업을 수행하게 된다.

<form action="서버로 전송한 데이터를 수신할 URL" method="데이터를 전송하는 방법">
    텍스트 필드, 라디오 버튼, 체크 박스와 같은 컨트롤을 생성하는 태그
</form>
  • action : 사용자가 입력한 데이터를 전송할 서버의 URL
  • method : 사용자가 입력한 데이터를 전송하는 방법으로 아래와 같은 방식이 있다.
    • get : action에 입력한 URL에 파라미터의 형태로 전송
    • post : header의 body에 포함해서 전송

GET과 POST의 차이점

GET

  • URL에 정보가 담겨서 전송된다.
  • 전송할 수 있는 정보의 길이가 제한되어 있다.
  • 퍼머링크로 사용될 수 있다.

POST

  • header의 body에 담겨서 전송된다.
  • URL 상에 전달한 정보가 표시되지 않는다.
  • GET에 비해서 보안상 약간의 우위에 있다. (사실상 동일하다)
  • 전송할 수 있는 데이터의 길이 제한이 없다.
  • 퍼머링크로 사용할 수 없다.
  • 서버 쪽에 어떤 작업을 명령할 때 사용한다.
    (데이터의 기록, 삭제, 수정 등)

예제

example1.html - 사용자가 입력한 정보를 서버로 전송하는 예제 (github)

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
	</head>
	<body>
		<fieldset>
			<legend>
				GET
			</legend>
			<form action="./example2.php" method="GET">
				<p>
					닉네임 :
					<input type="text" name="nickname" />
					<br />
				</p>
				<p>
					직업 :
					<select name="job">
						<option value="designer">디자이너</option>
						<option value="programmer">프로그래머</option>
						<option value="planner">기획자</option>
					</select>
				</p>
				<input type="submit" value="전송"/>
			</form>
		</fieldset>
		<fieldset>
			<legend>
				POST
			</legend>
			<form action="./example2.php" method="POST">
				<p>
					닉네임 :
					<input type="text" name="nickname" />
					<br />
				</p>
				<p>
					직업 :
					<select name="job">
						<option value="designer">디자이너</option>
						<option value="programmer">프로그래머</option>
						<option value="planner">기획자</option>
					</select>
				</p>
				<input type="submit" value="전송"/>
			</form>

		</fieldset>
	</body>
</html>

example2.php - 사용자가 전송한 데이터를 받아서 화면에 표시해주는 예제 (github)

<html>
        <head>
                <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
        </head>
        <body>
                <?php
                echo $_REQUEST['nickname'].'님의 직업은 '.$_REQUEST['job'].'이군요!';
                ?>
        </body>
</html>

참고

 

댓글

댓글 본문
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기