데브포일 홈
DEV MODE - 실서버 영향 없음 📦 배포 관리
폼 처리와 데이터 검증
+200 XP
LEVEL 34 QUEST

폼 처리와 데이터 검증

폼 처리와 데이터 검증 — DevFoil 바이브코딩 Stage 8, Lv.34

HTML 폼과 PHP - 데이터의 여정
폼이 왜 중요한가?
웹에서 사용자가 데이터를 서버에 보내는 가장 기본적인 방법이 HTML 폼(form)입니다. 회원가입, 로그인, 검색, 글 작성, 결제 - 모든 것이 폼에서 시작됩니다.

폼의 action 속성은 데이터를 보낼 PHP 파일을, method 속성은 전송 방식(GET/POST)을 지정합니다.
<!-- register.html -->
<form action="process.php" method="POST">
    <label>이름:</label>
    <input type="text" name="username" required>

    <label>이메일:</label>
    <input type="email" name="email" required>

    <label>비밀번호:</label>
    <input type="password" name="password" required>

    <label>성별:</label>
    <select name="gender">
        <option value="male">남성</option>
        <option value="female">여성</option>
    </select>

    <label>관심사:</label>
    <input type="checkbox" name="interests[]" value="coding"> 코딩
    <input type="checkbox" name="interests[]" value="design"> 디자인
    <input type="checkbox" name="interests[]" value="ai"> AI

    <button type="submit">가입하기</button>
</form>
$_GET과 $_POST - 데이터 받기
두 가지 전송 방식의 차이
PHP는 슈퍼글로벌 변수를 통해 폼 데이터를 받습니다. $_GET은 URL 쿼리스트링으로, $_POST는 요청 본문으로 전달됩니다.
구분$_GET$_POST
데이터 위치URL에 노출 (?key=value)요청 본문에 숨김
데이터 크기제한 있음 (~2KB)대용량 가능
북마크 가능가능불가능
사용 예검색, 페이지 이동, 필터로그인, 회원가입, 글 작성
보안브라우저 기록에 남음상대적으로 안전
<?php
// process.php - POST 데이터 받기
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $username  = $_POST["username"] ?? "";
    $email     = $_POST["email"] ?? "";
    $password  = $_POST["password"] ?? "";
    $gender    = $_POST["gender"] ?? "";
    $interests = $_POST["interests"] ?? [];

    echo "환영합니다, {$username}님!\n";
    echo "관심사: " . implode(", ", $interests);
}

// GET 데이터 예시 - search.php?q=바이브코딩&page=2
$query = $_GET["q"] ?? "";
$page  = (int)($_GET["page"] ?? 1);

// $_REQUEST - GET과 POST 모두 포함 (보안상 비추천)
// $_SERVER - 서버/요청 정보
echo $_SERVER["REQUEST_METHOD"];  // GET 또는 POST
echo $_SERVER["REMOTE_ADDR"];     // 접속자 IP
?>
🔒
여기까지는 미리보기입니다
폼 처리와 데이터 검증
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)