이번 시간에는 PHP 에플리케이션에 데이터를 입력하는 방법을 알아본다. 그리고 폼을 이용해서 사용자로부터 데이터를 전송 받는 방법도 알아 볼 것이다. 이를 통해서 할 수 있는 일은 후속 수업인 조건문 편에서 알아본다.
에플리케이션의 입력값과 폼
프로그램은 입력 값을 가질 수 있다. 그리고 입력 값에 따라서 동작 방법이 달라지거나 입력된 값을 저장/삭제/출력 할 수 있다. 이번 시간에는 PHP의 문법에 대한 내용에서 잠깐 빠져나와서 PHP 에플리케이션이 데이터를 입력 받는 방법에 대해서 알아본다.
우선 코드를 보자.
<?php echo $_GET['id']; ?>
위의 코드를 브라우저로 열어보자. 이 때 파일명 뒤에 ?id=k8805이라고 입력한다. 예를들면 아래와 같다.
결과는 k8805다. URL의 k8805를 egoing으로 변경해보자. 화면에는 egoing이 출력될 것이다. 이것을 통해서 유추할 수 있는 것은 코드 상의 $_GET['id']는 URL의 내용 중에서 '?id=' 뒤에 따라오는 데이터로 치환된다는 것을 추정 할 수 있다.
조금 더 복잡한 아래 코드를 보자.
<?php echo $_GET['id'].','.$_GET['password']; ?>
위의 코드로 만들어진 에플리케이션이 http://localhost/IO_form/2.php라고 한다면 URL을 아래와 같이 만들어서 주소창에 입력해보자.
localhost/IO_form/2.php?id=k8805&password=111111
결과는 k8805,111111 일 것이다. 값을 바꿔보자. 출력 값이 달라질 것이다. 이를 통해서 추정 할 수 있는 것은 $_GET['password']의 값은 URL의 내용 중 '&password=' 뒤의 데이터라는 것을 알 수 있다. 위의 내용은 아래와 같이 정리해 볼 수 있다.
'?'는 에플리케이션 2.php와 데이터를 구분해주는 구분자다.
'&'는 값과 값을 구분해주는 구분자다.
'='는 값과 값 사이의 구분자다.
이렇게 해서 PHP 에플리케이션으로 데이터를 전송하는 방법을 알아봤다. 데이터를 받은 에플리케이션은 데이터의 값에 따라서 다르게 동작 할 수도 있고, 다른 내용을 표시할 수도 있다. 또한 해당 정보를 파일이나 데이터베이스에 저장 할 수도 있다.
HTML Form
그런데 URL에 직접 정보를 입력하는 것은 불편하다. 그래서 고안된 방법이 HTML의 폼이다. 코드를 보자. form에 대한 자세한 설명은 HTML 수업을 참고하자.
<html> <body> <form method="get" action="2.php"> id : <input type="text" name="id" /> password : <input type="text" name="password" /> <input type="submit" /> </form> </body> </html>
form이란 사용자가 입력한 정보를 받아서 서버로 전송하기 위한 HTML의 태그이다. 사용자가 입력한 정보를 받는 UI를 입력 컨트롤이라고 하는데 위의 코드에는 id와 password를 입력 받는 입력 컨트롤이 포함되어 있다. 입력 컨트롤에 입력된 정보는 해당 컨트롤의 속성 name의 값을 이름으로 데이터가 서버로 전송된다.
정보 입력을 마치면 사용자가 입력한 정보를 서버로 전송할 수 있도록 해야하는데 그 때 사용하는 컨트롤이 submit 버튼이다. 사용자가 submit 버튼을 누르면 입력 컨트롤에 입력된 정보는 form 태그의 action 속성에 지정된 URL로 전송된다. 이 때 method에 지정된 방식에 따라서 get/post 방식으로 데이터가 전송된다. 위에서 살펴본 URL에 데이터를 첨부해서 전송하는 방식을 GET 방식이라고 부르고, POST 방식은 HTTP 메시지의 본문에 데이터를 포함해서 전송한다.
GET VS POST 방식
get 방식으로 데이터를 전송할 때 URL에 데이터를 포함시키는 것이 비해서 POST 방식으로 데이터를 전송할 때는 전송하는 데이터를 URL에 포함시키지 않고 전송 할 수 있다. 이러한 차이로 인해서 GET 방식은 정보에 대한 링크로 많이 사용되고, POST 방식은 사용자의 아이디나 비밀번호와 같은 데이터를 전송하는 방식으로 주로 사용한다.
<html> <body> <form method="POST" action="4.php"> id : <input type="text" name="id" /> password : <input type="text" name="password" /> <input type="submit" /> </form> </body> </html>
<?php echo $_POST['id'].','.$_POST['password']; ?>
전송된 데이터의 처리
form 태그의 action 속성의 URL이 가르키는 에플리케이션은 사용자가 전송한 데이터를 받는다. 그리고 그 정보를 간단하게는 위에서 살펴본 예제처럼 화면에 출력 할 수도 있고, 데이터베이스에 저장할 수도 있다. 이에 대한 구체적인 방법은 후속 수업인 조건문에서 알아본다. 이번 수업은 조건문의 전초전이라고 생각하자.