-
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 인터프리터에 지시한다.