[웹프로그래밍과 PHP] 3. 조건문(if,if~elseif~else, ~?~:축약형)

in #kr5 years ago

조건문은 프로그래밍에서 자주 쓰는 논리 언어이다. 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부를 공부하기 전에 알아야 할 내용으로 이미 전자책으로 출간되었습니다.

리디북스
https://ridibooks.com/v2/Detail?id=2853000018&fbclid=IwAR3q5hlVZeX20HWAPjWbDnqg8AqYJhx5vWQG2zLxH4xYpS0eWxOdeFLInNE

예스24 http://www.yes24.com/Product/Goods/71536932?scode=032&OzSrank=4

알라딘 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=187404326