웹 개발을 하다 보면 URL을 통해 데이터를 전달하는 경우가 많다. 특히, GET 방식으로 데이터를 넘길 때 여러 개의 값을 콤마(,)로 구분하여 전달해야 하는 경우가 있다. 그러나 이를 제대로 처리하지 않으면, 잘못된 데이터가 전달되거나 보안 이슈가 발생할 수 있다.
이번 글에서는 JavaScript에서 URL을 생성하여 PHP로 데이터를 안전하게 전달하고, PHP에서 이를 적절히 처리하는 방법을 소개한다.
GET 방식으로 데이터 전달 시 문제점
JavaScript에서 window.location.href 또는 XMLHttpRequest를 이용해 데이터를 서버로 보낼 때, 일반적으로 다음과 같은 형식을 사용한다.
var groupCode = "2223,323";
var encodedGroupCode = encodeURIComponent(groupCode);
window.location.href = "view_requestACIgroup.php?groupCode=" + encodedGroupCode;
위 코드에서 groupCode 값은 '2223,323'처럼 콤마(,)로 구분된 문자열이다. 하지만 이 값을 URL에 그대로 넣으면 제대로 동작하지 않을 수 있다. 이유는 다음과 같다:
- URL에서 ,(콤마)는 특수문자로 간주될 수 있어, 브라우저가 예상치 못한 방식으로 처리할 수 있다.
- PHP에서 $_GET['groupCode']로 값을 받을 때, 올바르게 해석되지 않을 가능성이 있다.
이를 해결하려면, URL 인코딩을 적용해야 한다.
JavaScript에서 URL 인코딩 적용하기
JavaScript에서 encodeURIComponent()를 사용하면, URL에서 안전하게 사용할 수 있도록 특수문자를 변환할 수 있다.
var groupCode = "2223,323";
var encodedGroupCode = encodeURIComponent(groupCode);
window.location.href = "view_requestACIgroup.php?groupCode=" + encodedGroupCode;
이렇게 하면, groupCode=2223%2C323 형태로 변환되어 서버에 안전하게 전달된다. (%2C는 콤마 ,의 URL 인코딩 값이다.)
PHP에서 GET 데이터 처리하기
이제 PHP에서 안전하게 데이터를 받아 처리해보자. $_GET 또는 $_REQUEST를 사용하여 groupCode 값을 가져올 수 있다.
<?php
$groupCode = isset($_REQUEST['groupCode']) ? $_REQUEST['groupCode'] : '';
// URL 디코딩
$groupCode = urldecode($groupCode);
// 콤마(,)를 기준으로 배열 변환
$groupCodeArray = explode(',', $groupCode);
// 디버깅 출력
print_r($groupCodeArray);
?>
PHP 코드 설명
- $_REQUEST['groupCode']로 데이터 가져오기
- $_GET 또는 $_REQUEST를 사용해 전달된 값을 받아온다.
- urldecode($groupCode) 적용
- JavaScript에서 encodeURIComponent()를 사용해 전달했기 때문에, 이를 다시 원래 문자열로 변환한다.
- explode(',', $groupCode)를 사용해 배열로 변환
- explode() 함수는 콤마(,)를 기준으로 문자열을 나누어 배열로 저장한다.
결과 예시
입력: groupCode=2223%2C323
PHP에서 처리된 결과:
Array (
[0] => 2223
[1] => 323
)
이제 groupCodeArray를 활용하여 필요한 작업을 수행할 수 있다.
추가 활용 예제
배열의 데이터를 활용하여 루프를 돌며 처리할 수도 있다.
if (!empty($groupCodeArray)) {
foreach ($groupCodeArray as $code) {
echo "코드: " . trim($code) . "<br>";
}
}
위 코드는 배열 내 모든 요소를 순회하며 trim()을 사용해 공백을 제거한 후 출력한다.
실행 결과
코드: 2223
코드: 323
결론
GET 방식으로 데이터를 전달할 때, 콤마(,)가 포함된 문자열을 안전하게 다루기 위해 JavaScript에서 encodeURIComponent()를 적용하고, PHP에서 urldecode() 후 explode()로 배열 변환하는 방법을 소개했다.
이 방법을 사용하면, 다중 값 데이터를 안전하게 URL을 통해 전달하고, 서버에서 올바르게 처리할 수 있다. 실무에서도 활용도가 높으니 꼭 익혀두자!
'IT tech Coding > php' 카테고리의 다른 글
PHP에서 특정 단어가 포함되었는지 확인하는 방법 (0) | 2025.03.04 |
---|---|
계층형 카테고리 관리: MySQL과 PHP로 트리 구조 만들기 (0) | 2025.02.26 |
숫자 입력에서 콤마(,) 제거하는 방법 - JavaScript와 PHP 코드 예제 (0) | 2025.02.10 |
PHP에서 브라켓 품목코드 기반 재고 조회 기능 구현하기 (0) | 2025.02.06 |
PHP에서 마지막 요소에 <br>을 넣지 않는 방법 (0) | 2025.02.05 |