• 4주차 PHP

    2021. 5. 2.

    by. Sooming_

    PHP

    (PHP:Hypertext Preprocessor (Personal Home Page Tools))

    : 주로 HTML 코드를 프로그래밍적으로 생성

    서버쪽에서 실행 되는 프로그래밍 언어

    PHP의 장점

    웹에 최적화된 언어

    웹개발에 필요한 수많은 로직들이 함수의 형태로 미리 제공

    크로스플랫폼

    거의 모든 데이터베이스를 지원

    가장 많은 공개소프트웨어가 PHP로 만들어짐

     

    숫자와 문자

    숫자

    <?php
    echo 1;
    ?>
    // 화면에 1 출력
    <?php
    var_dump(6); // int(6)
    var_dump(6.1); // float(6.1)
    ?>

    var_dump(x) : data type(x)

     

    문자

    <?php
    echo "Hello World"; // Hello World
    echo "Hello"." "."World"; // Hello World
    ?>

    php에서 문자를 이어붙일 때 . 사용

     

    변수

    echo와 print는 같은 기능

    #, //, /* */ : 주석

     

    비교

    연산자

     

    비교 연산자

    ==

    좌항과 우항을 비교해서 서로 값이 같다면 True 다르다면 False

     

    !=

    좌항과 우항이 같지 않음

    '!'는 부정을 의미

     

    >, <=

    수학적 의미와 같음

     

    ===

    좌항과 우항이 정확하게 같다는 의미

    양쪽 항이 데이터 형식까지 정확하게 동일해야 같은 것으로 인정

     

     

    입출력과 폼

    입력값과 폼

    <?php
    echo $_GET['id'].','.$_GET['password'];
    ?>

     

    주소?입력 데이터

     

    값&값

     

    값의 이름=값

     

    HTML Form

    <html>
    <body>
        <form method="get" action="2.php">
            id :  <input type="text" name="id" />
            password :  <input type="text" name="password" />
            <input type="submit" />
        </form>
    </body>
    </html>

     

    GET&POST 방식

    <html>
    <body>
        <form method="POST" action="4.php">
            id :  <input type="text" name="id" />
            password :  <input type="text" name="password" />
            <input type="submit" />
        </form>
    </body>
    </html>

     

     

    조건문

    if

    <?php
    if(true){
        echo 'result : true';
    }
    ?>
    <?php
    if(false){
        echo 'result : true';
    }
    ?>

     

    else

    <?php
    if(true){
        echo 1;
    } else{
        echo 2;
    }
    ?>

    else문은 주어진 조건이 false일 때 실행될 로직이 위치

     

    else if

    <?php
    if (false){
        echo 1;
    } else if (true){
        echo 2;
    } else if (true){
        echo 3;
    } else {
        echo 4;
    }
    ?>
    
    // 2

    else if는 if나 else와는 다르게 여러 개 가능

    elseif의 모든 조건이 false라면 else가 실행

    else는 생략 가능

     

    논리 연산자

    and

    <?php
    if (true and true) {
        echo 1;
    }
    if (true and false) {
        echo 2;
    }
    if (false and true) {
        echo 3;
    }
    if (false and false) {
        echo 4;
    }
    ?>
    
    // 1

    and는 좌항과 우항이 모두 참(True)일 때 참이 됨

     

    or

    <?php
    if (true or true) {
        echo 1;
    }
    if (true or false) {
        echo 2;
    }
    if (false or true) {
        echo 3;
    }
    if (false or false) {
        echo 4;
    }
    ?>

    or는 좌우항 중에 하나라도 True라면 True가 됨

     

    !

    <?php
    if (!true and !true){
        echo 1;
    }
    if (!true and !false){
        echo 2;
    }
    if (!false and !true){
        echo 3;
    }
    if (!false and !false){
        echo 4;
    }
    ?>

    !(not)는 부정의 의미로, Boolean의 값을 역전시킴

     

     

    반복문

    while

    while(조건){
        코드
        코드
    }

    while 문은 조건이 참(true)이면 중괄호 구간의 구문을 반복적으로 실행

     

    for

    for(초기화; 반복 지속 여부; 반복 실행){
        코드;
    }

     

     

    반복문의 제어

    break

    반복을 중간에 중단

    <html>
    <body>
    <?php
    for($i = 0; $i < 10; $i++){
        if($i === 5){
            break;
        }
        echo "coding everybody{$i}<br />";
    }
     
    ?>
    </body>
    </html>
    
    // coding everybody 0
    // coding everybody 1
    // coding everybody 2
    // coding everybody 3
    // coding everybody 4

     

    continue

    실행을 즉시 중단하면서도 반복이 지속

    <html>
    <body>
    <?php
    for($i = 0; $i < 10; $i++){
        if($i === 5){
            continue;
        }
        echo "coding everybody{$i}<br />";
    }
     
    ?>
    </body>
    </html>
    
    // coding everybody 0
    // coding everybody 1
    // coding everybody 2
    // coding everybody 3
    // coding everybody 4
    // coding everybody 6
    // coding everybody 7
    // coding everybody 8
    // coding everybody 9

     

     

    함수

    함수(function)란 하나의 로직을 재실행 할 수 있도록 하는 것으로 코드의 재사용성을 높여줌

    function 함수명( [인자...[,인자]] ){
       코드
       return 반환값;
    }

     

    입력과 출력

    return

    함수 내에서 사용한 return은 return 뒤에 따라오는 값을 함수의 결과로 반환

     

    인자

    : 함수로 유입되는 입력 값

    어떤 값을 인자로 전달하느냐에 따라서 함수가 반환하는 값이나 메소드의 동작방법을 다르게 할 수 있음

     

     

    배열

    : 연관된 데이터를 모아서 관리하기 위해서 사용하는 데이터 타입

     

    배열의 생성

    <?php
    $member = ['egoing', 'k8805', 'sorialgi'];
    ?>

     

    배열의 사용

    <?php
    function get_members(){
        return ['egoing', 'k8805', 'sorialgi'];
    }
     
    $members = get_members();
     
    for($i = 0; $i < count($members); $i++){
        echo ucfirst($members[$i]).'<br />';
    }
     
    ?>
    
    // Egoing
    // K8805
    // Sorialgi

     

    배열의 제어

    배열의 크기

    <?php
    $l = [1, 2, 3, 4, 5];
    echo count($l);
    ?>

     

    배열의 조작

    • 추가

    array_push

    : 배열의 끝에 추가

    <?php
    $arr = ['a', 'b', 'c', 'd', 'e'];
    array_push($arr, 'f');
    var_dump($arr);
    ?>

     

    array_merge

    : 복수의 원소 배열의 끝에 추가

    <?php
    $li = ['a', 'b', 'c', 'd', 'e'];
    $li = array_merge($li, ['f','g']);
    var_dump($li);
    ?>

     

    array_unshift

    : 배열의 시작점에 원소 추가

    <?php
    $li = ['a', 'b', 'c', 'd', 'e'];
    array_unshift($li,'z');
    var_dump($li);
    ?>

     

    array_splice

    : 특정한 인덱스 뒤에 원소 추가

    <?php
    $li = ['a', 'b', 'c', 'd', 'e', 'z'];
    array_splice($li, 2, 0, 'B');
    var_dump($li);
    ?>

     

    • 제거

    array_shift

    : 배열의 첫번째 요소 제거

    <?php
    $li = ['a', 'b', 'c', 'd', 'e', 'z'];
    array_shift($li);
    var_dump($li);
    ?>

     

    array_pop

    : 배열의 마지막 요소 제거

    <?php
    $li = ['a', 'b', 'c', 'd', 'e', 'z'];
    array_pop($li);
    var_dump($li);

     

    정렬

    <?php
    $li = ['c','e','a','b','d'];
    sort($li);
    var_dump($li);
    ?>

     

     


    워게임

     

    1번) Webhacking.kr - Challenge 6

    풀이 : paka99.tistory.com/22

     

    Webhacking.kr - Challenge 6

    이런 창이 뜬다 view source를 누르니 이런 코드가 떴다! base64로 인코딩하는 과정을 20번 반복해야하는 것 같다 그리고 그 값에서 특수문자를 숫자로 바꿔야하는 것 같다! PHP Online Compiler를 통해 20번

    paka99.tistory.com

     

     

    2번) Webhacking.kr - Challenge 33

    풀이 : paka99.tistory.com/23

     

    Webhacking.kr - Challenge 33

    view source를 눌러보자 get 방식으로 "hehe"를 접근해보면 뭔가 알 수 있을 것 같다 ?get=hehe 로 접근해보면 Next 버튼이 뜬다 이걸 눌러보면 33-2로 넘어간다! 다시 POST 방식으로 hehe에 접근해보자 F1..

    paka99.tistory.com

     

    'Hacking > Web Hacking' 카테고리의 다른 글

    6주차 CSRF  (0) 2021.05.24
    5주차 XSS  (0) 2021.05.16
    3주차 JavaScript  (0) 2021.04.07
    2주차 HTML  (0) 2021.03.29
    1주차 Introduction of Webhacking  (0) 2021.03.23

    댓글