루젠소프트 로고

216.73.216.198 TODAY : 3,825

PHP 강의

 > 

PHP - 초급

📚 PHP 초급 - 7주차: HTML 폼 처리 및 GET/POST 방식 - 04 폼 데이터 유효성 검사 (간단한 예시)

📚 PHP 초급 - 7주차: HTML 폼 처리 및 GET/POST 방식 - 04 폼 데이터 유효성 검사 (간단한 예시)
평점 10.0 라이센스 free
사용자평점 10.0 운영체제
다운로드 1 파일크기 0
제작사 LUZENSOFT 등록일 2025-07-01 16:41:34
조회수 2
- 설명

📚 PHP 초급 - 7주차: HTML 폼 처리 및 GET/POST 방식 - 04 폼 데이터 유효성 검사 (간단한 예시)








지난 시간에는 $_GET, $_POST, $_REQUEST 슈퍼 글로벌 변수를 통해 #HTML 폼 데이터를 받는 방법을 알아보았습니다. 이번 시간에는 사용자가 입력한 #폼 데이터가 서버로 전송되기 전에, 또는 서버에서 처리되기 전에 특정 조건에 부합하는지 확인하는 과정인 #유효성 검사(Validation)의 기본적인 개념과 간단한 예시를 살펴보겠습니다.




폼 데이터 유효성 검사의 중요성


#폼 데이터 #유효성 검사는 웹 애플리케이션의 안정성과 보안성을 확보하는 데 매우 중요한 과정입니다.

uploadImage



  • 데이터 품질 향상: 사용자가 필수 정보를 누락하거나 잘못된 형식으로 입력하는 것을 방지하여 데이터의 정확성을 높입니다.

  • 보안 강화: 악의적인 사용자가 스크립트 공격(예: #XSS, #SQL 인젝션)에 악용될 수 있는 위험한 데이터를 서버로 전송하는 것을 차단합니다.

  • 사용자 경험 개선: 잘못된 입력에 대해 즉각적인 피드백을 제공하여 사용자가 오류를 수정하고 올바른 데이터를 입력하도록 유도합니다.

  • 서버 자원 보호: 불필요하거나 잘못된 데이터 처리를 사전에 방지하여 서버의 부하를 줄이고 효율성을 높입니다.







간단한 유효성 검사 예시 (PHP)


이번 예시에서는 간단한 이름 입력 폼을 통해 필수 필드 검사와 길이 제한 검사를 수행하는 방법을 보여드리겠습니다.

uploadImage



HTML 폼




HTML

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>폼 유효성 검사</title>
</head>
<body>
    <h1>이름 입력 폼</h1>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
        <label for="name">이름:</label>
        <input type="text" id="name" name="name">
        <span class="error"><?php if (isset($nameErr)) echo $nameErr;?></span>
        <br><br>
        <input type="submit" name="submit" value="제출">
    </form>
</body>
</html>




PHP 유효성 검사 스크립트




PHP

<?php
// 에러 메시지를 저장할 변수 초기화
$nameErr = "";
$name = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 'name' 필드가 비어있는지 검사
    if (empty($_POST["name"])) {
        $nameErr = "이름은 필수 입력 항목입니다.";
    } else {
        // 입력 데이터 정리 및 보안 처리
        $name = test_input($_POST["name"]);
        
        // 이름에 문자(영문, 한글)와 공백만 포함되어 있는지 확인 (정규 표현식)
        if (!preg_match("/^[a-zA-Z가-힣 ]*$/",$name)) {
            $nameErr = "이름에 허용되지 않는 문자가 있습니다.";
        } 
        // 이름의 길이 제한 검사 (20자 이내)
        elseif (mb_strlen($name, 'UTF-8') > 20) { // 한글 포함 길이를 위해 mb_strlen 사용
            $nameErr = "이름은 20자 이내로 입력해주세요.";
        }
    }
}

// 입력 데이터를 정리하고 보안 처리하는 함수
function test_input($data) {
    $data = trim($data); // 앞뒤 공백 제거
    $data = stripslashes($data); // 역슬래시 제거
    $data = htmlspecialchars($data); // HTML 특수 문자 엔터티로 변환
    return $data;
}
?>




코드 설명




  • htmlspecialchars($_SERVER['PHP_SELF']): 폼 데이터를 현재 스크립트 파일로 전송합니다. htmlspecialchars() 함수는 #XSS 공격을 방지하기 위해 사용됩니다.

  • $_SERVER["REQUEST_METHOD"] == "POST": 폼이 POST 방식으로 제출되었는지 확인합니다.

  • empty($_POST["name"]): $_POST["name"]이 비어 있는지 확인하여 필수 필드 검사를 수행합니다.

  • test_input($data) 함수: 입력된 데이터를 정리(trim), 역슬래시 제거(stripslashes), #HTML 특수 문자 인코딩(htmlspecialchars)하여 기본적인 보안 처리를 수행합니다.

  • preg_match("/^[a-zA-Z가-힣 ]*$/",$name): #정규 표현식을 사용하여 이름에 영문자, 한글, 공백만 포함되어 있는지 확인합니다.

  • mb_strlen($name, 'UTF-8') > 20: 입력된 이름의 길이가 20자를 초과하는지 확인합니다. #한글을 포함한 문자열의 길이를 정확히 세기 위해 mb_strlen 함수를 사용하고 인코딩을 UTF-8로 지정했습니다.

  • <span class="error"><?php if (isset($nameErr)) echo $nameErr;?></span>: 유효성 검사 실패 시 해당 에러 메시지를 화면에 표시합니다.







추가적인 유효성 검사 방법


uploadImage


위 예시는 기본적인 유효성 검사이며, 실제 웹 애플리케이션에서는 더 다양한 유효성 검사가 필요할 수 있습니다.



  • 데이터 형식 검사: 이메일 주소 형식, 전화번호 형식, 날짜 형식 등 특정 형식에 맞는지 검사합니다. (filter_var() 함수 사용 고려)

  • 데이터 값 범위 검사: 숫자의 최솟값, 최댓값 또는 특정 범위 내에 있는지 검사합니다.

  • 데이터 존재 유무 검사: 데이터베이스에 이미 존재하는 값인지 확인합니다. (예: 중복 아이디/이메일 확인)

  • 클라이언트 측 유효성 검사 (JavaScript): 서버 측 검사 전에 클라이언트 측에서 기본적인 유효성 검사를 수행하여 사용자 경험을 향상시킬 수 있습니다. 하지만 #클라이언트 측 검사는 우회될 수 있으므로 #서버 측 검사는 필수입니다.

uploadImage






결론




#폼 데이터 #유효성 검사는 안전하고 안정적인 웹 애플리케이션 개발에 필수적인 단계입니다. #PHP에서는 다양한 방법으로 유효성 검사를 수행할 수 있으며, 상황에 맞는 적절한 검증 방법을 선택하여 적용하는 것이 중요합니다. 다음 시간에는 폼 데이터를 안전하게 처리하는 방법에 대해 더 자세히 알아보겠습니다.