English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 강의에서, 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() 함수가 정상적으로 작동합니다. 형식 검증만 수행하고 싶다면, 이메일 부분을 대체할 수 있는 자신의 커스텀 코드를 사용할 수 있습니다.