내 웹 사이트 (PHP)를 볼 수있는 국가를 어떻게 제한합니까?

StackOverflow https://stackoverflow.com/questions/167106

  •  03-07-2019
  •  | 
  •  

문제

PHP 에서이 작업을 수행하는 쉬운 방법이 있습니다. 특정 국가의 웹 요청 만 내 웹 사이트에 액세스 할 수 있는지 확인하고 싶습니다.

어떤 아이디어?

도움이 되었습니까?

해결책

방문자의 IP 주소를 얻으려면 ip geolocation 데이터베이스 (일부는 무료)와 $ _server [ "remote_addr"]를 사용하십시오.

http://www.maxmind.com/app/geolitecity 상업용 버전의 무료 (정확한) 버전입니다.

다른 팁

Gilles와 마찬가지로 과거에 Maxmind의 GEOIP 제품을 사용했습니다. PECL 확장 속도로 구성되었습니다. 합리적으로 잘 작동하지만 ...

이런 종류의 일에 대한 요구 사항은 이런 식으로 방문자 위치를 안정적으로 결정하는 것이 불가능하다는 것을 이해하지 못하는 사람에게서 나오는 경향이 있습니다. 그것을 요구하는 사람이 그것이 거의 쓸모없는. 이것에서 지리적 위치에서 발생하는 전형적인 일 :

클라이언트 : IP로 콘텐츠를 제한 할 수 있기를 원합니다.
DEV : 당신은 그것이 안정적으로 불가능하다는 것을 알고 있습니까?
클라이언트 : 아, 그렇습니다.하지만이 회사는 나에게 할 일을 팔 것이라고 말합니다.
DEV : 그렇습니다. 그러나 정확하지 않으며 우회하기 쉽고 일반적으로 인터넷 기반 콘텐츠의 비즈니스 모델이 좋지 않습니다.
클라이언트 : 할 수 있습니까?
Dev : 무엇이든 ...

... 6 개월 후 ...

클라이언트 : 내 방문객 중 일부는 내 콘텐츠를 볼 수 없다고 불평하고 있으며 볼 수 없었던 나쁜 사람들은 할 수있었습니다!
Dev : /Me가 머리를 때렸다

거기에서 단 한 걸음에 불과합니다 "사용자가 브라우저에서 마우스 오른쪽 버튼을 클릭하면 작은 부호가 나타나도록 할 수 있습니까? '이 이미지는 Copyright Idiot Inc.'입니다. '?"

죄송합니다.

두 답변 (지리적 위치, 사용자 에이전트)은 모두 작동하지만 패배 할 수 있습니다. 누군가 프록시 서버를 사용하거나 사용자 에이전트를 변경할 수 있습니다. Firefox에는 그 목적을위한 플러그인도 있습니다.

Ben Dowling의 답변을 사용하고 코드가 작동하지 않으면 다음을 시도하십시오.

if (!in_array(substr($country, 0, 2), $allowed_countries)) {

대신에:

if(!in_array($country, $allowed_countries)) {

배 패키지도 있습니다

http://pear.php.net/package/net_geo

사용자 에이전트의 로케일을 감지 할 수있는 특정 클래스가 있습니다. 그런 것을 시도하십시오. Zend Framework는이 Zend_locale에 대한 훌륭한 클래스를 가지고 있습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top