Problemas con IP en web DragonflyCMS 🥇 Foro Portal DragonFlyCMS, CPGNuke 🏅

Foro de Portal DragonFlyCMS, CPGNuke  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 17413 Lecturas
Último Mensaje Publicado:
Autor Mensaje
oliver
Anonymous
Invitado



Votos: 0 👍
Enlaces Asunto: Problemas con IP en web DragonflyCMS   Responder citando
Tengo instalado CPGNuke y me he dado cuenta que las IP se están guardando mal.

Mi servidor tiene las siguientes caracteristicas:

CMS Version: 9.2.0.RC2
PHP Version 5.0.4
MySQL Version 4.1.20 (client: 4.1.20)
Server API Apache 2.0 Handler

¿Podeis echarme una mano?
Ir arriba Tengo instalado CPGNuke y me he dado cuenta que las IP se están guardando mal. Mi servidor tiene las siguientes caracteristicas: CMS Version: 9.2.0.RC2. PHP... Compartir:
Aforo
Aforo
Junior
Junior
Registrado:
18-02-2008
Mensajes: 257
Visitar sitio web del autor
Votos: 0 👍
Enlaces Asunto: Re: Problemas con IP en web DragonflyCMS   Responder citando
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 == Cool {
$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 == Cool {
$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.

_________________
http://www.aforo.es (La web de los foros divertidos)
Ir arriba 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... Aforo Compartir:
oliver
Anonymous
Invitado



Votos: 0 👍
Enlaces Asunto: Re: Problemas con IP en web DragonflyCMS   Responder citando
Funciona.... digo que funciona. Era eso.

Muchas gracias
Ir arriba Funciona.... digo que funciona. Era eso. Muchas gracias Compartir:
Aforo
Aforo
Junior
Junior
Registrado:
18-02-2008
Mensajes: 257
Visitar sitio web del autor
Votos: 0 👍
Enlaces Asunto: Re: Problemas con IP en web DragonflyCMS   Responder citando
Me alegro... paso el tema al foro de DragonFly

_________________
http://www.aforo.es (La web de los foros divertidos)
Ir arriba Me alegro... paso el tema al foro de DragonFly Aforo Compartir:
Mostrar mensajes de anteriores:   
SubForos: Dragonfly
 Responder al tema   Versión Imprimible
Todas las horas son GMT + 1 Hora
Página 1 de 1 - Tema con 4 Mensajes y 17413 Lecturas - Última modificación: 06/03/2008




RSS: Foro Portal DragonFlyCMS, CPGNuke RSS - Ultimos Mensajes
Cambiar a:  


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