{"id":27742,"date":"2021-05-14T14:57:00","date_gmt":"2021-05-14T11:57:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27742"},"modified":"2021-10-17T17:08:28","modified_gmt":"2021-10-17T14:08:28","slug":"implementacion-de-la-geolocalizacion-de-ip-usando-free-ip2location-lite-y-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/implementacion-de-la-geolocalizacion-de-ip-usando-free-ip2location-lite-y-php\/","title":{"rendered":"Implementaci\u00f3n de la geolocalizaci\u00f3n de IP usando Free IP2Location LITE y PHP"},"content":{"rendered":"<p>Visite cualquier sitio web y lo m\u00e1s probable es que encuentre alg\u00fan tipo de localizaci\u00f3n en uso. El m\u00e1s com\u00fan es mostrar anuncios locales aunque el sitio web sea extranjero. Al utilizar la direcci\u00f3n IP del visitante de la web, el operador del sitio web puede orientar anuncios y contenidos relevantes o cambiar el idioma del sitio web en funci\u00f3n de su pa\u00eds de geolocalizaci\u00f3n.<\/p>\n<p>Exploraremos c\u00f3mo implementar esta funci\u00f3n de geolocalizaci\u00f3n en su propio sitio web utilizando PHP. La parte 1 trata de la creaci\u00f3n de la base de datos y la tabla, as\u00ed como de la importaci\u00f3n de los datos. La parte 2 mostrar\u00e1 c\u00f3mo usar PHP para consultar la base de datos y recuperar los resultados.<\/p>\n<h3>Parte 1: Importaci\u00f3n de los datos de geolocalizaci\u00f3n<\/h3>\n<p>Supongamos que su sitio web est\u00e1 ejecutando un servidor web Apache con PHP que alimenta el backend. Asumiremos que est\u00e1 usando MySQL ya que PHP generalmente opera con MySQL.<\/p>\n<p>El primer paso es descargar el archivo de base de datos DB11 LITE desde <a href=\"https:\/\/lite.ip2location.com\/database\/ip-country-region-city-latitude-longitude-zipcode-timezone\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><a href=\"https:\/\/lite.ip2location.com\/database\/ip-country-region-city-latitude-longitude-zipcode-timezone\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/lite.ip2location.com\/database\/ip-country-region-city-latitude-longitude-zipcode-timezone,<\/a> que es gratuito despu\u00e9s de registrarse.<\/p>\n<p>Una vez que haya descargado el archivo comprimido, extraiga el archivo de datos IP2LOCATION-LITE-DB11.CSV a una carpeta llamada <code>\/root\/ip2location_data<\/code>(este es solo un ejemplo de nombre de carpeta).<\/p>\n<p>En su MySQL, ejecute lo siguiente para crear la base de datos y la tabla en la que almacenaremos los datos DB11.<\/p>\n<pre><code>CREATE DATABASE ip2location;\nUSE ip2location;\nCREATE TABLE `ip2location_db11`(\n\u00a0\u00a0\u00a0\u00a0`ip_from` INT(10) UNSIGNED,\n\u00a0\u00a0\u00a0\u00a0`ip_to` INT(10) UNSIGNED,\n\u00a0\u00a0\u00a0\u00a0`country_code` CHAR(2),\n\u00a0\u00a0\u00a0\u00a0`country_name` VARCHAR(64),\n\u00a0\u00a0\u00a0\u00a0`region_name` VARCHAR(128),\n\u00a0\u00a0\u00a0\u00a0`city_name` VARCHAR(128),\n\u00a0\u00a0\u00a0\u00a0`latitude` DOUBLE,\n\u00a0\u00a0\u00a0\u00a0`longitude` DOUBLE,\n\u00a0\u00a0\u00a0\u00a0`zip_code` VARCHAR(30),\n\u00a0\u00a0\u00a0\u00a0`time_zone` VARCHAR(8),\n\u00a0\u00a0\u00a0\u00a0INDEX `idx_ip_to` (`ip_to`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;<\/code><\/pre>\n<p>Ahora ejecute lo siguiente en MySQL para importar los datos.<\/p>\n<pre><code>LOAD DATA LOCAL\n\u00a0\u00a0\u00a0\u00a0INFILE '\/root\/ip2location_data\/IP2LOCATION-LITE-DB11.CSV'\nINTO TABLE\n\u00a0\u00a0\u00a0\u00a0`ip2location_db11`\nFIELDS TERMINATED BY ','\nENCLOSED BY '\"'\nLINES TERMINATED BY 'rn'\nIGNORE 0 LINES;<\/code><\/pre>\n<h3>Parte 2: Consultar los datos de geolocalizaci\u00f3n en su p\u00e1gina web PHP<\/h3>\n<p>Ahora crearemos la p\u00e1gina web PHP para consultar la base de datos y generar los datos de geolocalizaci\u00f3n para el visitante de la p\u00e1gina.<\/p>\n<p>Cree una p\u00e1gina llamada <code>test.php<\/code>y pegue el siguiente c\u00f3digo en ella.<\/p>\n<pre><code>&lt;?php\n$dbname = 'ip2location'; \/\/ database name\n$dbhost = 'localhost'; \/\/ database server name\n$dbuser = 'root'; \/\/ database user login\n$dbpass = '12345'; \/\/ database user password\n?&gt;\n&lt;!DOCTYPE html&gt;\n&lt;head&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;title&gt;Test page&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;?php\ntry {\n\u00a0\u00a0\u00a0\u00a0$pdo = new PDO('mysql:host='. $dbhost. ';dbname='. $dbname. ';charset=utf8', $dbuser, $dbpass);\n\u00a0\u00a0\u00a0\u00a0$pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$ip = $_SERVER['REMOTE_ADDR']; \/\/ web visitor's IP address\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$st = $pdo-&gt;prepare('select * from `ip2location_db11` where inet_aton(:ip) &lt;= ip_to limit 1');\n\u00a0\u00a0\u00a0\u00a0$st-&gt;bindParam(':ip', $ip, PDO::PARAM_STR);\n\u00a0\u00a0\u00a0\u00a0$st-&gt;execute();\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$data = $st-&gt;fetchAll(PDO::FETCH_ASSOC);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if ($st-&gt;rowCount() &gt; 0) {\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'country_code: '. $data[0]['country_code']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'country_name: '. $data[0]['country_name']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'region_name: '. $data[0]['region_name']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'city_name: '. $data[0]['city_name']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'latitude: '. $data[0]['latitude']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'longitude: '. $data[0]['longitude']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'zip_code: '. $data[0]['zip_code']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'time_zone: '. $data[0]['time_zone']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0else {\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'No data found.&lt;br \/&gt;'. \"n\";\n\u00a0\u00a0\u00a0\u00a0}\n}\ncatch(PDOException $e) {\n\u00a0\u00a0\u00a0\u00a0echo 'An error has occurred.&lt;br \/&gt;'. \"n\";\n}\n?&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Ahora abra esa p\u00e1gina en su navegador. Deber\u00eda ver todos los datos de geolocalizaci\u00f3n de su propia direcci\u00f3n IP. Una vez que pueda ver todos los campos de geolocalizaci\u00f3n devueltos por los datos de IP2Location DB11 LITE, puede usarlos en muchos escenarios. Puede filtrar el tr\u00e1fico, bloquear o redirigir a los usuarios seg\u00fan sus ubicaciones.<\/p>\n<p>Si tiene m\u00e1s preguntas sobre la implementaci\u00f3n, puede encontrar m\u00e1s tutoriales en el <a href=\"https:\/\/blog.ip2location.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Blog de IP2Location<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visite cualquier sitio web y lo m\u00e1s probable es que encuentre alg\u00fan tipo de localizaci\u00f3n en uso. El m\u00e1s com\u00fan es la publicaci\u00f3n de anuncios locales para ti &#8230;<\/p>\n","protected":false},"author":1,"featured_media":20619,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[271],"tags":[849],"class_list":["post-27742","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/27742","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=27742"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/27742\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/20619"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=27742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=27742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=27742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}