Визначення пошукового робота з User-Agent на PHP. Php - Отримання країни-відвідувача від їх IP-адрес Що нам знадобиться
geolocation country-codes (17)
Я хочу отримати країну відвідувача через свій IP ... Зараз я використовую це (http://api.hostip.info/country.php?ip= ......)
Ось мій код:
Ну, це працює нормально, але справа в тому, що це повертає код країни, наприклад, США або CA., а не вся назва країни, наприклад, Сполучені Штати чи Канада.
Отже, є хороша альтернатива hostip.info?
Я знаю, що можу просто написати код, який зрештою перетворить ці дві літери на назву всієї країни, але я просто занадто лінивий, щоб написати код, який містить усі країни...
PS: З якоїсь причини я не хочу використовувати готовий CSV файл або будь-який код, який захопить цю інформацію для мене, щось на зразок ip2country готового коду і CSV.
Answers
Я використовую ipinfodb.com api та отримую саме те, що ви шукаєте.
Його абсолютно безкоштовно, вам просто потрібно зареєструватись у них, щоб отримати свій ключ api. Ви можете включити їх php-клас, завантаживши їх зі свого веб-сайту, або ви можете використовувати формат URL для отримання інформації.
Ось що я роблю:
Я включив їх php-клас у свій скрипт і використовуючи наведений нижче код:
$ipLite = новий ip2location_lite; $ipLite->setKey("your_api_key"); if(!$_COOKIE["visitorCity"])( //I am using cookie to store information $visitorCity = $ipLite->getCity($_SERVER["REMOTE_ADDR"]); if ($visitorCity["statusCode"] == "OK") ( $data = base64_encode(serialize($visitorCity)); setcookie("visitorCity", $data, time()+3600*24*7); //set cookie for 1 week ) ) (base64_decode($_COOKIE["visitorCity"])); echo $visitorCity["countryName"]." Region".$visitorCity["regionName"];
$json = file_get_contents("http://freegeoip.appspot.com/json/66.102.13.106"); $expression = json_decode($json); print_r($expression);
У мене є коротка відповідь на це питання, яке я використав у проекті. У моїй відповіді я вважаю, що у вас є IP-адреса відвідувача
$ ip = "202.142.178.220"; $ipdat = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=" . $ip)); //get ISO2 country code if(property_exists($ipdat, "geoplugin_countryCode")) ( echo $ipdat->geoplugin_countryCode; ) //get country full name if(property_exists($ipdat, "geoplugin_countryName")) ( echo >geoplugin_countryName;
Я спробував відповісти на Chandra, але моя конфігурація сервера не дозволяє file_get_contents ()
PHP Warning: file_get_contents() URL file-access is disabled in the server configuration
Я змінив код Chandra, щоб він також працював на таких серверах, використовуючи cURL:
Function ip_visitor_country() ( $client = @$_SERVER["HTTP_CLIENT_IP"]; $forward = @$_SERVER["HTTP_X_FORWARDED_FOR"]; $remote = $_SERVER["REMOTE_ADDR"]; $country = "Unknown"; if( fil ($client, FILTER_VALIDATE_IP)) ( $ip = $client; ) elseif(filter_var($forward, FILTER_VALIDATE_IP)) ( $ip = $forward; ) else ( $ip = $remote; ) $ch = curl_init(); ($ch, CURLOPT_URL, "http://www.geoplugin.net/json.gp?ip=".$ip); curl_setopt($ch, CURLOPT_HEADER, 0); ip_data_in = curl_exec($ch); // string curl_close($ch); see .com/questions/3110487/ if($ip_data && $ip_data["geoplugin_countryName"] != null) ( $country = $ip_data["geoplugin_countryName"]; ) return "IP: ".$ip." # Country: ".$country; ) echo ip_visitor_country(); // output Coutry name?>
Надіюсь це допоможе;-)
Ви можете використовувати простий API від http://www.geoplugin.net/
$xml = simplexml_load_file("http://www.geoplugin.net/xml.gp?ip=".getRealIpAddr()); echo $xml->geoplugin_countryName ; echo "
"; foreach ($xml as $key => $value) ( echo $key , "= " , $value , " \n" ; ) echo "";
Використовувана функція
Function getRealIpAddr() ( if (!empty($_SERVER["HTTP_CLIENT_IP"])) //check ip from share internet ( $ip=$_SERVER["HTTP_CLIENT_IP"]; ) elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR" ])) //to check ip is pass from proxy ( $ip=$_SERVER["HTTP_X_FORWARDED_FOR"]; ) else ( $ip=$_SERVER["REMOTE_ADDR"]; ) return $ip;
United states geoplugin_city = San Antonio geoplugin_region = TX geoplugin_areaCode = 210 geoplugin_dmaCode = 641 geoplugin_countryCode = US geoplugin_countryName = United States geoplugin_continentCode = NA geoplugin_latitude88_9 8.398696899414 geoplugin_regionCode= TX geoplugin_regionName= Texas geoplugin_currencyCode= USD geoplugin_currencySymbol= $ geoplugin_currencyConverter= 1
У вас є так багато варіантів, з якими ви можете
завдяки
Спробуйте цей простий код з одним рядком, ви отримаєте країну та місто відвідувачів зі своєї IP-адреси.
$tags = get_meta_tags("http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress=" . $_SERVER["REMOTE_ADDR"]); echo $tags["country"]; echo $tags["city"];
Багато різних способів зробити це...
Рішення №1:
Одна стороння служба, яку можна використовувати, - http://ipinfodb.com . Вони надають ім'я хоста, геолокацію та додаткову інформацію.
Зареєструйтесь для ключа API тут: http://ipinfodb.com/register.php . Це дозволить вам отримувати результати зі свого сервера, без цього він не працюватиме.
Скопіюйте та пропустіть наступний код PHP:
$ipaddress = $_SERVER["REMOTE_ADDR"]; $api_key = "YOUR_API_KEY_HERE"; $data = file_get_contents("http://api.ipinfodb.com/v3/ip-city/?key=$api_key&ip=$ipaddress&format=json"); $ data = json_decode ($ data); $country = $data["Country"];
Даунсайд:
Цитата з їхнього сайту:
Наш безкоштовний API використовує версію IP2Location Lite, яка забезпечує нижчу точність.
Рішення №2:
Ця функція поверне назву країни за допомогою служби http://www.netip.de/ .
$ipaddress = $_SERVER["REMOTE_ADDR"]; function geoCheckIP($ip) ( _get_contents("http://www.netip.de/search?query=".$ip); $patterns=array(); $patterns["country"] = "#Country: ( .*?) #i"; $ipInfo=array(); foreach ($patterns as $key => $pattern) ( $ipInfo[$key] = preg_match($pattern,$response,$value) && !empty( $value) ? $value : "not found"; ) return $ipInfo; ) print_r(geoCheckIP($ipaddress));
Висновок:
Array (=> DE - Німеччина) // Full Country Name
Перевірте php-ip-2-country із code.google. База даних, яку вони надають, оновлюється щодня, тому немає необхідності підключатися до зовнішнього сервера для перевірки, якщо ви розміщуєте свій SQL-сервер. Тому, використовуючи код, вам потрібно буде лише запровадити:
"localhost", //example host name "port" => 3306, //3306 -default mysql port number "dbName" => "ip_to_country", //example db name "dbUserName" => "ip_to_country", //example user name "dbUserPassword" => "QrDB9Y8CKMdLDH8Q", //example user password "tableName" => "ip_to_country", //example table name); $phpIp2Country = новий phpIp2Country($ip,$dbConfigArray); $country = $phpIp2Country->getInfo(IP_COUNTRY_NAME); echo $ country; ?>
Приклад коду (З ресурсу)
require("phpip2country.class.php"); $dbConfigArray = array("host" =>"localhost", //example host name "port" => 3306, //3306 -default mysql port number "dbName" => "ip_to_country", //example db name "dbUserName" => "ip_to_country", //example user name "dbUserPassword" => "QrDB9Y8CKMdLDH8Q", //example user password "tableName" => "ip_to_country", //example table name); $phpIp2Country = новий phpIp2Country("213.180.138.148",$dbConfigArray); print_r($phpIp2Country->getInfo(IP_INFO)); ?>
Висновок
Array (=> 3585376256 => 3585384447 => RIPE => 948758400 => PL => POL => POLAND => 213.180.138.148 => 3585378964 => 125.2.5.2. 55)
Ви можете використовувати веб-сервіс із сайту http://ip-api.com
у вашому php-коді, виконайте такі дії:
запит має багато іншої інформації:
Array ("status" => "success", "country" => "COUNTRY", "countryCode" => "COUNTRY CODE", "region" => "REGION CODE", "regionName" => "REGION NAME", "city" => "CITY", "zip" => ZIP CODE, "lat" => LATITUDE, "lon" => LONGITUDE, "timezone" => "TIME ZONE", "isp" => "ISP NAME" , "org" => "ORGANIZATION NAME", "as" => "AS NUMBER / NAME", "query" => "IP ADDRESS USED FOR QUERY",)
ви можете використовувати http://ipinfo.io/ щоб отримати інформацію про ip-адресу. Його простота використання.
city; echo "
".$details->country; echo "
".$details->org; echo "
".$details->hostname; / ?>
Виконання стандартних функцій
I) $Array = array("test1", "test2", "test3", "test3"); unset($Array); ii) $Array = array("test1", "test2", "test3", "test3"); array_pop($Array); iii) $Array = array("test1", "test2", "test3", "test3"); array_splice ($ Array, 1,2); iv) $Array = array("test1", "test2", "test3", "test3"); array_shift($Array);
28.02.16 11.1KОдна з найпопулярніших і найнеобхідніших функцій на будь-якому сайті – це пошук, реалізований за допомогою спеціальної форми. Цей функціонал дозволяє відвідувачам швидко знаходити на сайті контент, що їх цікавить.
Сьогодні ми хочемо розповісти, як зробити пошук по сайту за допомогою спеціальної форми, яка опитуватиме таблиці бази даних та виводитиме інформацію про поточних керівників на сайті. Ви навчитеся створювати таблиці бази даних, яка міститиме інформацію про поточний персонал.
Розробляти форми пошуку за допомогою PHP, а також познайомитеся з SQL ( Structured Query Language) – спеціальною мовою для збору, запису та модифікації інформації, що міститься в базах даних. Перед тим, як почати, рекомендуємо вам скачати файли проекту.
Що вам знадобиться
- Інструмент для роботи з базами даних MySQL.
- Локальний або віддалений сервер з підтримкою PHP.
- Текстовий редактор.
Створюємо базу даних
Якщо ви не зовсім впевнені, що зможете розібратися з базою даних на вашому хостингу, зв'яжіться з хостером для отримання відповідних інструкцій або допомоги. Після того, як база даних буде створена, вам потрібно буде підключити її, створити таблицю та записати до неї необхідні дані.
Найпопулярнішим інструментом для управління MySQL є PHP My Admin, цього інструменту буде достатньо для нашого сьогоднішнього керівництва.
Створення таблиці
Наша таблиця має бути створена у наступному форматі:
Column Name | Data Type | Length | Null or Not Null | Primary key? | Auto Increment |
ID | INT | 1 | Not Null | Yes | Yes |
FirstName | Varchar | 50 | Not Null | No | No |
LastName | Varchar | 50 | Not Null | No | No |
Varchar | 50 | Not Null | No | No | |
PhoneNumber | Varchar | 15 | Not Null | No | No |
Таблиця бази даних складається зі стовпців і рядків, як у Excel. Перший стовпець дозволяє ідентифікувати дані на ім'я. Далі йде колонка Data types (тип даних), яка вказує нам на тип даних, які у колонці. У полі Length (Довжина) вказується максимальний обсяг пам'яті (сховища) для стовпчика таблиці. Ми використовуємо змінні, які дають більшу гнучкість. Іншими словами, якщо довжина ПІБ менше 50 символів, то буде зайнята лише частина відведеного місця.
І серед даних персоналу може бути порожніх значень ( null, empty). Перший рядок виділено жовтим кольором, тому що стовпець ID – наш основний ключ. Основний ключ у базі даних гарантує, що кожен запис буде унікальним. До цієї колонки також застосований автоінкремент, а це означає, що кожному запису в нашій базі даних присвоюватиметься унікальний номер автоматично.
Вносимо представників персоналу до таблиці
Як тільки розберетеся з таблицею, почніть заповнювати її даними. 6 записів цілком достатньо, щоб закріпити в думці процедуру. Нижче пропоную вам власний приклад:
Column ID | FirstName | LastName | PhoneNumber | |
2 | Ryan | Butler | [email protected] | 417-854-8547 |
3 | Brent | Callahan | [email protected] | 417-854-6587 |
Розробка форми
Щоб створити форму пошуку по сайту через Google, відкрийте будь-який відповідний текстовий редактор. Я рекомендую скористатися безкоштовним PSPad. Ви можете використовувати будь-який текстовий редактор, де передбачено підсвічування синтаксису. Це значною мірою полегшить процес написання та налагодження PHP-коду. Створюючи сторінку для форми пошуку, не забудьте зберегти її у форматі .php, інакше PHP-код не оброблятиметься належним чином. Як тільки збережіть документ, скопіюйте до нього наступну розмітку:
Детальний пошук контактів
Ви можете шукати на ім'я або прізвище
Якщо ви знайомі з мовою HTML, то тут вам все повинно бути зрозуміло як мінімум до тега form, що відкриває. Усередині цього тегу знаходиться найважливіший елемент коду – атрибут action . Як дія нашої форми ми вказали назву нашого файлу, а потім застосували до нього рядок запиту “ go”.
Перевірка на відповідність критерію
Коли користувач вводить ім'я або прізвище, а потім натискає кнопку підтвердження, форма передає дані собі і додає в кінці рядок запиту “ go”. На цьому етапі ми перевіряємо наявність рядка запиту go . Якщо результат є позитивним, виводимо результати пошуку.
До виведення запитуваних результатів нам потрібно перевірити ще раз: (1) чи була підтверджена форма, (2) чи містить рядок запиту значення go, (3) був пошуковий запит введений у нижньому або верхньому регістрі? Якщо жодна з перевірок не дає позитивного результату ( true), то від нас не потрібно виконувати будь-які дії.
Для початку додамо невеликий блок коду PHP пошук по сайту після тега, що закриває: