루젠소프트 로고

216.73.216.198 TODAY : 3,820

PHP 강의

 > 

PHP - 초급

📚 PHP 초급 - 7주차: HTML 폼 처리 및 GET/POST 방식 - 02 GET, POST 메서드의 이해

📚 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에 데이터를 포함하여 전송하는 방식입니다.

uploadImage



특징


  • 데이터 노출: 전송되는 데이터가 #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)에 데이터를 포함하여 전송하는 방식입니다.

uploadImage



특징




  • 데이터 비노출: 전송되는 데이터가 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 메서드를 적절히 활용하여 효율적이고 안전한 웹 서비스를 구축하는 것이 중요합니다.