본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP if-else — 로그인 성공/실패 분기 처리 완전 정리

by 왕진 2026. 6. 12.
반응형

 

 

Web Development · PHP if-else

PHP if-else 조건문 —
"성공이면 A, 아니면 B" 분기 처리

if만으로는 부족할 때 — 두 갈래 중 하나는 반드시 실행
시작 오늘 분석할 코드

앞 예제 if1.php와 같은 로그인 코드지만, 실패했을 때의 처리가 추가됐다. else가 붙으면 "조건이 거짓일 때 실행할 코드"를 명시할 수 있다.

<?php $username = "user"; $password = "pass"; $db_data["username"] = "user"; $db_data["password"] = "pass"; if($db_data["username"] == $username && $db_data["password"] == $password){ // 회원 페이지 표시 print "회원 페이지입니다."; }else{ // 로그인실패 처리 print "로그인에 실패하였습니다."; } ?>
실제 출력 미리보기
회원 페이지입니다.

→ 입력값과 DB값이 일치하므로 if 본문이 실행되고 else는 건너뛴다. 만약 password가 "wrong"이었다면 "로그인에 실패하였습니다."가 출력된다.

용어 용어 정리
if조건이 참일 때 실행할 블록
else"그렇지 않으면" — if 조건이 거짓일 때 실행
분기조건에 따라 갈라지는 흐름
참 / 거짓true / false — 조건 평가 결과
==값 비교 (느슨한 동등 비교)
&&AND — 두 조건 모두 참
{ }실행 영역(블록) — 여러 줄 가능
$db_data연관 배열 — DB에서 가져왔다는 가정

1 if-else의 기본 구조
if ( 조건 ) { 조건이 참일 때 실행 } else { 조건이 거짓일 때 실행 }

둘 중 정확히 하나만 실행된다 — 둘 다 실행되거나 둘 다 건너뛰는 일은 없다. "꼭 양자택일이 필요한 상황"에 쓴다.

if만 있으면 "조건이 거짓일 때는 아무 일도 안 일어남". if-else는 "거짓일 때도 명확히 무언가 한다." 둘은 의도가 다르다.

2 if vs if-else — 어떤 차이?
if 단독
조건 참 → A 실행
조건 거짓 → 아무것도 안 함

예: "로그인 됐을 때만 환영 메시지"
if-else
조건 참 → A 실행
조건 거짓 → B 실행

예: "로그인 성공 / 실패 메시지"
// if 단독 if($logged_in) print "환영합니다"; // 로그인 안 된 사용자는 화면이 텅 비어 있음 // if-else if($logged_in){ print "환영합니다"; }else{ print "로그인이 필요합니다"; } // 모든 사용자에게 무조건 어떤 메시지든 보여줌

3 로그인 분기 흐름도
[ 입력값 vs DB값 비교 ] ↓ ┌────────┴────────┐ ↓ ↓ [ 참 ] [ 거짓 ] ↓ ↓ "회원 페이지 "로그인에 입니다." 실패..." ↓ ↓ └─────┬───────────┘ ↓ [ 다음 코드로 ]
※ 두 갈래의 의미
  • 성공 경로: 회원 페이지 출력 → 사용자에게 정상 응답
  • 실패 경로: 실패 메시지 출력 → 사용자에게 재시도 안내
  • 둘 다 "사용자에게 어떤 응답이 가긴 한다"는 점이 핵심

4 if-else 체이닝 — elseif

두 가지 분기로 부족하면 elseif로 더 많은 분기를 만들 수 있다. 위에서부터 차례로 검사하다가 처음 참이 된 분기 하나만 실행한다.

if($score >= 90){ print "A"; }elseif($score >= 80){ print "B"; }elseif($score >= 70){ print "C"; }else{ print "F"; } // 위에서부터 차례로 → 처음 참이 된 가지만 실행
분기 종류 키워드 역할
최초 검사 if 첫 번째 조건
추가 검사 elseif 또는 else if 이전 모두 거짓일 때만 검사
최종 폴백 else 위 모든 게 거짓일 때 (선택)

반응형
5 if-else 끝의 흐름

if 또는 else 둘 중 하나가 끝나면 else 블록 다음 코드로 이어진다. 즉 if-else는 한 덩어리고, 끝나면 평소 흐름으로 복귀한다.

if(...){ ... }else{ ... } // ↑ if든 else든 끝나면 여기로 옴 print "다음 코드";
※ 자바스크립트의 return처럼 함수 자체를 끝내는 게 아니다 — 단지 if-else 블록이 끝날 뿐. 함수 종료는 return이나 exit가 별도로 필요.

6 자주 하는 실수
실수 증상 해결
}else{ 사이에 다른 코드 Parse error else는 반드시 if 블록 직후
else ifelse if로 띄어 씀 (둘 다 동작) 단, elseif 권장 일관성 있게 한 가지 형태 선택
else에 조건 붙이려 함 Parse error else에는 조건 없음 — 조건 필요하면 elseif
중괄호 누락 else가 엉뚱한 if에 붙음 (dangling else) 모든 분기에 중괄호 사용
=== 혼동 의도와 다른 분기 실행 비교는 반드시 == 또는 ===

7 if vs 삼항 연산자 vs match

"이거 아니면 저거" 같은 단순 분기는 더 짧게 쓸 방법이 있다. 가독성과 상황에 따라 골라 쓴다.

// 1) if-else (본 코드) if($a == $b){ print "yes"; }else{ print "no"; } // 2) 삼항 연산자 (간단한 값 선택) print ($a == $b) ? "yes" : "no"; // 3) Null 합병 연산자 (PHP 7+) $name = $input ?? "guest"; // 4) match (PHP 8+, 여러 분기를 깔끔하게) $grade = match(true){ $score >= 90 => "A", $score >= 80 => "B", default => "F", };

핵심 한 줄 요약

if-else두 갈래 중 정확히 하나만 실행
if 단독거짓이면 아무 일도 안 함
elseif3개 이상의 분기를 만들 때
else조건 없음 — 위 모두 거짓일 때 실행
중괄호실무에서는 항상 사용 — dangling else 방지
단순 분기삼항 연산자(?:), match(PHP 8+) 활용 가능
로그인 패턴성공 / 실패 모두 응답하는 게 표준
반응형

댓글