PHP - 폼 검증
안녕하세요, PHP 개발자 지망생 여러분! 오늘 우리는 폼 검증의 흥미로운 세상으로 뛰어들어 볼 거예요. 여러분의 친절한 이웃 컴퓨터 교사로서, 저는 웹 개발의 이 중요한 부분을 안내해드리기 위해 여기 있습니다. 믿으세요, 폼 검증을 마스터하면 자전거 타는 것처럼, 한 번 배우면 절대 잊지 않게 될 거예요!
폼 검증의 중요성
코드로 들어가기 전에, 폼 검증이 왜 그렇게 중요한지 이야기해볼게요. 온라인 피자 배달 서비스를 운영하고 있다고 상상해보세요. 누군가가 'ABC' 피자를 주문하거나 전화번호로 '-5'를 입력한다면, 당신은 큰 고민에 휩싸일 거예요! 이때 폼 검증이 구원자로서 나타나, 받는 데이터가 정확하고 사용 가능한지 확인해줍니다.
클라이언트 측 vs 서버 측 검증
폼 검증의 세계에서 우리는 두 가지 주요 플레이어를 가지고 있습니다: 클라이언트 측과 서버 측 검증. 오늘 우리는 PHP를 사용한 서버 측 검증에 집중하겠지만, 간단히 두 가지를 다 훑쳐보겠습니다.
클라이언트 측 검증
클라이언트 측 검증은 사용자의 브라우저에서 데이터가 서버로 보내기 전에 일어납니다. 빠르고 즉시 피드백을 제공하지만, 숙련된 사용자에 의해 우회될 수 있습니다.
서버 측 검증
서버 측 검증은 폼이 제출된 후 서버에서 일어납니다. 보다 안전하고 신뢰할 수 있으며, 사용자가 조작할 수 없습니다. 오늘 우리는 이 부분을 깊이 탐구해볼 거예요.
PHP 폼 검증 시작하기
간단한 폼을 만들어 검증을 단계별로 구축해보겠습니다. 여기 우리의 기본 HTML 폼이 있습니다:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
이름: <input type="text" name="name"><br>
나이: <input type="text" name="age"><br>
<input type="submit" name="submit" value="제출">
</form>
이제 이 폼에 PHP 마법을 더해 폼을 검증해보겠습니다!
검증 함수
구체적인 검증을 들어가기 전에, 몇 가지 보조 함수를 만들어보겠습니다:
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
이 test_input()
함수는 세 가지 중요한 일을 합니다:
-
trim()
은 문자열의 양쪽 공백을 제거합니다. -
stripslashes()
는 백슬래시를 제거합니다. -
htmlspecialchars()
는 특수 문자를 HTML 엔티티로 변환합니다.
이 단계들은 악의적인 코드 주입을 방지하고 데이터가 깨끗하게 유지되도록 도와줍니다.
폼이 비어 있는지 확인
먼저 기본적인 확인을 해보겠습니다: 폼이 비어 있는지 확인하는 방법입니다:
<?php
$name = $age = "";
$nameErr = $ageErr = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "이름이 필요합니다";
} else {
$name = test_input($_POST["name"]);
}
if (empty($_POST["age"])) {
$ageErr = "나이가 필요합니다";
} else {
$age = test_input($_POST["age"]);
}
}
?>
이 코드에서:
- 우리는 폼 데이터와 오류 메시지를 저장할 변수를 초기화합니다.
- 폼이 POST 방식으로 제출되었는지 확인합니다.
- 각 필드가 비어 있는지 확인합니다. 비어 있다면 오류 메시지를 설정하고, 비어 있지 않다면 데이터를 정리합니다.
나이 필드가 숫자가 아닌 경우
이제 나이 필드가 숫자인지 확인하는 특정 검증을 추가해보겠습니다:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// ... 이전 확인들 ...
if (empty($_POST["age"])) {
$ageErr = "나이가 필요합니다";
} else {
$age = test_input($_POST["age"]);
if (!is_numeric($age)) {
$ageErr = "나이는 숫자여야 합니다";
}
}
}
여기서 우리는 is_numeric()
을 사용하여 나이가 실제로 숫자인지 확인합니다. 숫자가 아니라면 적절한 오류 메시지를 설정합니다.
모든 것을 합쳐서
이제 우리의 완전한 폼 검증 스크립트를 확인해보겠습니다:
<?php
$name = $age = "";
$nameErr = $ageErr = "";
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "이름이 필요합니다";
} else {
$name = test_input($_POST["name"]);
}
if (empty($_POST["age"])) {
$ageErr = "나이가 필요합니다";
} else {
$age = test_input($_POST["age"]);
if (!is_numeric($age)) {
$ageErr = "나이는 숫자여야 합니다";
}
}
}
?>
<h2>PHP 폼 검증 예제</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
이름: <input type="text" name="name">
<span class="error"><?php echo $nameErr;?></span>
<br><br>
나이: <input type="text" name="age">
<span class="error"><?php echo $ageErr;?></span>
<br><br>
<input type="submit" name="submit" value="제출">
</form>
<?php
echo "<h2>입력하신 내용:</h2>";
echo $name;
echo "<br>";
echo $age;
?>
이 스크립트는 다음을 수행합니다:
- 변수와 함수를 정의합니다.
- 폼이 제출되었을 때 검증을 수행합니다.
- 오류 메시지가 있는 경우 폼을 표시합니다.
- 검증된 입력을 표시합니다.
검증 방법 표
여기 몇 가지 일반적인 PHP 검증 방법의 표가 있습니다:
방법 | 설명 | 예제 |
---|---|---|
empty() | 변수가 비어 있는지 확인합니다 | if (empty($var)) |
isset() | 변수가 설정되어 있고 NULL이 아닌지 확인합니다 | if (isset($var)) |
is_numeric() | 변수가 숫자 또는 숫자 문자열인지 확인합니다 | if (is_numeric($var)) |
strlen() | 문자열의 길이를 가져옵니다 | if (strlen($var) > 5) |
preg_match() | 정규 표현식을 사용하여 일치 여부를 확인합니다 | if (preg_match("/pattern/", $var)) |
filter_var() | 변수를 지정된 필터로 필터링합니다 | if (filter_var($var, FILTER_VALIDATE_EMAIL)) |
기억하세요, 폼 검증은 데이터 무결성을 보장하고 사용자 경험을 향상시키는 것입니다. 클럽의 경비원처럼, 좋은 데이터를 들이고 나쁜 데이터를 밖으로 쫓아내는 것입니다!
이 글을 마치며, 이 튜토리얼이 PHP 폼 검증의 견고한 기반을 제공해드렸기를 바랍니다. 연습이 완벽을 만들어라, 그러니 다양한 폼과 검증 기법을 실험해보지 마세요. 언제든지 폼을 검증하는 프로가 될 거예요!
행복한 코딩을 기원하며, 폼이 항상 유효하길 바랍니다!
Credits: Image by storyset