일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- sql injection
- php To Do List
- Recon
- file upload
- ssrf
- OS Command Injection
- 파일 업로드 취약점
- THM
- tryhackme
- War Game
- Cryptography
- php file upload
- BANDiT
- Authentication
- privilege escalation
- FTZ
- over the wire
- php 파일 업로드하기
- Server Side Request Forgery
- active recon
- SQLi
- Leviathan
- access control
- php 로그인 페이지 만들기
- Reconnaissance
- php login page
- php
- Cookie
- active reconnaissance
- overthewire
- Today
- Total
R's Hacking Daily Log
php 조건문 다루기 본문
Step 1 :: IF
조건문이란 특정 조건의 결과 값의 따라 코드의 실행 여부를 결정하는 문장으로
대표적인 if문 같은 경우에는 주어진 조건이 True인 경우에만 코드를 실행한다.
if (condition) {
condition이 true일 때 실행할 코드
}
if 문의 구조는 위와 같다. 괄호 안에 조건을 작성하고 해당 조건이 참일 경우
실행하고자 하는 코드를 중괄호 안에다 입력하면 된다.
예를 들어 점수가 100점일 경우 축하 문구를 출력하고 싶다면
"점수가 100점이다"가 조건이 되고 "축하 문구를 출력한다"가 실행 내용이 되는 것이다.
조건과 실행 내용을 알맞게 작성해 주면 점수가 100점일 때만 축 만점!!이라는 문구가 출력되는 if문이 만들어진다.
그럼 점수가 100점이 아닌 경우에 어떤 동작을 취하고 싶다면 어떻게 해야 할까?
Step 2 :: else
if문을 사용해서 true인 경우의 코드를 작성해 보았다. 하지만 true가 아닌 경우, 즉 조건이 false인 경우엔
어떻게 실행 내용을 지정해 줄 수 있을까?
이럴 때 사용할 수 있는 데 else문이다.
else문은 if문의 조건이 false일 때 실행시키고자 하는 내용을 기술할 수 있는 공간이다.
if (condition) {
true인 경우
} else {
false인 경우
}
구조는 위와 같다. if문에 연결해서 작성해 주면 된다
점수가 100점일 경우에는 축하 문구를 출력하고 아닌 경우에는 점수를 출력하는 if-else문이 완성되었다.
score가 90일 때 결과로 "90점입니다"가 출력되는 걸 볼 수 있다.
이는 "score 값이 100이냐" 물어볼 if문의 조건에 부합했기 때문에 else문의 내용이 실행된 결과이다.
그렇다면 한 단계 더 나아가 100점은 아니지만 90점 이상일 때 또 다른 동작을 실행하기 위해서는
어떻게 할 수 있을까?
Step 3 :: else if
100점일 경우, 90점 이상일 경우로 나눠서 문구를 다르게 출력하고자 한다.
이 말을 잘 생각해 보면 조건이 2개인 조건문을 만들고 싶다는 의미와 같다.
else 문 if문의 결과가 false인 경우 실행되는 조건문이라면
else if문은 if문을 연달아 여러 개 실행하는 구조라고 보면 된다.
점수가 100점일 경우와 90점 이상일 경우 출력하는 문구가 다른 lf-elseif문이 만들어졌다.
코드 내용을 해석해 보자면 score가 93인 상황에서
1번 조건문 ) score가 100이라는 값을 가지고 있다면 "축 만점!!" 문구를 출력해라!
2번 조건문 ) 1번 조건에 false인 경우 중 score가 90 이상인 값이라면 "아쉬운 점수.." 문구를 출력해라
이처럼 else if문을 사용하면 값의 범위에 따라서 서로 다른 동작을 수행할 수 있다.
Step 4 :: switch
switch문은 else-if문과 구조가 비슷한 조건문으로
전달인자를 사용해서 여러 case문에 따라 실행될 코드를 달리 정의할 수 있다.
switch (argument) {
case condition1:
condition1이 true일 경우 실행 내용
break;
case condition2:
condition2가 true인 경우 실행 내용
break;
...
default:
위의 조건들에 해당하지 않은 경우
break;
}
switch문에서는 case를 사용하여 조건을 여러 개 나열할 수 있다. if문에 여러 else-if문을 연결하는 형태와 비슷하다.
각 case문을 작성할 때는 마지막에 break 예약어를 사용해야 한다.
break는 제어문에서 빠져나올 때 사용하는 예약어인데 break를 사용하지 않게 되면
switch문에서 빠져나와야 하는 데 그다음 case문으로 넘어가버릴 수 있다.
만약 모든 case문에 해당하지 않는 전달인자에 대해 처리하고 싶다면 default를 이용하면 된다.
default는 if문에서 else와 같은 느낌으로 모든 case에 해당하지 않은 경우(= 모든 조건에 false)를
처리할 수 있도록 해준다.
default에서도 마찬가지로 마지막에 break 예약어를 사용해야 한다.
점수가 100점일 때, 90점 이상일 때, 그 외의 경우로 나뉘어 조건이 작성된 switch문이다.
Step 5 :: match
마지막으로 살펴볼 match는 제어문은 아니지만 switch와 유사한 기능을 수행한다.
switch에서는 여러 개의 case로 조건을 나열하고 예외의 경우는 default로 처리하였다.
match 표현식도 이와 유사하게 전달인자에 대해서 여러 조건 중 만족하는 조건에 대한 내용을 실행시킬 수 있다.
다만 차이가 있다면 match 표현식이 문법적으로 더 간단하고 " === " 비교 연산을 하기 때문에
좀 더 엄격한 데이터 비교 과정이 이뤄어진다고 할 수 있다.
input이 boolean - true를 가지고 있을 때 switch문의 경우, "==" 비교 연산자로 데이터를 비교하여
true가 문자열이든 boolean이든 상관없기 때문에 두 번째 case까지 갈 필요도 없이 "1번 케이스"라는 결과가 나왔다.
하지만 match 표현식의 경우에는
"===" 비교 연산을 하기 때문에 데이터 형이 다르면 false로 취급하는 것이다.
따라서 결과는 boolean - true 값으로 일치하는 "2번 케이스"가 된다.
더불어 match 표현식도 default를 사용할 수 있으며 코드에서 보이는 바와 같이 어떤 값을 반환하기 때문에
반환값을 저장할 변수를 선언한 후에 사용해야 한다.
'PHP' 카테고리의 다른 글
php 함수 (1) (0) | 2023.07.05 |
---|---|
php 반복문 다루기 (0) | 2023.07.04 |
php 연산자 다루기 (2) (0) | 2023.07.02 |
php 연산자 다루기 (1) (1) | 2023.07.01 |
php 데이터 타입 (0) | 2023.06.30 |