minstudio

입력 데이터 검증 (Validation)

사용자가 입력한 데이터를 아무 의심 없이 데이터베이스에 넣으면 큰일이 납니다! 데이터 검증(Validation)은 입력된 값이 이메일 형식이 맞는지, 비밀번호가 너무 짧지 않은지 등 조건을 깐깐하게 검사하는 과정입니다.

😈
악성 유저
나이: "마이너스 백살"
이메일: "없음"
➡️
👮‍♂️
Validation 검문소
  • ❌ 이메일 형식이 아닙니다!
  • ❌ 나이는 숫자여야 합니다!
🚫
🗄️
DB
bash
// 주로 'vlucas/valitron' 이나 'rakit/validation' 라이브러리를 많이 사용합니다.
// composer require rakit/validation

use Rakit\Validation\Validator;

$app->post('/register', function ($request, $response) {
    $parsedBody = $request->getParsedBody();
    
    $validator = new Validator;
    
    // 검사 규칙 세우기 (경찰관의 메뉴얼)
    $validation = $validator->make($parsedBody, [
        'name'  => 'required', // 필수
        'email' => 'required|email', // 필수 + 이메일 형식
        'age'   => 'numeric|min:18'  // 숫자 + 18 이상
    ]);
    
    $validation->validate(); // 검사 실행!
    
    if ($validation->fails()) {
        // 검사 실패 시: 오류 메시지를 모아서 반환 (돌려보냄)
        $errors = $validation->errors();
        $response->getBody()->write(json_encode(['errors' => $errors->firstOfAll()]));
        return $response->withStatus(400)->withHeader('Content-Type', 'application/json');
    }
    
    // 검사 통과! DB에 안전하게 저장 가능
    $response->getBody()->write("가입 승인 완료!");
    return $response;
});
입력 데이터 검증 (Validation) | Minstudio