2008-10-03 3 views
10

PHP에서이를 쉽게 수행 할 수있는 방법이 있습니다. 특정 국가의 웹 요청 만 내 웹 사이트에 액세스 할 수 있는지 확인하고 싶습니다.내 웹 사이트를 볼 수있는 국가를 제한하는 방법 (PHP)

아이디어가 있으십니까?

+3

나는 기술적 인 관점에서 보면 좀 흥미 롭다.하지만 웹 사이트가 그렇게 할 때 나는 그것을 싫어한다. 나는 항상 어쨌든 권리를 사용하여 주위를 돌아 다닐 수 있었다. 대리. – wcm

+0

프록시는 차단 될 수 있으며 법적인 이유로 액세스를 차단해야 할 수도 있음을 기억하십시오. 대부분의 경우 미국에 기반을 둔 비즈니스가 공식 블랙리스트에있는 일부 국가 (예 :이란)에서 웹 사이트를 사용할 수있는 것은 불법입니다. – Gilles

+1

그리고 만약 내가 그 나라에 살았다면 나는 그것을 싫어할 것입니다. 나는 검열을 때리는 것들을 좋아하지 않는다. 나는 이것을하기위한 정당한 이유가 있음을 알고 있기 때문에 사실 질문 (그리고 당신의 대답)에 투표했습니다. 나는 그것을 좋아할 필요가 없다. – wcm

답변

13

IP 지오 데이터베이스 (일부는 무료)와 $ _SERVER [ "REMOTE_ADDR"]를 사용하여 방문자의 IP 주소를 가져옵니다.

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

-2

사용자 에이전트의 로케일을 탐지 할 수있는 특정 클래스가 있습니다. 그런 것을 시도해보십시오. 젠드 프레임 워크는이 Zend_Locale을위한 훌륭한 수업을 가지고 있습니다.

+0

"로캘"은 클라이언트의 위치가 설정되지 않은 방법을 알려줍니다. 누군가 로케일을 "en_US"로 설정했지만 호주에 설정할 수 없었습니까? –

+0

네, 정확하게 로케일은 브라우저의 언어이며, 위치와 관련이 없습니다. – Gilles

+0

하지만 마음에 들지 않는 사람들은 걸러 낼 수 있습니다. 예를 들어, 나는 랭으로 나의 웹 사이트에 러시아어와 인도인 방문자를 폐쇄하고있다. 대부분의 경우 작동합니다. – flaab

4

답변 (geolocation, 사용자 에이전트)은 모두 작동하지만 실패 할 수 있습니다. 누군가는 프록시 서버를 사용하거나 사용자 에이전트를 변경할 수 있습니다. 파이어 폭스에는 그 목적을위한 플러그인이있다. 속도에 대한 PECL 확장으로 구성 -

+0

프록시는 낮은 프로토콜 수준에서 차단 될 수 있습니다. Hulu.com은 그 일을합니다. 사용자 에이전트는이 문제와 아무런 관련이 없습니다. – Gilles

+0

어떻게 모든 프록시를 안정적으로 차단 하시겠습니까? 유일하게 신뢰할 수있는 솔루션은 블랙리스트이지만, 항상 새로운 프록시가 등장합니다. – ceejayoz

+0

블랙리스트를 사용하지 않고 * 낮은 프로토콜 수준 *에서이를 탐지합니다. 세부 사항을 기억하지 못합니다. hulu에서 사용되는 기술에 대한 읽기만 기억합니다. 그게 전부입니다. – Gilles

1
+0

매번 정보를 얻기 위해 웹 사이트를 쿼리하는 것 같습니다. 데이터는 앞서 언급 한 무료 데이터베이스보다 정확할 수도 있습니다. – Gilles

9

, 나는 과거에 이것에 대한 MaxMind의 GeoIP가 물건을 사용했습니다 배 패키지가있다. 그것은 합리적으로 잘 작동하지만 ...

이러한 종류의 요구 사항은 이런 식으로 방문자 위치를 안정적으로 결정한다는 것은 이해가되지 않는 사람에게서 오는 경향이 있습니다. 거의 쓸모 없다는 것을 이해하도록 격려받는 사람은 매우 중요합니다.

클라이언트 : 나는 IP에 의해
데브 내용을 제한 할 수 있도록하려면 : 당신은 안정적으로 할 불가능하다는 것을 알고이의 지리적 위치에 발생하는 일반적인 일이?
클라이언트 : 아 그래,하지만이 회사는 나에게 그것을
데브을 할 것입니다 무언가를 판매 할 말 : 네하지만 정확하지 않고 우회하기 쉽고 일반적으로 인터넷 기반 콘텐츠
클라이언트에 대한 빈약 한 비즈니스 모델을 나타냅니다 : 당신은 그것을 할 수 있습니다?
데브 : 무엇이든 ... 6 개월 후

...

클라이언트

: 내 방문자 중 일부는 불평 한 그들은 할 수 없습니다 내 콘텐츠 및 볼 수 없어야 할 악의적 인 사람들을 볼 수있었습니다!
데브이 : 약간의 기호 ' 말 팝업 사용자가 바로 자신의 브라우저에서 클릭 할 때 있도록 ME/그것은 거기에서 으로 만 한 단계의 머리를

때려 "나는 그것을 할 수 있습니다 이 이미지는 Idiot Inc.의 저작권입니다.?! 당신이 벤 다울 링의 대답을 사용하여 코드가 작동하지 않는 경우 "

죄송합니다, 분명 냉소적 인 분위기에서 오늘

+1

일부 국가를 차단하기 위해 * 법적으로 구속력이있을 수 있음을 기억하십시오. 나는 합법적으로 정부 발행 블랙리스트 국가로부터의 액세스를 차단해야만하는 큰 규모의 미국 법인에서 일했습니다. 이를 준수하지 않으면 사람들이 감옥에 떨어질 수 있습니다. 세부 사항에 대해서는 말할 수 없지만 이것은 매우 현실적이었습니다. – Gilles

+0

예, 사용 요청을받은 경우 콘텐츠 제공 업체와 게시자 간의 법적 계약의 일부입니다. 그러나 그것은 저의 요점입니다. 이것은 불가능한 법적 의무를 지닌 결함있는 사고입니다. 여전히 구현하지만, 상황의 현실을 피드백하십시오! –

+0

오, 그리고 그 메모에, 나는 사람들이 오른쪽 클릭 저작권 메시지를 "합법적으로 요구"하는 것을 보았습니다. 그것은 믿음을 거지! –

2

,이 시도 :

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

대신을 :

if(!in_array($country, $allowed_countries)) { 
관련 문제