Frage

es eine einfache Möglichkeit, dies in PHP zu tun. Ich möchte sicherstellen, dass nur Web-Anfragen aus bestimmten Ländern sind in der Lage meine Website zugreifen zu können.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Verwenden Sie eine IP-Geolocation-Datenbank (einige frei sind) und $ _SERVER [ "REMOTE_ADDR"] des Besuchers IP-Adresse zu erhalten.

http://www.maxmind.com/app/geolitecity ist ein freies (weniger genau) Version eines kommerziellen ein.

Andere Tipps

Wie Gilles, habe ich MaxMinds GeoIP Sachen für diese in der Vergangenheit - konfiguriert mit der PECL-Erweiterung für die Geschwindigkeit. Es funktioniert recht gut, aber ...

Die Voraussetzung für diese Art der Sache, neigt dazu, von jemandem zu kommen, der nicht versteht, dass es unmöglich ist, zuverlässig einen Besucher Lage auf diese Weise zu bestimmen. Es ist sehr wichtig, dass die Person fragen, für sie ermutigt werden, zu verstehen, dass es fast nutzlos. Typische Sache, die mit Geo-Location in diesem Fall:

  
    
      

Client: Ich möchte in der Lage sein, Inhalte zu beschränken, indem IP
      Dev: Sie wissen, dass das unmöglich ist, zuverlässig zu tun
?       Auftraggeber: Ah ja, aber diese Unternehmen sagen, dass sie mir etwas verkaufen wird, die es tun
      Dev: Ja, aber es ist nicht genau und ist leicht zu umgehen und zeigt in der Regel ein schlechtes Geschäftsmodell für Internet-basierte Inhalte
      Kunde: Können Sie es tun
?       Dev: Was auch immer ...

    
  

... Sechs Monate später ...

  
    
      

Client: Einige meiner Besucher haben sich beschwert, sie können nicht meine Inhalte und einige schlechte Menschen sehen, die nicht sehen, sollte es möglich gewesen
      Dev: / me ohrfeigt Kopf

    
  

Es ist nur ein Schritt von dort auf "Ich kann es haben, so dass, wenn ein Benutzer direkt in ihrem Browser klickt ein kleines Zeichen erscheint sagen ‚Diese Bilder unterliegen dem Urheberrecht Idiot-Inc.‘? "

Sorry, offensichtlich in einer zynischen Stimmung heute!

Sowohl der Antworten (Geolocation, User-Agent) arbeiten, sondern kann besiegt werden. Jemand kann einen Proxy-Server verwenden, oder deren User-Agent ändern. Firefox hat auch ein Plugin für diesen Zweck.

Wenn Sie die Antwort von Ben Dowling verwenden und der Code nicht funktioniert, versuchen Sie dies:

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

statt:

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

Es gibt auch eine Birne Paket

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

Es gibt bestimmte Klassen, die das Gebietsschema des User-Agent erkennen kann. Versuchen Sie so etwas. Zend Framework hat eine große Klasse für dieses Zend_Locale

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top