php 워드프레스 개발

IP 기준 사용자 위치(국가) 정보 가져오기

최혁재 2024. 8. 23. 14:27

웹사이트 방문자의 국가 정보를 기반으로 특정 페이지로 리디렉션하는 방법은 글로벌 사이트 운영 시 매우 유용한 기능입니다. 특히, 사용자의 위치에 따라 언어 또는 지역별 콘텐츠를 제공하고자 할 때 사용됩니다. PHP와 워드프레스에서 사용자의 IP 주소를 통해 국가 정보를 가져오고, 해당 국가에 따라 적절한 페이지로 리디렉션하는 방법을 소개합니다.

1. 사용 목적

이 코드는 웹사이트의 첫 방문자를 자동으로 국가별로 분류하고, 해당 국가에 맞는 페이지로 리디렉션합니다. 예를 들어, 한국에서 접속한 사용자는 한국어 페이지로, 일본에서 접속한 사용자는 일본어 페이지로, 그 외 지역에서는 영어 페이지로 리디렉션됩니다.

 

ip 로 요청보내면 사용자 국가와 정보들을 반환해주는 서비스가 많은데 대부분 유료고 가격이 비싸다
어떤곳은 한달에 80달러 (한국돈 약 107,000) 하는곳도 있었다 (하루 요청횟수 100K 기준)  진짜 개창렬

그래서 1분에 45회 요청까지 무료인 서비스를 이용하기로 했다 ip-api.com 
유료로 전환하면 달에 12달러에 무제한 요청이 가능하다 혜자 서비스다

2. 사용된 기술

이 코드는 다음 기술과 방법을 활용합니다.

  • GeoIP 서비스: ip-api.com API를 사용하여 사용자의 IP 주소를 기반으로 국가 정보를 가져옵니다.
  • PHP: IP 기반의 국가 정보를 추출하고, 이를 바탕으로 리디렉션 기능을 구현합니다.
  • 쿠키(Cookie): 리디렉션된 사용자에게는 다시 리디렉션이 일어나지 않도록 쿠키를 설정하여 한 번만 리디렉션이 발생하도록 합니다.
  • 워드프레스 액션 훅(Action Hook): template_redirect 훅을 활용하여 페이지 로드 시 자동으로 리디렉션을 수행합니다.

3. 코드 설명

 

4. 코드 분석

  1. 초기 조건 확인: 이 코드의 첫 번째 조건은 현재 페이지가 홈페이지('/')인지 확인하는 것입니다. 이로 인해 사용자는 홈페이지를 방문할 때만 리디렉션되며, 이후 다른 페이지에서는 리디렉션이 발생하지 않습니다.
  2. 쿠키 확인: 리디렉션된 이후에는 동일한 사용자가 다시 리디렉션되지 않도록 country_redirect라는 이름의 쿠키가 설정됩니다. 이 쿠키는 24시간 동안 유지됩니다.
  3. 사용자 IP를 기반으로 국가 정보 가져오기: 사용자의 IP 주소를 가져와 ip-api.com API를 호출하여 국가 정보를 가져옵니다. API 호출이 실패하면 함수는 중단됩니다.
  4. 국가 코드에 따른 리디렉션: 가져온 국가 코드에 따라 한국(KR), 일본(JP), 그 외 국가로 구분하여 각각의 페이지로 리디렉션됩니다. 리디렉션 후 exit를 통해 추가 코드 실행을 막습니다.
  5. 워드프레스 액션 훅 사용: 이 코드는 워드프레스 사이트에서 실행되도록 template_redirect 훅에 추가됩니다. 이 훅은 테마가 로드된 후, 페이지가 렌더링되기 전에 실행되므로, 사용자의 위치를 감지해 적절히 리디렉션할 수 있습니다.

5. 결론

이와 같이 사용자의 IP 주소를 기반으로 국가 정보를 가져오고, 그에 따라 적절한 페이지로 리디렉션하는 기능은 글로벌 웹사이트 운영 시 필수적인 기능 중 하나입니다. 특히 워드프레스에서는 간단하게 API를 활용하고 쿠키를 설정해 사용자에게 원활한 경험을 제공할 수 있습니다. 이 코드를 활용해 여러분의 사이트 방문자에게 더 맞춤화된 경험을 제공해보세요.

6. 추가 팁

  • API 요청 횟수 제한이 있으므로, 과도한 요청을 방지하기 위해 캐싱 시스템을 도입하거나, IP 기반 요청을 줄일 수 있는 전략이 필요할 수 있습니다.
  • 더 정확한 위치 정보가 필요하다면, 유료 GeoIP 서비스로 업그레이드하는 것도 고려할 만합니다.