ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP GET 데이터 수신
    카테고리 없음 2023. 9. 14. 09:00

    1. GET 방식이란?

    http://domain.url?name1=value1&name2=value2

    위의 형식으로 URL에 데이터를 담아서 보내는 것을 말한다.

    즉 key 와 value가 함께 전달된다.

     

    $variable = $_GET['key']

    이 코드로 GET 방식 데이터를 변수에 저장해서 사용할 수 있다.

     

    2. GET으로 데이터를 받을 시 유의할 점

      2-1 . 데이터 누락 여부 확인

    isset 함수 사용
    $variable = isset($_GET['key']) ? $_GET['city'] : ''
    
    널 병합 연산자 사용
    $variable = $_GET['key'] ?? $_GET['city'] : ''

    키가 존재하면 ture 없다면 false를 반환하는 isset() 함수와 3항 연산자를 활용해서 누락 여부를 확인할 수 있다.

    널 병합 연산자는 이를 간단하게 축약한 PHP7 기능이며, 데이터가 없으면 ''을 변수에 저장한다.

     

    데이터가 누락되었다면, 오류 페이지를 표시할 수 있다

    $valid = array_key_exists($variable, $variables);
    
    if(!$valid) {
    	http_response_code(404);
        header('Location : URL 또는 .php 파일');
        exit;
    }

     

      2-2 . 결과 이스케이핑

    -> 서버에 제공된 값이 페이지에 표시될 때, 악의적으로 악성스크립트를 실행시킬 수 없도록 이 값을 이스케이핑 해야한다.

    태그와 속성, 엔티티를 생성하는 요소들이 여기에 해당된다 

    태그 < >

    속성 값 "  '

    엔티티 &

    따라서 위의 5가지 문자들은 엔티티 이름이나 엔티티 번호로 변경해야한다

     

    htmlspecialchars($text [, $flag][, $encoding][, double_encode]);

    위는 이스케이핑을 도와주는 함수이다.

    $text : 이스케이핑 하려는 텍스트

    $flag : 인코딩 되는 문자를 제어하는 옵션 ( 일반적으로 사용하는 옵션들이 명령어로 정리되어있다 )

    $encoding : 문자열에서 사용되는 인코딩 스킴

    $double_encode : HTML 엔티티는 앰퍼샌드(&) 로 실행하기 때문에, 문자열에 엔티티가 포함되어있으면 앰퍼샌드가 인코딩 되어 예약문자가 아닌 엔티티가 표시되게 한다. 이 매개변수에 false를 사용하면 문자열의 엔티티를 인코딩하지 않도록 PHP 인터프리터에 지시한다.

Designed by Tistory.