2008-10-03 24 views
10

Có cách dễ dàng để thực hiện việc này trong PHP. Tôi muốn đảm bảo rằng chỉ yêu cầu web từ một số quốc gia nhất định mới có thể truy cập trang web của tôi.Làm cách nào để giới hạn những quốc gia nào có thể xem trang web của tôi (PHP)

Bất kỳ ý tưởng nào?

+3

Tôi sẽ không bỏ phiếu cho câu hỏi (Tôi rất quan tâm đến góc độ kỹ thuật), nhưng tôi ghét nó khi trang web làm điều đó. Tôi vẫn luôn có thể sử dụng nó bằng cách sử dụng quyền Ủy quyền. – wcm

+0

Proxy cũng có thể bị chặn và hãy nhớ rằng anh ấy có thể cần chặn quyền truy cập vì lý do pháp lý. Trong nhiều trường hợp, các doanh nghiệp có trụ sở tại Hoa Kỳ bất hợp pháp phải cung cấp trang web của họ cho một số quốc gia nằm trong danh sách đen chính thức (ví dụ: Iran). – Gilles

+1

Và nếu tôi sống ở những quốc gia đó, tôi cũng sẽ không thích nó. Tôi chỉ không thích những thứ không kiểm duyệt. Tôi thực sự đã bỏ phiếu cho câu hỏi (và câu trả lời của bạn) bởi vì tôi hiểu có lý do chính đáng để làm điều này. Tôi không cần phải thích nó. – wcm

Trả lời

13

Sử dụng cơ sở dữ liệu vị trí địa lý IP (một số miễn phí) và $ _SERVER ["REMOTE_ADDR"] để nhận địa chỉ IP của khách truy cập.

http://www.maxmind.com/app/geolitecity là phiên bản miễn phí (ít chính xác) của phiên bản thương mại.

-2

Có một số lớp học có thể phát hiện ngôn ngữ của tác nhân người dùng. Hãy thử một cái gì đó như thế. Zend Framework có một lớp học tuyệt vời cho Zend_Locale

+0

Không phải là "Miền địa phương" chỉ cho biết cách khách hàng được định cấu hình không ở đâu? Không ai có thể đặt Locale của họ thành "en_" nhưng ở Úc? –

+0

Đúng vậy, ngôn ngữ là ngôn ngữ của trình duyệt, không có gì liên quan đến vị trí. – Gilles

+0

Nhưng nó có thể lọc ra những người bạn không thích. Ví dụ, tôi tắt khách truy cập tiếng Nga và Ấn Độ vào trang web của tôi bằng ngôn ngữ. Đối với hầu hết các phần, nó hoạt động. – flaab

4

Cả hai câu trả lời (vị trí địa lý, tác nhân người dùng) sẽ hoạt động nhưng có thể bị đánh bại. Ai đó có thể sử dụng máy chủ proxy hoặc thay đổi tác nhân người dùng của họ. Firefox thậm chí còn có một plugin cho mục đích đó.

+0

Proxy có thể bị chặn ở cấp độ giao thức thấp. Hulu.com thực hiện điều đó. Tác nhân người dùng không liên quan gì đến vấn đề ở đây. – Gilles

+0

Bạn sẽ chặn chắc chắn tất cả các proxy như thế nào? Giải pháp đáng tin cậy duy nhất là danh sách đen, nhưng các proxy mới luôn bật lên. – ceejayoz

+0

Chúng phát hiện thấy chúng ở mức * giao thức thấp *, không sử dụng danh sách đen. Tôi không nhớ các chi tiết cụ thể, tôi chỉ nhớ đọc về một kỹ thuật được sử dụng bởi hulu, đó là tất cả. – Gilles

1

Ngoài ra còn có một gói lê

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

+0

Có vẻ như nó đang truy vấn một trang web để nhận thông tin mỗi lần? Dữ liệu có thể chính xác hơn cơ sở dữ liệu miễn phí mà tôi đã đề cập. – Gilles

9

Giống như Gilles, tôi đã sử dụng thứ GeoIP MaxMind của cho điều này trong quá khứ - cấu hình với phần mở rộng PECL cho tốc độ. Nó hoạt động khá tốt, nhưng ...

Yêu cầu đối với loại điều này có xu hướng đến từ ai đó không hiểu rằng không thể xác định được vị trí của khách truy cập một cách đáng tin cậy theo cách này. Điều quan trọng là người yêu cầu được khuyến khích hiểu rằng đó là gần như vô ích. điều điển hình mà xảy ra với vị trí địa lý trong việc này:

Chủ đầu tư: Tôi muốn có thể để hạn chế nội dung bởi IP
Dev: Bạn biết rằng đó là không thể làm cách đáng tin cậy?
Khách hàng: Ah vâng, nhưng công ty này nói họ sẽ bán cho tôi thứ gì đó sẽ làm điều đó
Dev: Có nhưng không chính xác và dễ phá vỡ và thường chỉ ra mô hình kinh doanh kém cho nội dung dựa trên internet
Khách hàng : Bạn có thể làm điều đó?
Dev: Bất cứ điều gì ...

... Sáu tháng sau ...

Chủ đầu tư: Một số lượng khách truy cập của tôi đã phàn nàn họ không thể xem nội dung của tôi và một số người xấu không nên nhìn thấy nó!
Dev:/tôi tát đầu

Nó chỉ có một bước trên từ đó đến "Tôi có thể có nó để khi người dùng nhấp chuột phải vào trình duyệt của họ là một dấu hiệu nhỏ bật lên nói ' những hình ảnh này là bản quyền Idiot Inc. '?! "

Xin lỗi, rõ ràng là trong một tâm trạng hoài nghi ngày nay

+1

Hãy nhớ rằng anh ta có thể bị * ràng buộc về mặt pháp lý * để chặn một số quốc gia. Tôi đã làm việc cho một công ty lớn ở Mỹ, những người hợp pháp đã chặn quyền truy cập từ danh sách đen của các quốc gia do chính phủ cấp. Việc không tuân thủ có thể khiến những người bị đổ bộ vào tù. Tôi không thể nói về các chi tiết cụ thể nhưng điều này rất thực tế. – Gilles

+0

Aye, trong trường hợp tôi đã được yêu cầu sử dụng nó đã là một phần của thỏa thuận pháp lý giữa nhà cung cấp nội dung và nhà xuất bản. Nhưng đó là loại quan điểm của tôi - đây là suy nghĩ thiếu sót, nghĩa vụ pháp lý là không thể. Vẫn thực hiện, nhưng làm phản hồi thực tế của tình hình! –

+0

Ồ, và trên ghi chú đó, tôi đã thấy mọi người "yêu cầu về mặt pháp lý" thông báo bản quyền nhấp chuột phải. Nó ăn xin niềm tin! –

2

nếu bạn sử dụng câu trả lời của Ben Dowling và mã không hoạt động, hãy thử này:

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

thay vì:

if(!in_array($country, $allowed_countries)) { 
Các vấn đề liên quan