[웹프로그래밍과 PHP] 3. 조건문(if,if~elseif~else, ~?~:축약형)
조건문은 프로그래밍에서 자주 쓰는 논리 언어이다. IF문이라고 하기도 하는데, 한국말로 표현하자면, '만약 ~라면, ~을 실행하라.'라는 의미이다. 조건문은 두 부분으로 나눌 수 있다. '만약 ~라면,' 부분과 '~을 실행하라.' 부분으로. 전자는 진위를 판단할 수 있는 조건문이고, 후자는 조건문이 만족되었을 때 실행할 구문이다.
PHP에서는 거짓을 나타내는 여섯 가지 값이 있다. 숫자는 0과 0.0, 문자열은 아무 것도 담지 않은 문자열과 0이라는 문자열, false와 null이라는 특수한 문자, 이 여섯 가지를 제외한 값은 모두 참으로 인식한다.
<?php$test='php'; //변수선언
if($test == 'php'){ //조건문
print "$test ".'test입니다.'."\n"; //실행문
}
$id='test';
if($id){ //조건문
print "$id".'님 환영합니다.'."\n"; //실행문
}
?>
위의 코드를 보면, 두 개의 조건문이 있다.
첫번째 조건문은 $test 변수와 php 문자열이 같은지 확인한다. 두 조건이 같으면, 조건문은 1을 반환하면서 참이 된다.
여기서 주의할 점은 if문에서 같다는 표현은 등호(=)를 두 개 쓴다는 점이다. 등호를 하나만 쓰면, 변수에 값을 넣어준다는 의미가 도니다.
두번째 조건문은 $id변수에 값이 있는지 확인한다. $id변수에 test문자열이 들어가므로 이 조건문은 참이 된다.
아래는 위의 코드를 실행한 화면이다.
if문은 elseif나 else와 많이 사용된다. elseif는 여러 개의 조건문을 표현할 때 사용하고, else는 조건문이 거짓일 때 실행할 구문을 표현할 때 사용한다.
<?php$gender=''; //변수선언
if($gender == 'male'){ //조건문
print "남성 회원님을 위한 추천 아이템!\n"; //실행문
}
elseif($gender == 'female'){ //if가 거짓일 때 조건 비교
print "여성 회원님을 위한 추천 아이템!\n"; //실행문
}
else{
print "모두를 위한 추천 아이템!\n"; //if와 elseif가 거짓일 때 실행
}
?>
위의 예제에서는 변수에 빈 문자열이 들어가 있기 때문에 if와 elseif의 조건문이 모두 거짓이다. 그래서 else에 있는 실행문이 실행된다.
if~else 구문은 ?와 :으로 축약이 가능하다.
<?php$select="바다";
if($select=="바다"){
print "내일은 바다로 갑니다.\n";
}
else{
print "내일은 산으로 갑니다.\n";
}
?>
위의 구문을 축약형으로 바꾸면, 아래와 같다.
<?php$select="바다";
$select=="바다" ? print "내일은 바다로 갑니다.\n":
print "내일은 산으로 갑니다.\n";
?>
위의 코드를 보면, if문이 보이지 않는다. 물음표(?)가 if문을 대신하고, 콜론(:)이 else문을 대신한다. 취약점 분석을 하다 보면, 이런 축약형도 나오기 때문에 축약형을 알아 둘 필요가 있다. 아래는 위의 코드를 실행한 결과이다.
이 내용은 칼리!도커를해킹하다 2부의 아주 일부입니다. 책에서 더 자세히 다룹니다. 2부는 2019년 6월 출간 예정입니다.
칼리!도커를해킹하다 1부는 2부를 공부하기 전에 알아야 할 내용으로 이미 전자책으로 출간되었습니다.
예스24 http://www.yes24.com/Product/Goods/71536932?scode=032&OzSrank=4
알라딘 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=187404326