Problemas con IP en web DragonflyCMS šŸ„‡ Foro Portal DragonFlyCMS, CPGNuke šŸ„‡ p47 šŸ—ŗļø


  Foro de Portal DragonFlyCMS, CPGNuke: InformaciĆ³n y Soporte sobre DragonFlyCMS, antiguo CPGNuke, el CMS para construir Portales Web y que integra su propia versiĆ³n de foros PhpBB, galerias de fotos, y muchas cosas mas

SubForos: Dragonfly
PƔgina 1 de 1 - Tema con 4 Mensajes y 18805 Lecturas
ƚltimo Mensaje Publicado:
 Ver mĆ”s mensajes sobre Problemas con IP en web DragonflyCMS en el foro
Autor Mensaje
Aforo

Junior
Registrado:
18-02-2008
Mensajes: 257

Votos: 0 šŸ‘
Asunto: Re: Problemas con IP en web DragonflyCMS  
Bienvenido al foro.

Veo que tienes una versiĆ³n de PHP inferior a la 5.2 (PHP Version 5.0.4) en esa versiĆ³n los comandos inet_ntop y inet_pton de PHP estaban implementados, pero no funcionaban correctamente.

Supongo que no puedes actualizar tu servidor a una version de PHP posterior a la 5.2, asi que te voy a proponer darle un "cambiazo".

Vete a la linea 603 del Fichero "includes/cmsinit.inc" y encontrarƔs lo siguiente:

Quote::
# IP Handling
function encode_ip($ip) {
if (PHPVERS >= 43) { $backtrace = debug_backtrace(); }
$backtrace = empty($backtrace) ? array('file' => 'unknown', 'line' => 0) : $backtrace[0];
trigger_error("DEPRECATED call to <a href=\"http://dragonflycms.org/$function\">$function</a>() by {$backtrace['file']} on line {$backtrace['line']}.", E_USER_WARNING);
return inet_pton($ip);
}

function ip2long32($ip, $unsigned=false) {
$ip = ip2long($ip);
if ($ip > 2147483647) { $ip -= 4294967296; } // pow(2,32)
if ($unsigned && $ip < 0) { $ip += 4294967296; }
return $ip;
}

function decode_ip($ip) {
global $db;
$ip = $db->unescape_binary($ip);
$l = strlen($ip);
if ($l == 5 || $l == 17) { --$l; $ip = substr($ip,0,-1); }
if ($l == 4 || $l == 16) {
return inet_ntop($ip);
} else if ($l == {
$ip = explode('.', chunk_split($ip, 2, '.'));
return hexdec($ip[0]).'.'.hexdec($ip[1]).'.'.hexdec($ip[2]).'.'.hexdec($ip[3]);
} else if (preg_match('#^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})#', $ip, $match)) {
return $match[1];
}
return long2ip($ip);
}

Las funciones encode_ip($ip) y decode_ip($ip) son las encargadas de decodificar y codificar las IP.

Yo las he modificado de la siguiente manera:

Quote::
# IP Handling
function encode_ip($ip) {
if (PHPVERS >= 43) { $backtrace = debug_backtrace(); }
$backtrace = empty($backtrace) ? array('file' => 'unknown', 'line' => 0) : $backtrace[0];
trigger_error("DEPRECATED call to <a href=\"http://dragonflycms.org/$function\">$function</a>() by {$backtrace['file']} on line {$backtrace['line']}.", E_USER_WARNING);
return my_inet_pton($ip);
}

function ip2long32($ip, $unsigned=false) {
$ip = ip2long($ip);
if ($ip > 2147483647) { $ip -= 4294967296; } // pow(2,32)
if ($unsigned && $ip < 0) { $ip += 4294967296; }
return $ip;
}

function decode_ip($ip) {
$l = strlen($ip);
if ($l == 5 || $l == 17) { --$l; $ip = substr($ip,0,-1); }
if ($l == 4 || $l == 16) {
return my_inet_ntop($ip);
} else if ($l == {
$ip = explode('.', chunk_split($ip, 2, '.'));
return hexdec($ip[0]).'.'.hexdec($ip[1]).'.'.hexdec($ip[2]).'.'.hexdec($ip[3]);
} else if (preg_match('#^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})#', $ip, $match)) {
return $match[1];
}
return long2ip($ip);
}

function my_inet_ntop($ip) {
if (strlen($ip)==4) {
// ipv4
list(,$ip)=unpack('N',$ip);
$ip=long2ip($ip);
} elseif(strlen($ip)==16) {
// ipv6
$ip=bin2hex($ip);
$ip=substr(chunk_split($ip,4,':'),0,-1);
$ip=explode(':',$ip);
$res='';
foreach($ip as $seg) {
while($seg{0}=='0') $seg=substr($seg,1);
if ($seg!='') {
$res.=($res==''?'':':').$seg;
} else {
if (strpos($res,'::')===false) {
if (substr($res,-1)==':') continue;
$res.=':';
continue;
}
$res.=($res==''?'':':').'0';
}
}
$ip=$res;
}
return $ip;
}

### function inet_pton By djmaze@dragonflycms.org ###

function my_inet_pton($ip)
{
# ipv4
if (strpos($ip, '.') !== FALSE) {
$ip = pack('N',ip2long($ip));
}
# ipv6
elseif (strpos($ip, ':') !== FALSE) {
$ip = explode(':', $ip);
$res = str_pad('', (4*(8-count($ip))), '0000', STR_PAD_LEFT);
foreach ($ip as $seg) {
$res .= str_pad($seg, 4, '0', STR_PAD_LEFT);
}
$ip = pack('H'.strlen($res), $res);
}
return $ip;
}

He incluido dos funciones que hacen lo mismo, pero funcionan con PHP 5.0 e incluso con versiones anteriores de PHP 4.

Y me funciona...

Pruebalo y si eres tan amable me dices algo.
Ir arriba
oliver

Invitado



Votos: 0 šŸ‘
Asunto: Re: Problemas con IP en web DragonflyCMS  
Funciona.... digo que funciona. Era eso.

Muchas gracias
Ir arriba
Aforo

Junior
Registrado:
18-02-2008
Mensajes: 257

Votos: 0 šŸ‘
Asunto: Re: Problemas con IP en web DragonflyCMS  
Me alegro... paso el tema al foro de DragonFly
Ir arriba
SubForos: Dragonfly
 
Todas las horas son GMT + 1 Hora
PĆ”gina 1 de 1 - Tema con 4 Mensajes y 18805 Lecturas - ƚltima modificaciĆ³n: 06/03/2008




RSS - Ultimos Mensajes
Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
No Puedes adjuntar archivos en este foro
Tu puedes descargar archivos en este foro