웹개발/PHP- 홈페이지 구현

데이터 전송 방식 GET & POST

duduranran 2022. 11. 5. 22:59

form 태그의 method 속성에 데이터 전송 방식을 대입한다.

이 방식엔은 GET과 POST가 있으며,

 

1)GET 방식

GET은 데이터를 URL에 붙여 데이터를 전송하는 방식이다.

http://주소?age=36&hobby=weight traning

위의 주소에서

age는 나이를 작성하는 입력폼 name의 속성값이 표시되며

hobby는 취미를 선택하는 입력폼 name의 속성값이 표시된다.

<input  name= "age">  or <input name="hobby">

age의 파라미터에는 값이 36이 있으며 값은 "="로 구분이 가능하다.

GET방식으로 전송되는 값이 URL에 전송될 때 첫번째 파라미터 앞에는 ?가 사용되며 이후는 &가 사용된다.

form과 input을 이용하여 사용자로 부터 데이터를 입력받아 다른 php파일로 전송한다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>GET 방식 데이터 입력 폼</title>
</head>
<body>
    <form name="test" method="GET"action="./145-get.php">
        나이 : <input type="text" name="age">
        취미 : <input type="text" name="hobby">
        <input type="submit" value ="전송"
    </form>
</body>
</html>
 
위의 php파일에서 사용자에게 입력받은 값은 이쪽으로 보내진다.
위의 파일에서 get방식으로 전송했기 때문에 그 데이터를 받을 때는
이름이 age인 input에 입력한 사용자의 나이는  아래와 같이 전송되고 받게 된다.
<input name="age">     ---->    $_GET['age']

<?php
    echo "age의 값 : ".$_GET['age'];
    echo '<br>';
    echo "hobby의 값 : ".$_GET['hobby'];
?>

GET 특징
이 GET방식은 URL뒤에 이름과 값이 결합된 형태로 전달되며,
주소창에 전달되는 값이 보이기 때문에 보안성이 취약하다.
전송 길이에 제한이 있으며, POST방식보다 상대적으로 전송속도가 빠르다.
전달되는 데이터가 255개의 문자를 초과하면 문제가 발생할 수 있다.
 
 

2) POST 방식

POST 방식으로 데이터를 받는 것은 GET 방식과 크게 다르지 않다.

$_GET 배열 대신 $_POST 배열을 사용하고

POST 방식은 HTTP의 리퀘스트(요청) 내의 head와 body로 구분되는 곳의 body영역에 데이터를 실어 보내는 방식

GET 방식과 달리 전송되는 값이 보이지 않음으로 GET 방식보다 보안측면에서 우수하다.

form과 input을 이용하여 사용자로 부터 데이터를 입력받아 다른 php파일로 전송한다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>POST 방식 데이터 입력 폼</title>
</head>
<body>
    <form name="test" method="POST" action="./147-post.php">
        나이 : <input type="text" name ="age">
        취미 : <input type="text" name ="hobby">
        <input type="submit" value="전송">
    </form>
</body>
</html>
위의 php파일에서 사용자에게 입력받은 값은 이쪽으로 보내진다.
위의 파일에서 POST 방식으로 전송했기 때문에  전송되는 데이터는 보이지 않는다.
<?php
    echo "age의 값 : ".$_POST['age'];
    echo '<br>';
    echo "hobby의 값 : ".$_POST['hobby'];
?>
POST 특징
서버로 보내기 전 인코딩하고, 전송 후 서버에서는 다시 디코딩을 한다.
주소창에 전송하는 데이터의 정보가 노출되지 않아 GET방식에 비해 보안성이 우수하다.
속도가 GET 방식보다 느리다.
웹서버에 많은 데이터를 전송하기 위해서는 POST 방식이 사용하는 것이 바람직하다.