
PHP 강의
>PHP - 초급
📚 PHP 초급 - 7주차: HTML 폼 처리 및 GET/POST 방식 - 02 GET, POST 메서드의 이해
![]() |
평점 | 10.0 | 라이센스 | free |
---|---|---|---|---|
사용자평점 | 10.0 | 운영체제 | ||
다운로드 | 1 | 파일크기 | 0 | |
제작사 | LUZENSOFT | 등록일 | 2025-07-01 16:11:56 | |
조회수 | 1 |
📚 PHP 초급 - 7주차: HTML 폼 처리 및 GET/POST 방식 - 02 GET, POST 메서드의 이해
지난 포스팅에서 #HTML 폼 생성 방법을 알아보았습니다. 이번에는 이 #폼을 통해 전송되는 데이터를 서버에서 어떻게 처리하는지에 대한 핵심 개념인 #GET 방식과 #POST 방식에 대해 자세히 알아보겠습니다. 이 두 가지 #HTTP #메서드는 웹 개발에서 #데이터 전송 시 가장 흔하게 사용됩니다.
GET 방식 이해
#GET 방식은 #URL에 데이터를 포함하여 전송하는 방식입니다.
특징
데이터 노출: 전송되는 데이터가 #URL 쿼리 문자열에 그대로 노출됩니다. 예를 들어,
example.com/search.php?query=php&category=web
과 같이 보입니다.데이터 길이 제한: 대부분의 웹 브라우저와 서버는 URL 길이에 제한이 있기 때문에, GET 방식으로 전송할 수 있는 데이터 양에 제약이 있습니다.
캐싱 가능: GET 요청은 캐싱(Caching)될 수 있으므로, 이전에 동일한 요청을 했다면 더 빠르게 데이터를 가져올 수 있습니다.
북마크 가능: URL에 데이터가 포함되어 있어 해당 페이지를 #북마크하거나 공유하기 용이합니다.
사용 목적: 주로 서버로부터 데이터를 조회하거나 검색하는 등 보안에 민감하지 않은 데이터 전송에 사용됩니다.
예시
이전 포스팅에서 만든 #로그인 폼을 GET 방식으로 전송했을 때, process.php
파일에서 데이터를 받는 예시입니다.
HTML
<form action="process.php" method="GET">
<label for="username">사용자 이름:</label><br>
<input type="text" id="username" name="username"><br><br>
<label for="password">비밀번호:</label><br>
<input type="password" id="password" name="password"><br><br>
<input type="submit" value="로그인">
</form>
PHP
<?php
// process.php
if (isset($_GET['username']) && isset($_GET['password'])) {
$username = $_GET['username'];
$password = $_GET['password'];
echo "GET 방식으로 받은 사용자 이름: " . htmlspecialchars($username) . "<br>";
echo "GET 방식으로 받은 비밀번호: " . htmlspecialchars($password) . "<br>";
} else {
echo "데이터가 없습니다.";
}
?>
위 예시에서 사용자가 'user'와 '1234'를 입력하고 제출하면, URL은 process.php?username=user&password=1234
와 같이 변하고, #PHP 코드에서 $_GET['username']
과 $_GET['password']
를 통해 해당 값을 가져올 수 있습니다.
POST 방식 이해
#POST 방식은 #HTTP #요청 본문(Body)에 데이터를 포함하여 전송하는 방식입니다.
특징
데이터 비노출: 전송되는 데이터가 URL에 노출되지 않으므로, 보안에 더 유리합니다.
데이터 길이 제한 없음: 이론적으로 전송할 수 있는 데이터 양에 제한이 없습니다. 대용량 데이터(파일 업로드 등) 전송에 적합합니다.
캐싱 불가: POST 요청은 캐싱되지 않습니다.
북마크 불가: 데이터가 URL에 포함되지 않으므로, 특정 POST 요청 페이지를 직접 북마크하기 어렵습니다.
사용 목적: 회원가입, 로그인, 게시물 작성, 파일 업로드 등 서버에 데이터를 생성, 업데이트하거나 보안에 민감한 데이터를 전송할 때 주로 사용됩니다.
예시
이번에는 동일한 로그인 폼을 POST 방식으로 전송했을 때, process.php
파일에서 데이터를 받는 예시입니다.
HTML
<form action="process.php" method="POST">
<label for="username">사용자 이름:</label><br>
<input type="text" id="username" name="username"><br><br>
<label for="password">비밀번호:</label><br>
<input type="password" id="password" name="password"><br><br>
<input type="submit" value="로그인">
</form>
PHP
<?php
// process.php
if (isset($_POST['username']) && isset($_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
echo "POST 방식으로 받은 사용자 이름: " . htmlspecialchars($username) . "<br>";
echo "POST 방식으로 받은 비밀번호: " . htmlspecialchars($password) . "<br>";
} else {
echo "데이터가 없습니다.";
}
?>
위 예시에서 POST 방식으로 데이터를 전송하면 URL에는 아무런 변화가 없고, #PHP 코드에서 $_POST['username']
과 $_POST['password']
를 통해 해당 값을 안전하게 가져올 수 있습니다.
GET과 POST 방식의 선택
두 방식 중 어떤 것을 사용할지는 상황에 따라 적절하게 선택해야 합니다.
GET 방식:
데이터가 #URL에 노출되어도 상관없는 경우 (예: 검색 쿼리, 페이지 번호)
데이터를 북마크하거나 공유해야 하는 경우
서버에 단순히 데이터를 #조회하는 목적의 요청
POST 방식:
보안에 민감한 데이터를 전송하는 경우 (예: 비밀번호, 개인 정보)
대량의 데이터를 전송해야 하는 경우 (예: 파일 업로드)
서버의 상태를 변경하는 작업 (예: 회원가입, 게시글 작성, 데이터 수정/삭제)
웹 개발에서는 이러한 #HTTP 메서드를 적절히 활용하여 효율적이고 안전한 웹 서비스를 구축하는 것이 중요합니다.