컴퓨터/PHP

PHP (1) - 데이터를 전송해보자 (POST, GET 방식)

달서비 2022. 12. 30. 10:35

졸업 연구를 통하여 PHP를 이용한 웹서버 프로젝트를 하였습니다. PHP 언어를 본격적으로 공부하였는데 조금씩 적어보려고 합니다.

HTTP 전송방식에서 데이터를 전송할 때 여러 가지 방식이 있지만 가장 기본적인 두 가지 방식 GET와 POST 방식을 사용할 수 있습니다. 두 가지 방식에 대하여 알아보는 시간을 가져보겠습니다. 

URL로 보는 GET과 POST 방식차이

 

GET

GET 방식으로 데이터 전달

<?PHP
#index.php
$id = $_GET['key']; 
$pw = $_GET['name'];

echo $id; //userid
echo $pw //1q2w3e4r
?>

GET 방식은 URL에 키와 값을 입력하여 데이터를 전송하는 방식입니다. URL의 "?" 뒤에서부터 쿼리스트링으로 데이터를 전달합니다. 예시에서는 로그인 정보를 적었는데 실제로 GET 방식을 사용하게 되면 URL이 다 노출되어 사용하면 안 됩니다. 또 다른 단점으로는 GET 방식 같은 경우에는 URL을 이용하여 글자 수 제한이 있습니다. 하지만 GET방식은 여러 번 데이터를 전송 하더라도 동일한 결과가 나옵니다. 보통 웹사이트 글 찾기등 데이터를 요청하는 경우에 사용하게 됩니다.

 

GET방식은 URL로 노출이 되기 때문에 캐시와 브라우저 기록에 남으며 북마크에 추가할수 있습니다.

 

POST

<?PHP
#login.php
$id = $_POST['key']; 
$pw = $_POST['name'];

echo $id; //userid
echo $pw //1q2w3e4r
?>

POST 방식은 Http의 Body에 담아 데이터를 전송하는 방식입니다. URL에 직접 표시가 되는 것이 아니라 사용자에게 직접적으로 노출되지 않습니다. 그리고 POST 방식은 데이터를 제한 없이 보낼 수 있습니다. POST 방식은 데이터를 전송할때  결과가 다를 수 있습니다. POST 방식의 경우에는 데이터를 생성하기 때문에 글쓰기 등의 작업에서 사용합니다.

 

여담으로 POST 방식도 크롬 개발자 도구를 사용하면 다 나오기 때문에 암호화해야합니다.

 

두가지 방식 비교

  GET POST
캐시 O X
브라우저 기록 O X
북마크 추가 O X
데이터 길이 제한 O X
사용용도 데이터 요청 데이터 생성
데이터 전달 방식 쿼리스트링(URL) HTTP Body
멱등성 (idempotent) O X

멱등성은 연산을 여러 번 하더라도 결과가 달라지는 성질로 GET 방식에서는 여러번 전송하더라도 결과가 같지만 POST 방식은 다를 수 있습니다.

 

여담으로

<?php
$id = addslashes($_GET['key']); 
$pw = addslashes($_GET['name']);

echo $id; //userid
echo $pw //1q2w3e4r
?>

여담으로 GET , POST 방식의 경우에는 SQL문을 직접 입력하여 공격할수 있습니다. 이것을 SQL 인젝션이라고 합니다. PHP에서는 addslashes()라는 함수를 이용하여 예방할 수 있습니다.