본문 바로가기
PHP

[PHP] 폼 처리와 사용자 입력

by teamnova 2023. 12. 21.



안녕하세요! 이번 포스팅에서는 PHP를 사용하여 폼을 만들고, 사용자 입력을 처리하는 방법에 대해 자세히 알아보겠습니다.

폼 생성과 전송 방법

PHP에서 폼을 만들기 위해 HTML `<form>` 태그를 사용합니다. 폼을 생성하고 데이터를 전송하는 방법에는 주로 `GET`과 `POST` 방식이 있습니다.

GET과 POST는 HTTP 프로토콜에서 사용되는 두 가지 주요한 메서드입니다. 이들은 웹 애플리케이션에서 정보를 전송하고 요청하는 데 사용됩니다.

GET 메서드

GET 메서드는 URL을 통해 데이터를 전송하는 방식입니다. URL의 끝에 쿼리 문자열로 데이터가 포함되어 전달됩니다. 이 방식은 정보를 요청하는 데 사용되며, 주로 데이터를 가져오는 데 활용됩니다. 

특징
- 데이터가 URL에 노출되어 보안에 취약합니다.
- 주소 표시줄에서 직접 확인 가능하므로, 즐겨찾기에 저장하거나 공유하기 쉽습니다.
- 데이터 전송 제한이 있어 대용량 데이터 전송에 적합하지 않습니다.
- 캐시될 수 있어 같은 요청에 대해 동일한 결과를 받을 수 있습니다.

POST 메서드

POST 메서드는 HTTP 요청의 몸체(body)를 통해 데이터를 전송합니다. 이 방식은 주로 데이터를 서버로 제출하고 업데이트하는 데 사용됩니다.

특징
- 데이터가 URL에 노출되지 않아 보안적으로 더 안전합니다.
- 대용량 데이터 전송이 가능합니다.
- 브라우저 히스토리에 남지 않아 사용자에게 덜 노출됩니다.
- 데이터 유형에 제한이 없으며, 파일 업로드 등에 유용합니다.

다음은 post메서드를 사용해 폼을 생성하는 예제 입니다.

HTML 폼 생성 예제

<form method="post" action="process.php">
    <label for="username">사용자 이름:</label>
    <input type="text" id="username" name="username">
    <input type="submit" value="제출">
</form>



사용자 입력 유효성 검사

사용자로부터 받은 입력 값은 반드시 유효성을 검사해야 합니다. 이를 위해 클라이언트 측과 서버 측에서 유효성 검사를 수행할 수 있습니다.

클라이언트 측 유효성 검사 (JavaScript)

function validateForm() {
    let username = document.getElementById('username').value;
    if (username === '') {
        alert('사용자 이름을 입력해주세요.');
        return false;
    }
    return true;
}


서버 측 유효성 검사 (PHP)

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST['username'];
    if (empty($username)) {
        echo "사용자 이름을 입력해주세요.";
    } else {
        // 입력값 처리 로직
    }
}


폼 보안

보안은 폼 처리 시 항상 고려해야 할 중요한 측면입니다. 특히 입력값의 에스케이프와 필터링은 보안에 큰 영향을 미칩니다.

특수 문자 처리와 보안 함수 활용 (PHP)

$username = $_POST['username'];
$clean_username = htmlspecialchars($username);
// 이후 $clean_username을 사용하여 데이터 처리



위 내용을 바탕으로
간단한 회원가입 폼을 예제로 살펴보겠습니다.

회원가입 폼 예제

<form method="post" action="register.php" onsubmit="return validateForm()">
    <label for="username">사용자 이름:</label>
    <input type="text" id="username" name="username">
    <input type="submit" value="가입">
</form>


이제 이 폼을 통해 사용자 입력을 처리하는 PHP 코드를 작성해보겠습니다.

PHP에서 입력 처리 예제 (register.php)

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST['username'];
    $clean_username = htmlspecialchars($username);
    if (empty($clean_username)) {
        echo "사용자 이름을 입력해주세요.";
    } else {
        // 데이터베이스에 입력값 저장 등의 처리
        echo "회원가입이 완료되었습니다!";
    }
}



이렇게 폼 처리와 사용자 입력에 대한 기본적인 이해와 예제 코드를 통해 실습해보았습니다. 입력값의 유효성 검사와 보안에 신경쓰면서 웹 애플리케이션을 개발할 수 있습니다.