Pregunta

Allí hay una manera fácil de hacer esto en PHP. Quiero asegurarme de que solo las solicitudes web de ciertos países puedan acceder a mi sitio web.

¿Alguna idea?

¿Fue útil?

Solución

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

http://www.maxmind.com/app/geolitecity es gratis (menos versión precisa de un comercial.

Otros consejos

Al igual que Gilles, he usado cosas GeoIP de MaxMind para esto en el pasado, configuradas con la extensión PECL para la velocidad. Funciona razonablemente bien, pero ...

El requisito para este tipo de cosas tiende a provenir de alguien que no entiende que es imposible determinar de manera confiable la ubicación de los visitantes de esta manera. Es muy importante alentar a la persona que lo solicita a comprender que es casi inútil. Lo típico que sucede con la ubicación geográfica en esto:

  
    
      

Cliente: deseo poder restringir el contenido por IP
      Dev: ¿Sabes que eso es imposible de hacer de manera confiable?
      Cliente: Ah sí, pero esta compañía dice que me venderán 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 deficiente para contenido basado en Internet
      Cliente: ¿Puedes hacerlo?
      Dev: Lo que sea ...

    
  

... Seis meses después ...

  
    
      

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

    
  

Es solo un paso desde allí hasta " ¿puedo tenerlo para que cuando un usuario haga clic derecho en su navegador aparezca un pequeño cartel que dice 'estas imágenes son Copyright Idiot Inc'? ? "

Perdón, ¡obviamente en un estado de ánimo cínico hoy!

Las dos 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.

si usa 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)) {

También hay un paquete de pera

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top