HTML form 요소는 텍스트 입력, 체크박스, 라디오 버튼 등 다양한 input 요소를 포함할 수 있다.

이러한 input 요소별로 사용자가 입력한 데이터가 적합한 데이터인지를 검사하는 검증 규칙을 설정할 수 있다.

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> ID : <input type="text" name="ID"><span class="alert"> * <?php echo $IDMsg ?></span><br> PASSWARD : <input type="password" name="password"><span class="alert"> * <?php echo $passwordMsg ?></span> <br><br> 이름 : <input type="text" name="name"><span class="alert"> * <?php echo $nameMsg ?></span> <br> 성별 : <input type="radio" name="gender" value="female">여자 <input type="radio" name="gender" value="male">남자 <span class="alert"> * <?php echo $genderMsg ?></span> <br><br> 직위 : <input type="radio" name="position" value="Professor">교수 <input type="radio" name="position" value="Student">학생 <span class="alert"> * <?php echo $positionMsg ?></span> <br><br> 학번 : <input type="text" name="student_id"><span class="alert"> * <?php echo $student_idMsg ?></span> <br><br> 이메일 : <input type="text" name="email"><span class="alert"> * <?php echo $student_emailMsg ?></span> <br><br> 자기소개 : <textarea name="comment"></textarea> <br><br> <input type="submit" value="전송"> </form>

여기서 <?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

· $_SERVER는 PHP에서 제공하는 슈퍼 글로벌로 인덱스로 "PHP_SELF"를 사용하면, 현재 실행 중인 PHP 스크립트의 파일 이름을 반환.

· htmlspecialchars() 함수는 인수로 전달받은 문자열에 포함된 특수 문자들을 HTML 엔티티로 변환.(이 함수를 사용함으로써 입력 문자열에 사용자가 안 좋은 의도로 HTML 코드를 삽입하는 것을 막을 수 있다.)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

PHP 코드를 action 속성값으로 사용하면, 해당 form 요소로 입력받은 데이터를 다른 페이지로 전송하지 않고 현재 페이지로 보내게 된다.

form 필수 입력 검증/입력 형식 검증

<?php $nameMsg = $IDMsg = $passwordMsg = $genderMsg = $positionMsg = $student_idMsg = ""; $name = $ID = $password = $gender = $position = $student_id = $email = $comment = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { //ID에 대한 필수 입력 및 입력 형식 검증 if (empty($_POST["ID"])) { $IDMsg = "ID를 입력해 주세요."; } else { $ID = $_POST["ID"]; } if (!preg_match("/^[a-zA-Z1-99999999]*$/", $ID)) { $IDMsg = "영문자와 숫자만 가능합니다!"; } //passward에 대한 필수 입력 검증 if (empty($_POST["password"])) { $passwordMsg = "비밀번호를 입력해 주세요."; } elseif($_POST["password"]<10) { $passwordMsg = "비밀번호를 10자리 이상으로 정해주세요."; } else { $password = $_POST["password"]; } // 이름에 대한 필수 입력 및 입력 형식 검증 if (empty($_POST["name"])) { $nameMsg = "이름을 입력해 주세요."; } else { $name = $_POST["name"]; } if (!preg_match("/^[a-zA-Z가-힣 ]*$/", $name)) { $nameMsg = "영문자와 한글만 가능합니다!"; } // 성별에 대한 필수 입력 검증 if (!isset($_POST["gender"]) || $_POST["gender"]==false) { $genderMsg = "성별을 선택해 주세요"; } else { $gender = $_POST["gender"]; } //직책에 대한 필수 입력 검증 if (!isset($_POST["position"]) || $_POST["position"]==false){ $positionMsg = "직책을 선택해 주세요."; }else{ $position = $_POST["position"]; } //학번에 대한 필수 입력 검증 if (empty($_POST["student_id"])) { $student_idMsg = "학번을 입력해 주세요."; } else { $student_id = $_POST["student_id"]; } //이메일에 대한 입력 형식 검증 if (empty($_POST["email"])) { $emailMsg = "이메일을 입력하여 주세요."; } else { $email = $_POST["email"]; } if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailMsg = "이메일을 정확히 입력해 주세요!"; } $comment = $_POST["comment"]; } ?>

위의 예제에서 사용된 $_SERVER["REQUEST_METHOD"]는 페이지에 접근하기 위해 사용된 HTTP 요청 방식을 반환한다.

따라서 위의 예제는 POST 방식의 HTTP 요청에서만 동작.

empty() 함수나 isset() 함수로 검사하여 필수 입력에 해당하는 데이터가 비어있다면 특정 메시지를 출력한다.

PHP에서 사용할 수 있는 검증 필터는 다음과 같다.

검증 필터

설명

FILTER_VALIDATE_BOOLEAN

해당 변수가 "1", "true", "on", "yes"인 경우에만 true를 반환하고, 나머지는 전부 false를 반환함.

FILTER_VALIDATE_EMAIL

해당 변수가 유효한 이메일 주소인지를 검증함.

FILTER_VALIDATE_FLOAT

해당 변수가 float 타입인지를 검증함.

FILTER_VALIDATE_INT

해당 변수가 int 타입인지를 검증함.

FILTER_VALIDATE_IP

해당 변수가 유효한 IP 주소인지를 검증함.

FILTER_VALIDATE_MAC

해당 변수가 유효한 MAC 주소인지를 검증함.

FILTER_VALIDATE_REGEXP

해당 변수를 펄 호환 정규 표현식(Perl-Compatible Regular Expression, PCRE)으로 검증함.

FILTER_VALIDATE_URL

해당 변수가 유효한 URL 주소인지를 검증함.


'PHP' 카테고리의 다른 글

php 세션  (0) 2019.09.12
php 쿠키  (0) 2019.09.12
php 와 html form(html과의 교류)  (0) 2019.09.12
php 제어문  (0) 2019.09.12
php 배열  (0) 2019.09.12

+ Recent posts