Foros del Web » Programando para Internet » PHP »

Ayuda Con Codigo Para Detectar Ip Y Pais

Estas en el tema de Ayuda Con Codigo Para Detectar Ip Y Pais en el foro de PHP en Foros del Web. BUENO ESTE CODIGO FUNCIONA PERFECTO PERO PARA SABER DE QUE PAIS PROVIENE UNA IP. AL CARGAR ESTA PAGINA CARGA UN FORMULARIO EL CUAL DA POR ...
  #1 (permalink)  
Antiguo 09/01/2005, 18:43
 
Fecha de Ingreso: mayo-2002
Ubicación: Perú
Mensajes: 72
Antigüedad: 15 años, 7 meses
Puntos: 0
Ayuda Con Codigo Para Detectar Ip Y Pais

BUENO ESTE CODIGO FUNCIONA PERFECTO PERO PARA SABER DE QUE PAIS PROVIENE UNA IP.

AL CARGAR ESTA PAGINA CARGA UN FORMULARIO EL CUAL DA POR DEFECTO EL IP DE LA PERSONA QUE EJECUTO EL PHP.

A CONTINUACION SI PRESIONAMOS OK EN EL FORMULARIO ESTE NOS DA EL PAIS A DONDE PERTENECE ESTE IP CON SU BANDERA

LO QUE QUIESIERA HACER ES QUE DEFRENTE SIN NECESIDAD DE PRESIONAR EL BOTON OK DEL FORMULARIO.
CUANDO SE CARGUE LA PAGINA QUE CONTIENE ESTE SCRIPT CARGE EL IP EL PAIS Y LA BANDERA.

A CONTINUACION PONGO EL CODIGO Y ESTOY COLOCANDO EN COLOR ROJO LA PARTE CORRESPONDIENTE AL FORMULARIO




<?php

$flags="flags/"; // set a correct relative or absolute path to the flag directory
$wdth=18; // set width of a flag image
$hght=12; // set height of a flag image
$extn='png'; // set format of the flag images /case sensitive/
$dtme=1; // set whether time to be displayed (1 or 0)


error_reporting(1);function tmm(){$u=microtime();$u=explode(" ",$u);return $u[1]+$u[0];}$s=tmm();
$pv=phpversion();$pv=substr($pv,0,1).substr($pv,2, 1);if($pv>40){import_request_variables("gpc");$REM OTE_ADDR=$HTTP_SERVER_VARS['REMOTE_ADDR'];$PHP_SELF=$HTTP_SERVER_VARS['PHP_SELF'];}
?>


<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
<style type="text/css">
body{color:#222222;background-color:#eeeeee}
div{padding:2px;font-size:11px;font-family:Verdana,sans-serif}
input{font-family:Verdana,sans-serif;font-size:11px;border:1px #666666 solid}
</style></head><body onload="document.forms[0].ip.focus()">


<form action="<?php print $PHP_SELF;?>">
<input type="text" name="ip" value="<?php if(!isset($ip)||$ip==''){print $REMOTE_ADDR;}?>" />
<input type="submit" value="OK" />
</form>



<div>
<?php
if(isset($ip)&&$ip!=''){

$v=0;$f=0;$n=array();

print "IP: $ip<br />\n";
$ip=sprintf("%u",ip2long($ip));
while(strlen($ip)<10){$ip='0'.$ip;}
$h=opendir('.');
while($e=readdir($h)){
$o=(int)$e;if(strlen($o)>5){
$n[$f]=$e;$f++;}}closedir($h);
sort($n);

$o=count($n)-1;$d=$n[$o];
for($j=0;$j<$o;$j++){if($ip>=$n[$j]&&$ip<$n[$j+1]){$d=$n[$j];break;}}

$q=fopen($d,"r");
while(!feof($q)){$r=fgets($q,32);
$a=substr($r,0,9);$b=substr($r,10,19);$c=substr($r ,20);
if($ip>=$a&&$ip<=$b){$v=1;break;}}
fclose($q);

if($v==0){print "Unknown IP address<br />\n";}
else{$ty=strtolower($c);
$ty=str_replace("\n","",$ty);
switch($ty){
case'ac':$rz='Ascension Island';break;
case'ad':$rz='Andorra';break;
case'ae':$rz='United Arab Emirates';break;
case'af':$rz='Afghanistan';break;
case'ag':$rz='Antigua and Barbuda';break;
case'ai':$rz='Anguilla';break;
case'al':$rz='Albania';break;
case'am':$rz='Armenia';break;
case'an':$rz='Netherlands Antilles';break;
case'ao':$rz='Angola';break;
case'aq':$rz='Antarctica';break;
case'ar':$rz='Argentina';break;
case'as':$rz='American Samoa';break;
case'at':$rz='Austria';break;
case'au':$rz='Australia';break;
case'aw':$rz='Aruba';break;
case'az':$rz='Azerbaijan';break;
case'ba':$rz='Bosnia and Herzegowina';break;
case'bb':$rz='Barbados';break;
case'bd':$rz='Bangladesh';break;
case'be':$rz='Belgium';break;
case'bf':$rz='Burkina Faso';break;
case'bg':$rz='Bulgaria';break;
case'bh':$rz='Bahrain';break;
case'bi':$rz='Burundi';break;
case'bj':$rz='Benin';break;
case'bm':$rz='Bermuda';break;
case'bn':$rz='Brunei Darussalam';break;
case'bo':$rz='Bolivia';break;
case'br':$rz='Brazil';break;
case'bs':$rz='Bahamas';break;
case'bt':$rz='Bhutan';break;
case'bv':$rz='Bouvet Island';break;
case'bw':$rz='Botswana';break;
case'by':$rz='Belarus';break;
case'bz':$rz='Belize';break;
case'ca':$rz='Canada';break;
case'cc':$rz='Cocos (Keeling) Islands';break;
case'cd':$rz='Zaire';break;
case'cf':$rz='Central African Republic';break;
case'cg':$rz='Congo';break;
case'ch':$rz='Switzerland';break;
case'ci':$rz='Cote d\'Ivoire';break;
case'ck':$rz='Cook Islands';break;
case'cl':$rz='Chile';break;
case'cm':$rz='Cameroon';break;
case'cn':$rz='China';break;
case'co':$rz='Colombia';break;
case'cr':$rz='Costa Rica';break;
case'cs':$rz='Czechoslovakia (former)';break;
case'cu':$rz='Cuba';break;
case'cv':$rz='Cape Verde';break;
case'cx':$rz='Christmas Island';break;
case'cy':$rz='Cyprus';break;
case'cz':$rz='Czech Republic';break;
case'de':$rz='Germany';break;
case'dj':$rz='Djibouti';break;
case'dk':$rz='Denmark';break;
case'dm':$rz='Dominica';break;
case'do':$rz='Dominican Republic';break;
case'dz':$rz='Algeria';break;
case'ec':$rz='Ecuador';break;
case'fx':$rz='France, Metropolitan';break;
case'it':$rz='Italy';break;
case'om':$rz='Oman';break;
case'pa':$rz='Panama';break;
case'pe':$rz='Peru';break;
case'pf':$rz='French Polynesia';break;
case'pg':$rz='Papua New Guinea';break;
case'ph':$rz='Philippines';break;
case'pk':$rz='Pakistan';break;
case'pl':$rz='Poland';break;
case'pm':$rz='St. Pierre and Miquelon';break;
case'pn':$rz='Pitcairn';break;
case'pr':$rz='Puerto Rico';break;
case'pt':$rz='Portugal';break;
case'ru':$rz='Russia';break;
case'rw':$rz='Rwanda';break;
case'sa':$rz='Saudi Arabia';break;
case'sb':$rz='Solomon Islands';break;
case'sc':$rz='Seychelles';break;
case'yu':$rz='Yugoslavia';break;
case'za':$rz='South Africa';break;
case'zm':$rz='Zambia';break;
case'zr':$rz='Zaire';break;
case'zw':$rz='Zimbabwe';break;
default:$rz='';break;
}
$img=$flags.$ty.".$extn";
if(is_file($img)){print "<img src=\"$img\" width=\"$wdth\" height=\"$hght\" alt=\"$rz\" /> ";}
print "$rz<br />\n";}

if($dtme==1){$t=tmm();$st3=substr(($t-$s),0,5);
print "<span style=\"font-size:10px;color:#888888\">$st3 sec</span>\n";}}
?></div></body></html>
__________________
......:::::: "La Calidad nunca es un accidente, es el resultado de un esfuerzo inteligente." ::::::......
  #2 (permalink)  
Antiguo 09/01/2005, 18:47
 
Fecha de Ingreso: mayo-2002
Ubicación: Perú
Mensajes: 72
Antigüedad: 15 años, 7 meses
Puntos: 0
En Otras Palabras Quisiera Quitar El Formulario, Pero Que Los Datos Como Son Ip, Pais, Y La Bandera Se Visualicen Automaticamente Sin Necesidad De Formulario
Muchas Gracias A Quin Pueda Ayudarme
__________________
......:::::: "La Calidad nunca es un accidente, es el resultado de un esfuerzo inteligente." ::::::......
  #3 (permalink)  
Antiguo 10/01/2005, 01:42
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

El formulario solo sirve para enviar el dato de la IP, asi que sustituyendolo por
Código PHP:
$ip=$REMOTE_ADDR
ya valdria.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 12/01/2005, 12:53
 
Fecha de Ingreso: mayo-2002
Ubicación: Perú
Mensajes: 72
Antigüedad: 15 años, 7 meses
Puntos: 0
gracias por tu respuesta josemi pero aun no logro hacer funcionar este script
__________________
......:::::: "La Calidad nunca es un accidente, es el resultado de un esfuerzo inteligente." ::::::......
  #5 (permalink)  
Antiguo 12/01/2005, 12:56
 
Fecha de Ingreso: mayo-2002
Ubicación: Perú
Mensajes: 72
Antigüedad: 15 años, 7 meses
Puntos: 0
con esta modificacion solo se muestra la ip del visitante....

pero lo que quiero que se visualice es ip, nombre del pais, y la bandera.
__________________
......:::::: "La Calidad nunca es un accidente, es el resultado de un esfuerzo inteligente." ::::::......
  #6 (permalink)  
Antiguo 14/01/2005, 17:40
 
Fecha de Ingreso: mayo-2002
Ubicación: Perú
Mensajes: 72
Antigüedad: 15 años, 7 meses
Puntos: 0
help please
__________________
......:::::: "La Calidad nunca es un accidente, es el resultado de un esfuerzo inteligente." ::::::......
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:20.