2008-10-03 23 views
10

? Existe una manera fácil de hacerlo en PHP. Quiero asegurarme de que solo las solicitudes web de ciertos países puedan acceder a mi sitio web.¿Cómo puedo limitar qué países pueden ver mi sitio web (PHP)

¿Alguna idea?

+3

No voy a votar abajo la pregunta (estoy un poco interesado desde una perspectiva técnica), pero odio cuando los sitios web lo hacen. Siempre he podido evitarlo de todos modos mediante el uso de la derecha apoderado. – wcm

+0

Los proxies también se pueden bloquear y recuerde que podría necesitar bloquear el acceso por razones legales. En muchos casos, es ilegal que las empresas basadas en los EE. UU. Tengan sus sitios web disponibles para algunos países que están en una lista negra oficial (Irán, por ejemplo). – Gilles

+1

Y si viviera en esos países, tampoco me gustaría. Simplemente no me gustan las cosas que suenan a censura. De hecho, voté la pregunta (y su respuesta) porque entiendo que hay razones legítimas para hacerlo. Simplemente no me tiene que gustar. – wcm

Respuesta

13

Utilice una base de datos de geolocalización de IP (algunos son gratuitos) y $ _SERVER ["REMOTE_ADDR"] para obtener la dirección IP del visitante.

http://www.maxmind.com/app/geolitecity es una versión gratuita (menos precisa) de una versión comercial.

-2

Existen ciertas clases que pueden detectar la configuración regional del agente de usuario. Prueba algo así. Zend Framework tiene una gran clase para este Zend_Locale

+0

¿No dice "Configuración regional" cómo un cliente no está configurado donde está? ¿Alguien podría haber configurado su configuración regional en "EN_US" pero estar en Australia? –

+0

Sí, exactamente, la configuración regional es el idioma del navegador, nada que ver con la ubicación. – Gilles

+0

Pero podría filtrar personas que no te gustan. Por ejemplo, estoy cerrando las visitas rusas e indias a mi sitio web por Lang. En su mayor parte, funciona. – flaab

4

Ambas respuestas (geolocalización, agente de usuario) funcionarán pero pueden ser derrotadas. Alguien puede usar un servidor proxy o cambiar su agente de usuario. Firefox incluso tiene un complemento para ese propósito.

+0

Los proxies se pueden bloquear con un bajo nivel de protocolo. Hulu.com hace precisamente eso. Los agentes de usuario no tienen nada que ver con el problema aquí. – Gilles

+0

¿Cómo vas a bloquear de manera confiable todos los proxies? La única solución confiable es la lista negra, pero aparecen nuevos proxies todo el tiempo. – ceejayoz

+0

Los detectan en un * bajo nivel de protocolo *, sin usar una lista negra. No recuerdo los detalles, solo recuerdo haber leído acerca de una técnica como la que usa hulu, eso es todo. – Gilles

1

También hay un paquete de pera

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

+0

Parece que está consultando un sitio web para obtener la información todo el tiempo? Sin embargo, los datos pueden ser más precisos que la base de datos gratuita que he mencionado. – Gilles

9

como Gilles, he usado cosas GeoIP de MaxMind para esto en el pasado - configurado con la extensión PECL para la velocidad. Funciona razonablemente bien, pero ...

El requisito para este tipo de cosas suele provenir de alguien que no comprende que es imposible determinar de forma fiable la ubicación de un visitante de esta manera. Es muy importante que la persona que lo solicite se anime a entender que es casi inútil. Lo típico que ocurre con la geolocalización en esto:

Cliente: Quiero ser capaz de restringir el contenido a través de IP
Dev: Usted sabe que eso es imposible hacerlo de forma fiable?
Cliente: Ah sí, pero esta empresa dicen que me van a vender algo que lo hará
Dev: Sí, pero no es preciso y es fácil de eludir y por lo general indica un modelo de negocio pobres de contenido basado en Internet
Cliente : ¿Puedes hacerlo?
Dev: Lo que sea ...

... Seis meses más tarde ...

Cliente: Algunos de mis visitantes se han quejado que no pueden ver mi contenido y algunas personas malas que no deberían verlo ¡han podido!
Dev:/me golpea la cabeza

Es sólo un paso de allí a "puedo tener de modo que cuando un usuario hace clic derecho en su navegador una pequeña señal aparece diciendo ' estas imágenes son copyright Idiot Inc. '?! "

Lo sentimos, obviamente, de un humor cínico hoy

+1

Recuerde que podría estar * legalmente obligado * a bloquear algunos países. Trabajé para una gran corporación estadounidense que legalmente tenía que bloquear el acceso de una lista negra de países emitida por el gobierno. El incumplimiento podría haber llevado a la gente a la cárcel. No puedo hablar sobre los detalles, pero esto fue muy real. – Gilles

+0

Sí, en el caso que me pidieron que lo use, ha sido parte de un acuerdo legal entre un proveedor de contenido y un editor. Pero ese es mi punto de vista: este es un pensamiento defectuoso, que obliga legalmente a lo imposible. ¡Todavía implemente, pero retroalimente la realidad de la situación! –

+0

Ah, y en ese sentido, he visto personas que "requieren legalmente" el mensaje de copyright con el botón derecho también. Mendiga la creencia! –

2

si utiliza la respuesta de Ben Dowling y el código no funciona, intente esto:

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

en lugar de:

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