Done!!!
Al final el codigo para mostrar la IP local, IP pública, la IP del proxy y el hostname de la IP pública funcionando en php5 quedo como sigue
Código PHP:
<?php
# codigo que intenta mostrar la IP local, IP pública, la IP del proxy y el hostname de la IP pública
if($_SERVER["HTTP_X_FORWARDED_FOR"])
{
if($pos=strpos($_SERVER["HTTP_X_FORWARDED_FOR"]," "))
{
echo "IP local: ".substr($_SERVER["HTTP_X_FORWARDED_FOR"],0,$pos)." - IP Pública: ".substr($_SERVER["HTTP_X_FORWARDED_FOR"],$pos+1);
$hostlocal=substr($_SERVER["HTTP_X_FORWARDED_FOR"],$pos+1);
}else{
echo "&ippublica=".$_SERVER["HTTP_X_FORWARDED_FOR"];
$hostlocal=$_SERVER["HTTP_X_FORWARDED_FOR"];
}
if($_SERVER["REMOTE_ADDR"])
echo " - Proxy: ".$_SERVER["REMOTE_ADDR"];
}else{
echo "&ippublica=".$_SERVER["REMOTE_ADDR"];
$hostlocal=$_SERVER["REMOTE_ADDR"];
if($hostlocal!=$_SERVER["REMOTE_ADDR"])
echo " - Hostname: ".$hostlocal;
}
$hostname = gethostbyaddr ($_SERVER['REMOTE_ADDR']);
if($hostlocal!=$hostname)
echo "&hostname=".$hostname;
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; }
elseif (isset($_SERVER['HTTP_VIA'])) { $ip = $_SERVER['HTTP_VIA']; }
elseif (isset($_SERVER['REMOTE_ADDR'])) { $ip = $_SERVER['REMOTE_ADDR']; }
else { $ip = "Desconocido"; }
echo "&ip=" . $ip . "&dns=".$_SERVER['HTTP_USER_AGENT'];
?>
el cambio estuvo en:
Código PHP:
$hostname=gethostbyaddr($hostlocal);
por
Código PHP:
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
Ademas y grave error de mi parte, fue no checar primero el php.ini, el cual tenia activado el register_globals. Se soluciono eliminando dicho archivo de la carpeta que contiene el php
Saludos
G.
pd. por cierto, cómo se hace para que el script que se muestra aparezca con número de línea y con sombras intercaladas, tal como lo ha hecho @galexisg en sus ejemplos.