Wie beschränke ich, welche Länder kann meine Webseite (PHP) ansehen
-
03-07-2019 - |
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?
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
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