Chcę, aby odwiedzający kraj był dostępny za pośrednictwem adresu IP ... Teraz korzystam z tego ( http://api.hostip.info/country.php?ip= ......)
Oto mój kod:
<?php
if (isset($_SERVER['HTTP_CLIENT_IP']))
{
$real_ip_adress = $_SERVER['HTTP_CLIENT_IP'];
}
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$real_ip_adress = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$real_ip_adress = $_SERVER['REMOTE_ADDR'];
}
$cip = $real_ip_adress;
$iptolocation = 'http://api.hostip.info/country.php?ip=' . $cip;
$creatorlocation = file_get_contents($iptolocation);
?>
Cóż, działa poprawnie, ale chodzi o to, że zwraca kod kraju jak USA lub Kalifornia, a nie całą nazwę kraju jak Stany Zjednoczone czy Kanada.
Czy jest jakaś dobra alternatywa dla hostip.info?
Wiem, że mogę po prostu napisać kod, który ostatecznie przekształci te dwie litery w nazwę całego kraju, ale jestem zbyt leniwy, aby napisać kod zawierający wszystkie kraje ...
PS: Z jakiegoś powodu nie chcę używać żadnego gotowego pliku CSV ani żadnego kodu, który pobierze te informacje, coś w rodzaju gotowego kodu ip2country i CSV.
php
geolocation
ip
country-codes
Alex C.
źródło
źródło
$real_ip_address
jest zawsze ignorowane. W każdym razie pamiętaj, żeX-Forwarded-For
nagłówek HTTP można bardzo łatwo podrobić i że istnieją serwery proxy takie jak www.hidemyass.comhttps://www.iplocate.io/api/lookup/8.8.8.8
- Oświadczenie: uruchamiam tę usługę.Odpowiedzi:
Wypróbuj tę prostą funkcję PHP.
Jak używać:
Przykład 1: Uzyskaj szczegóły adresu IP użytkownika
Przykład 2: Uzyskaj szczegółowe informacje na temat dowolnego adresu IP. [Wsparcie IPV4 i IPV6]
źródło
file_get_contents()
. Po prostu sprawdź plik dziennika error_log. Obejście: patrz moja odpowiedź.Możesz użyć prostego API z http://www.geoplugin.net/
Używana funkcja
Wynik
Dzięki temu masz tyle opcji, z którymi możesz się bawić
Dzięki
:)
źródło
Próbowałem odpowiedzi Chandry, ale moja konfiguracja serwera nie zezwala na file_get_contents ()
PHP Warning: file_get_contents() URL file-access is disabled in the server configuration
Zmodyfikowałem kod Chandry, aby działał również na serwerach podobnych do tego przy użyciu cURL:
Mam nadzieję, że to pomaga ;-)
źródło
W rzeczywistości możesz zadzwonić pod adres http://api.hostip.info/?ip=123.125.114.144, aby uzyskać informacje przedstawione w formacie XML.
źródło
Użyj MaxMind GeoIP (lub GeoIPLite, jeśli nie jesteś gotowy do zapłaty).
źródło
Skorzystaj z następujących usług
1) http://api.hostip.info/get_html.php?ip=12.215.42.19
2)
3) http://ipinfodb.com/ip_location_api.php
źródło
Sprawdź php-ip-2-country na code.google. Baza danych, którą zapewniają, jest aktualizowana codziennie, więc nie jest konieczne łączenie się z zewnętrznym serwerem w celu sprawdzenia, czy hostujesz własny serwer SQL. Więc używając kodu wystarczy wpisać:
Przykładowy kod (z zasobu)
Wynik
źródło
Możemy użyć geobytes.com, aby uzyskać lokalizację przy użyciu adresu IP użytkownika
zwróci takie dane
Funkcja uzyskiwania adresu IP użytkownika
źródło
Wypróbuj ten prosty kod jednoliniowy, a ze zdalnego adresu IP otrzymasz kraj i miasto odwiedzających.
źródło
Możesz użyć usługi internetowej z http://ip-api.com
w kodzie php, wykonaj następujące czynności:
zapytanie zawiera wiele innych informacji:
źródło
Istnieje dobrze utrzymana wersja pliku bazy danych kraju ip-> utrzymywana przez społeczność Perl w CPAN
Dostęp do tych plików nie wymaga serwera danych, a same dane to około 515 tys
Higemaru napisał opakowanie PHP, aby porozmawiać z tymi danymi: php-ip-country-fast
źródło
Wiele różnych sposobów, aby to zrobić ...
Rozwiązanie nr 1:
Jedną z usług zewnętrznych, z których możesz skorzystać, jest http://ipinfodb.com . Zapewniają nazwę hosta, geolokalizację i dodatkowe informacje.
Zarejestruj się, aby uzyskać klucz API tutaj: http://ipinfodb.com/register.php . Umożliwi to pobieranie wyników z ich serwera, bez tego nie będzie działać.
Skopiuj i wklej następujący kod PHP:
Minusem:
Cytowanie z ich strony internetowej:
Rozwiązanie nr 2:
Ta funkcja zwróci nazwę kraju za pomocą usługi http://www.netip.de/ .
Wynik:
źródło
Moja usługa ipdata.co udostępnia nazwę kraju w 5 językach! Podobnie jak organizacja, waluta, strefa czasowa, kod telefoniczny, flaga, dane operatora komórkowego, dane proxy i dane statusu węzła Tor Exit z dowolnego adresu IPv4 lub IPv6.
Jest również niezwykle skalowalny, z 10 regionami na całym świecie, z których każdy jest w stanie obsłużyć> 10 000 żądań na sekundę!
Dostępne opcje obejmują; Angielski (en), niemiecki (de), japoński (ja), francuski (fr) i chiński uproszczony (za-CH)
źródło
Nie jestem pewien, czy jest to nowa usługa, ale teraz (2016) najłatwiejszym sposobem w php jest skorzystanie z usługi internetowej php geoplugina: http://www.geoplugin.net/php.gp :
Podstawowe użycie:
Zapewniają również gotową klasę: http://www.geoplugin.com/_media/webservices/geoplugin.class.php.tgz?id=webservices%3Aphp&cache=cache
źródło
else
po,else
który powoduje błąd. Co próbowałeś zapobiec? REMOTE_ADDR powinien być dostępny cały czas?$_SERVER
: „Nie ma gwarancji, że każdy serwer sieciowy zapewni którykolwiek z nich; serwery mogą pominąć niektóre lub udostępnić inne, które nie zostały tutaj wymienione”.ja używam
ipinfodb.com
interfejsu API i otrzymuję dokładnie to, czego szukasz.Jest całkowicie darmowy, wystarczy się zarejestrować, aby otrzymać klucz API. Możesz dołączyć ich klasę php, pobierając ze strony internetowej lub możesz użyć formatu adresu URL, aby pobrać informacje.
Oto co robię:
Włączyłem ich klasę php do mojego skryptu i używając poniższego kodu:
Otóż to.
źródło
możesz użyć http://ipinfo.io/, aby uzyskać szczegółowe informacje na temat adresu IP Jest łatwy w użyciu.
źródło
Zastąp
127.0.0.1
odwiedzającymi adres IP.Instrukcje instalacji są tutaj i przeczytaj to, aby dowiedzieć się, jak uzyskać miasto, stan, kraj, długość geograficzną, szerokość geograficzną itp.
źródło
Jedna linijka z adresem IP interfejsu API kraju
Przykład:
https://ipapi.co/country_name/ - twój kraj
https://ipapi.co/8.8.8.8/country_name/ - kraj dla IP 8.8.8.8
źródło
Mam krótką odpowiedź, której użyłem w projekcie. W mojej odpowiedzi uważam, że masz adres IP użytkownika.
źródło
Wiem, że to stare, ale wypróbowałem tutaj kilka innych rozwiązań, które wydają się być nieaktualne lub po prostu zwracają wartość zerową. Więc tak to zrobiłem.
Korzystanie,
http://www.geoplugin.net/json.gp?ip=
które nie wymaga żadnego rodzaju rejestracji ani płacenia za usługę.A jeśli potrzebujesz dodatkowych informacji na ten temat, jest to pełny zwrot Jsona:
źródło
Napisałem klasę na podstawie odpowiedzi „Chandra Nakka”. Mamy nadzieję, że może to pomóc ludziom w zapisywaniu informacji z geoplugin do sesji, dzięki czemu ładowanie jest znacznie szybsze przy odtwarzaniu informacji. Zapisuje również wartości w prywatnej tablicy, więc przywołanie tego samego kodu jest najszybsze, jak mogłoby być.
Odpowiadając na pytanie „op” w tej klasie możesz zadzwonić
Pozostałe dostępne właściwości to:
Powracający
źródło
Użytkownik Kraj API ma dokładnie to, czego potrzebujesz. Oto przykładowy kod używający file_get_contents () tak jak pierwotnie:
źródło
Możesz uzyskać odwiedzających kraj i miasto za pomocą interfejsu API ipstack geo. Musisz uzyskać własny interfejs API ipstack, a następnie użyć kodu poniżej:
Źródło: Uzyskaj odwiedzających kraj i miasto w PHP za pomocą interfejsu API ipstack
źródło
To tylko uwaga dotycząca bezpieczeństwa,
get_client_ip()
że większość odpowiedzi tutaj została uwzględniona w głównej funkcjiget_geo_info_for_this_ip()
.Nie polegaj zbytnio na danych IP w nagłówkach żądania, takich jak
Client-IP
lub,X-Forwarded-For
ponieważ mogą one być bardzo łatwo sfałszowane, jednak powinieneś polegać na źródłowym adresie IP połączenia TCP, który jest faktycznie ustanowiony między naszym serwerem a klientem,$_SERVER['REMOTE_ADDR']
ponieważ może ” sfałszowaneMożna podać kraj fałszywego adresu IP, ale należy pamiętać, że użycie tego adresu IP w dowolnym modelu bezpieczeństwa (np. Zakazanie adresu IP wysyłającego częste żądania) zniszczy cały model bezpieczeństwa. IMHO Wolę używać rzeczywistego adresu IP klienta, nawet jeśli jest to adres IP serwera proxy.
źródło
Próbować
źródło
Możesz skorzystać z mojej usługi: https://SmartIP.io , która zapewnia pełne nazwy krajów i nazwy miast dla dowolnego adresu IP. Udostępniamy także strefy czasowe, waluty, wykrywanie proxy, wykrywanie węzłów TOR i wykrywanie kryptograficzne.
Wystarczy się zarejestrować i otrzymać bezpłatny klucz API, który pozwala na 250 000 żądań miesięcznie.
Przy użyciu oficjalnej biblioteki PHP wywołanie API staje się:
Sprawdź dokumentację API, aby uzyskać więcej informacji: https://smartip.io/docs
źródło
Od 2019 r. DB kraju MaxMind można używać w następujący sposób:
Źródło: https://github.com/maxmind/MaxMind-DB-Reader-php
źródło
Czy byłoby to do przyjęcia? czysty PHP
ref: https://www.php.net/manual/en/function.geoip-country-code-by-name.php
źródło