Respuesta: Codigo Formulario de envio con pais Hay un problema con el código que dije funcionaba y es que en un servidor local funciona bien pero al subirlo al servidor web no lo deja correr por el tamaño del archivo php y en especial por el tamaño del array que supera el lìmite impuesto por el servidor, lo probé en 2 servidores y en ninguno corrió, por lo cual estuve buscando otra forma de hacerlo y buscando aquí y allá pude juntar dos códigos fuente y armar esta función porque ninguna de las dos funcionaba por si sola ya. Espero les sirva si alguno quiere intentarlo:
Código PHP:
Ver original<?php function GetNameCtry($code) { "AD"=>"Andorra", "AE"=>"United Arab Emirates", "AF"=>"Afghanistan", "AG"=>"Antigua & Barbuda", "AI"=>"Anguilla", "AL"=>"Albania", "AM"=>"Armenia", "AN"=>"Netherlands Antilles", "AO"=>"Angola", "AQ"=>"Antarctica", "AR"=>"Argentina", "AS"=>"American Samoa", "AT"=>"Austria", "AU"=>"Australia", "AW"=>"Aruba", "AZ"=>"Azerbaijan", "BA"=>"Bosnia and Herzegovina", "BB"=>"Barbados", "BD"=>"Bangladesh", "BE"=>"Belgium", "BF"=>"Burkina Faso", "BG"=>"Bulgaria", "BH"=>"Bahrain", "BI"=>"Burundi", "BJ"=>"Benin", "BM"=>"Bermuda", "BN"=>"Brunei Darussalam", "BO"=>"Bolivia", "BR"=>"Brazil", "BS"=>"Bahama", "BT"=>"Bhutan", "BU"=>"Burma (no longer exists)", "BV"=>"Bouvet Island", "BW"=>"Botswana", "BY"=>"Belarus", "BZ"=>"Belize", "CA"=>"Canada", "CC"=>"Cocos (Keeling) Islands", "CF"=>"Central African Republic", "CG"=>"Congo", "CH"=>"Switzerland", "CI"=>"Côte D'ivoire (Ivory Coast)", "CK"=>"Cook Iislands", "CL"=>"Chile", "CM"=>"Cameroon", "CN"=>"China", "CO"=>"Colombia", "CR"=>"Costa Rica", "CS"=>"Czechoslovakia (no longer exists)", "CU"=>"Cuba", "CV"=>"Cape Verde", "CX"=>"Christmas Island", "CY"=>"Cyprus", "CZ"=>"Czech Republic", "DD"=>"German Democratic Republic (no longer exists)", "DE"=>"Germany", "DJ"=>"Djibouti", "DK"=>"Denmark", "DM"=>"Dominica", "DO"=>"Dominican Republic", "DZ"=>"Algeria", "EC"=>"Ecuador", "EE"=>"Estonia", "EG"=>"Egypt", "EH"=>"Western Sahara", "ER"=>"Eritrea", "ES"=>"Spain", "ET"=>"Ethiopia", "FI"=>"Finland", "FJ"=>"Fiji", "FK"=>"Falkland Islands (Malvinas)", "FM"=>"Micronesia", "FO"=>"Faroe Islands", "FR"=>"France", "FX"=>"France, Metropolitan", "GA"=>"Gabon", "GB"=>"United Kingdom (Great Britain)", "GD"=>"Grenada", "GE"=>"Georgia", "GF"=>"French Guiana", "GH"=>"Ghana", "GI"=>"Gibraltar", "GL"=>"Greenland", "GM"=>"Gambia", "GN"=>"Guinea", "GP"=>"Guadeloupe", "GQ"=>"Equatorial Guinea", "GR"=>"Greece", "GS"=>"South Georgia and the South Sandwich Islands", "GT"=>"Guatemala", "GU"=>"Guam", "GW"=>"Guinea-Bissau", "GY"=>"Guyana", "HK"=>"Hong Kong", "HM"=>"Heard & McDonald Islands", "HN"=>"Honduras", "HR"=>"Croatia", "HT"=>"Haiti", "HU"=>"Hungary", "ID"=>"Indonesia", "IE"=>"Ireland", "IL"=>"Israel", "IN"=>"India", "IO"=>"British Indian Ocean Territory", "IQ"=>"Iraq", "IR"=>"Islamic Republic of Iran", "IS"=>"Iceland", "IT"=>"Italy", "JM"=>"Jamaica", "JO"=>"Jordan", "JP"=>"Japan", "KE"=>"Kenya", "KG"=>"Kyrgyzstan", "KH"=>"Cambodia", "KI"=>"Kiribati", "KM"=>"Comoros", "KN"=>"St. Kitts and Nevis", "KP"=>"Korea, Democratic People's Republic of", "KR"=>"Korea, Republic of", "KW"=>"Kuwait", "KY"=>"Cayman Islands", "KZ"=>"Kazakhstan", "LA"=>"Lao People's Democratic Republic", "LB"=>"Lebanon", "LC"=>"Saint Lucia", "LI"=>"Liechtenstein", "LK"=>"Sri Lanka", "LR"=>"Liberia", "LS"=>"Lesotho", "LT"=>"Lithuania", "LU"=>"Luxembourg", "LV"=>"Latvia", "LY"=>"Libyan Arab Jamahiriya", "MA"=>"Morocco", "MC"=>"Monaco", "MD"=>"Moldova, Republic of", "MG"=>"Madagascar", "MH"=>"Marshall Islands", "ML"=>"Mali", "MN"=>"Mongolia", "MM"=>"Myanmar", "MO"=>"Macau", "MP"=>"Northern Mariana Islands", "MQ"=>"Martinique", "MR"=>"Mauritania", "MS"=>"Monserrat", "MT"=>"Malta", "MU"=>"Mauritius", "MV"=>"Maldives", "MW"=>"Malawi", "MX"=>"Mexico", "MY"=>"Malaysia", "MZ"=>"Mozambique", "NA"=>"Namibia", "NC"=>"New Caledonia", "NE"=>"Niger", "NF"=>"Norfolk Island", "NG"=>"Nigeria", "NI"=>"Nicaragua", "NL"=>"Netherlands", "NO"=>"Norway", "NP"=>"Nepal", "NR"=>"Nauru", "NT"=>"Neutral Zone (no longer exists)", "NU"=>"Niue", "NZ"=>"New Zealand", "OM"=>"Oman", "PA"=>"Panama", "PE"=>"Peru", "PF"=>"French Polynesia", "PG"=>"Papua New Guinea", "PH"=>"Philippines", "PK"=>"Pakistan", "PL"=>"Poland", "PM"=>"St. Pierre & Miquelon", "PN"=>"Pitcairn", "PR"=>"Puerto Rico", "PT"=>"Portugal", "PW"=>"Palau", "PY"=>"Paraguay", "QA"=>"Qatar", "RE"=>"Réunion", "RO"=>"Romania", "RU"=>"Russian Federation", "RW"=>"Rwanda", "SA"=>"Saudi Arabia", "SB"=>"Solomon Islands", "SC"=>"Seychelles", "SD"=>"Sudan", "SE"=>"Sweden", "SG"=>"Singapore", "SH"=>"St. Helena", "SI"=>"Slovenia", "SJ"=>"Svalbard & Jan Mayen Islands", "SK"=>"Slovakia", "SL"=>"Sierra Leone", "SM"=>"San Marino", "SN"=>"Senegal", "SO"=>"Somalia", "SR"=>"Suriname", "ST"=>"Sao Tome & Principe", "SU"=>"Union of Soviet Socialist Republics (no longer exists)", "SV"=>"El Salvador", "SY"=>"Syrian Arab Republic", "SZ"=>"Swaziland", "TC"=>"Turks & Caicos Islands", "TD"=>"Chad", "TF"=>"French Southern Territories", "TG"=>"Togo", "TH"=>"Thailand", "TJ"=>"Tajikistan", "TK"=>"Tokelau", "TM"=>"Turkmenistan", "TN"=>"Tunisia", "TO"=>"Tonga", "TP"=>"East Timor", "TR"=>"Turkey", "TT"=>"Trinidad & Tobago", "TV"=>"Tuvalu", "TW"=>"Taiwan, Province of China", "TZ"=>"Tanzania, United Republic of", "UA"=>"Ukraine", "UG"=>"Uganda", "UM"=>"United States Minor Outlying Islands", "US"=>"United States of America", "UY"=>"Uruguay", "UZ"=>"Uzbekistan", "VA"=>"Vatican City State (Holy See)", "VC"=>"St. Vincent & the Grenadines", "VE"=>"Venezuela", "VG"=>"British Virgin Islands", "VI"=>"United States Virgin Islands", "VN"=>"Viet Nam", "VU"=>"Vanuatu", "WF"=>"Wallis & Futuna Islands", "WS"=>"Samoa", "YD"=>"Democratic Yemen (no longer exists)", "YE"=>"Yemen", "YT"=>"Mayotte", "YU"=>"Yugoslavia", "ZA"=>"South Africa", "ZM"=>"Zambia", "ZR"=>"Zaire", "ZW"=>"Zimbabwe", "ZZ"=>"Unknown or unspecified country", ); return $paises[$code]; } function getCountry($ip_address){ //By Marc Palau (http://www.nbsp.es) $url = "http://ipinfodb.com/ip_locator.php"; curl_setopt($ch, CURLOPT_POSTFIELDS , "ip=$ip_address"); preg_match("/<li>Country : (.*?) <img/",$html,$data); $d['pais'] = $data[1]; preg_match("/<li>State\/Province : (.*?)<\/li>/",$html,$data); $d['state'] = $data[1]; preg_match("/<li>City : (.*?)<\/li>/",$html,$data); $d['city'] = $data[1]; return ($d); } function getRealIP() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) return $_SERVER['HTTP_CLIENT_IP']; if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) return $_SERVER['HTTP_X_FORWARDED_FOR']; return $_SERVER['REMOTE_ADDR']; } $ip = getRealIP(); $iploc = getCountry($ip); $namepais = GetNameCtry($iploc["pais"]); echo $iploc["city"].", ".$iploc["state"].", ".$namepais." (".$iploc["pais"].")"; ?>
El código se basa en interactuar con una página que ya hace el "trabajo sucio" que es determinar la ubicación de la IP y luego a partir del código fuente extraer la cadena que se necesita.
PD: Por si les interesa también, en la página desde donde se extrae la información hay la posibilidad de registrarse (al parecer gratis) y utilizar una API que ponen a disposición y la cual genera un archivo XML con la información del país correspondiente a la IP, la dirección es esta: IP Location API
__________________ Si te gustó la respuesta dale +1 HERNÁN G. SIABATO M. [email protected]
Última edición por chronos682; 19/07/2015 a las 00:28 |