English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 기초 강의

PHP 고급 강의

PHP & MySQL

PHP 참조 매뉴얼

PHP 양식 검증

이 강의에서, PHP 필터를 사용하여 양식 데이터를 정리하고��인하는 방법을 배울 것입니다.

양식 데이터를 정리하고��인

이전 강의에서 본 것처럼, 제출된 양식 데이터를 포착하고 표시하는 과정은 매우 간단합니다. 이 강의에서, 당신의 웹 사이트에 간단한 연락 양식을 구현하는 방법을 배울 것입니다. 이 양식은 사용자가 이메일을 통해 의견과 피드백을 보낼 수 있도록 합니다. 동일한PHP mail() 함수이메일을 보내기 위해

또한 기본적인 보안 기능을 구현하겠습니다. 예를 들어, 사용자 입력 내용을 정리하고��인하여 사용자가 웹 사이트 보안을 해치거나 애플리케이션을 손상할 수 있는 잠재적인 해로운 데이터를 삽입할 수 없도록 합니다.

다음은 우리의 다합일 PHP 스크립트입니다. 이 스크립트는 다음 작업을 수행합니다:

  • 사용자가 사이트에 대한 의견을 입력하도록 요청합니다.

  • 동일한 스크립트가 연락처 양식을 표시하고 제출된 양식 데이터를 처리합니다.

  • 이 스크립트는 사용자 입력을 정리하고��인합니다. 필수 필드(표시된)가 누락되면*또는 입력이 잘못되어��인 실패가 발생하면, 스크립트는 양식을 다시 표시하고 해당 양식 필드에 오류 메시지를 표시합니다.

  • 이 스크립트는 사용자가 입력한 필드를 기억하고,��인 오류로 인해 다시 표시되는 양식을 예填充합니다.

  • 사용자가 제출한 데이터가 받아들일 수 있고 모든 것이 원활하다면, 웹 사이트 관리자에게 이메일을 보내고 사용자에게 성공 메시지를 표시합니다.

contact.php 파일에서 다음 코드를 입력하고 프로젝트의 루트 디렉토리에 저장하세요:

<?php
//사용자 입력을 필터링하는 함수
function filterName($field){
    //사용자 이름을 정리합니다
    $field = filter_var(trim($field), FILTER_SANITIZE_STRING);
    
    //사용자 이름 검증
    if(filter_var($field, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z\s]+$/")))){
        return $field;
    } else{
        return FALSE;
    }
}    
function filterEmail($field){
    //이메일 주소를 정리합니다
    $field = filter_var(trim($field), FILTER_SANITIZE_EMAIL);
    
    // 이메일 주소 검증
    if(filter_var($field, FILTER_VALIDATE_EMAIL)){
        return $field;
    } else{
        return FALSE;
    }
}
function filterString($field){
    // 문자열 정리
    $field = filter_var(trim($field), FILTER_SANITIZE_STRING);
    if(!empty($field)){
        return $field;
    } else{
        return FALSE;
    }
}
 
//변수 정의 및 초기화
$nameErr = $emailErr = $messageErr = "";
$name = $email = $subject = $message = "";
 
//폼 제출 시 폼 데이터 처리
if($_SERVER["REQUEST_METHOD"] == "POST"){
 
    // 사용자 이름 검증
    if(empty($_POST["name"])){
        $nameErr = "Please enter your name.";
    } else{
        $name = filterName($_POST["name"]);
        if($name == FALSE){
            $nameErr = "유효한 이름을 입력하세요.";
        }
    }
    
    // 이메일 주소 검증
    if(empty($_POST["email"])){
        $emailErr = "이메일 주소를 입력하세요.";     
    } else{
        $email = filterEmail($_POST["email"]);
        if($email == FALSE){
            $emailErr = "Please enter a valid email address.";
        }
    }
    
    // 메시지 제목 검증
    if(empty($_POST["subject"])){
        $subject = "";
    } else{
        $subject = filterString($_POST["subject"]);
    }
    
    // 사용자 평론 검증
    if(empty($_POST["message"])){
        $messageErr = "Please enter your comment.";     
    } else{
        $message = filterString($_POST["message"]);
        if($message == FALSE){
            $messageErr = "유효한 평론을 입력하세요.";
        }
    }
    
    //이메일을 보내기 전 입력 오류를 확인하세요
    if(empty($nameErr) && empty($emailErr) && empty($messageErr)){}}
        // Recipient email address
        $to = '[email protected]';
        
        // Create email headers
        $headers = 'From: $email . "\r\n" .
        'Reply-To: '. $email . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
        
        // Sending email
        if(mail($to, $subject, $message, $headers)){
            echo '<p class="success">귀하의 메시지가 성공적으로 전송되었습니다! </p>';
        } else{
            echo '<p class="error">이메일을 보내지 못했습니다. 다시 시도해 주세요! </p>';
        }
    }
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8>
    <title>Contact Form</title>
    <style type="text/css">
        .error{ color: red; }
        .success{ color: green; }
    </style>
</head>
    <h2>연락처</h2>
    <p>이 표를 채우고 저희에게 보내주세요</p>
    <form action="contact.php" method="post">
        <p>
            <label for="inputName">이름:<sup>*</sup></label>
            <input type="text" name="name" id="inputName" value="<?php echo $name; ?>">
            <span class="error"><?php echo $nameErr; ?>/span>
        </p>
        <p>
            <label for="inputEmail">이메일:<sup>*</sup></label>
            <input type="text" name="email" id="inputEmail" value="<?php echo $email; ?>">
            <span class="error"><?php echo $emailErr; ?>/span>
        </p>
        <p>
            <label for="inputSubject">제목:</label>
            <input type="text" name="subject" id="inputSubject" value="<?php echo $subject; ?>">
        </p>
        <p>
            <label for="inputComment">Message:<sup>*</sup></label>
            <textarea name="message" id="inputComment" rows="5" cols="30><?php echo $message; ?>/textarea>
            <span class="error"><?php echo $messageErr; ?>/span>
        </p>
        <input type="submit" value="보내기">
        <input type="reset" value="취소">
    </form>
</html>

코드의 사용법

이 코드의 전체 의미를 생각해 보셨을 것입니다. 좋습니다, 바로 들어가서 보겠습니다.

  • filterName() 함수는 입력 값이 인명인지 검증합니다. 유효한 이름은 문자(a-z, A-Z)。

  • filterEmail() 함수는 입력 값을 이메일 주소로 검증합니다.

  • filterString() 함수는 입력 값을 정리하고 특수 문자를 제거하여 입력 값을 정리합니다. 어떤 입력 값도 검증하지 않습니다.

  • 태그 내<form>의 속성 action="contact.php"는 동일한 contact.php 파일을 호출하여 형식을 표시하고 형식 데이터를 처리합니다.

  • <input><textarea>value 속성 내의 PHP 코드, 예를 들어 <?php echo $name; ?> 형식이 오류로 인해 다시 표시되면 사전에 입력한 값을 표시합니다.

  • .error 클래스 내의 PHP 코드, 예를 들어 <span class="error"><?php echo $nameErr; ?>/> 해당 필드의 오류를 표시합니다.

 정리 및 검증 필터에 대한更多信息를 알고 싶다면, 다음을 참조하십시오PHP 필터참조.

주의:컴퓨터에서 이메일 서버를 설정해야 PHP mail() 함수가 정상적으로 작동합니다. 형식 검증만 수행하고 싶다면, 이메일 부분을 대체할 수 있는 자신의 커스텀 코드를 사용할 수 있습니다.